-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen_sc_data.go
executable file
·19 lines (18 loc) · 497 KB
/
gen_sc_data.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package contractsapi
// This is auto-generated file. DO NOT EDIT.
var ChildValidatorSetArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildValidatorSet\",\n \"sourceName\": \"contracts/child/ChildValidatorSet.sol\",\n \"abi\": [\n {\n \"inputs\": [],\n \"name\": \"AmountZero\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Exists\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NoTokensDelegated\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NotFound\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"src\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"msg\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StakeRequirement\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddedToWhitelist\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"oldCommission\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newCommission\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"CommissionUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"delegator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Delegated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"delegator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bool\",\n \"name\": \"restake\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DelegatorRewardClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DelegatorRewardDistributed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"key\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"pbftRound\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DoubleSignerSlashed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"startBlock\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"endBlock\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"epochRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"NewEpoch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n }\n ],\n \"name\": \"NewValidator\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RemovedFromWhitelist\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Staked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"delegator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Undelegated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Unstaked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ValidatorRewardClaimed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ValidatorRewardDistributed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Withdrawal\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"WithdrawalRegistered\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"ACTIVE_VALIDATOR_SET_SIZE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOUBLE_SIGNING_SLASHING_PERCENT\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_COMMISSION\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAWAL_WAIT_PERIOD\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"whitelistAddreses\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"addToWhitelist\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bls\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"restake\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"claimDelegatorReward\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"claimValidatorReward\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"epochRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct Epoch\",\n \"name\": \"epoch\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epochId\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"signedBlocks\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct UptimeData[]\",\n \"name\": \"uptimeData\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalBlocks\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Uptime\",\n \"name\": \"uptime\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"commitEpoch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"curEpochId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pbftRound\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"epochRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct Epoch\",\n \"name\": \"epoch\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epochId\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"signedBlocks\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct UptimeData[]\",\n \"name\": \"uptimeData\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalBlocks\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct Uptime\",\n \"name\": \"uptime\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epochId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"eventRoot\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"currentValidatorSetHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"nextValidatorSetHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"blockHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"bitmap\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct IChildValidatorSetBase.DoubleSignerSlashingInput[]\",\n \"name\": \"inputs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"commitEpochWithDoubleSignerSlashing\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentEpochId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"restake\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"delegate\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"delegator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"delegationOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"doubleSignerSlashes\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"epochEndBlocks\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"epochReward\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"epochSize\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"epochs\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"epochRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getCurrentValidatorSet\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"delegator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getDelegatorReward\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getEpochByBlock\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"epochRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct Epoch\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getValidator\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"stake\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalStake\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"commission\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"withdrawableRewards\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"active\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getValidatorReward\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epochReward\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minStake\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minDelegation\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"epochSize\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IChildValidatorSetBase.InitStruct\",\n \"name\": \"init\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"addr\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"pubkey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"stake\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IChildValidatorSetBase.ValidatorInit[]\",\n \"name\": \"validators\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"newBls\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"governance\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minDelegation\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minStake\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"pendingWithdrawals\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"pubkey\",\n \"type\": \"uint256[4]\"\n }\n ],\n \"name\": \"register\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"whitelistAddreses\",\n \"type\": \"address[]\"\n }\n ],\n \"name\": \"removeFromWhitelist\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"newCommission\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setCommission\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"n\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"sortedValidators\",\n \"outputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stake\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalActiveStake\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"activeStake\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"totalDelegationOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalStake\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"totalStakeOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"validator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"undelegate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"unstake\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"whitelist\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"withdrawable\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50615f5b80620000216000396000f3fe6080604052600436106102ca5760003560e01c8063715018a61161017b578063a2562ddd116100d7578063e0563ab111610085578063e0563ab114610890578063e30c3978146108a6578063e3f56eaa146108c4578063ea0fee4f146108e4578063eacdc5ff146108f9578063f2fde38b1461090f578063f3f437031461092f57600080fd5b8063a2562ddd146107a4578063a2b915e2146107c4578063a77af229146107e4578063a90049d0146107f9578063ae97dde814610366578063c6b61e4c14610819578063ce513b6f1461087057600080fd5b8063947287cf11610134578063947287cf146106df57806395b0b027146106f557806397e5230d14610715578063982ef0a71461072c5780639a91e6d71461073f5780639b19251a14610754578063a15808791461078457600080fd5b8063715018a61461061057806378f619321461062557806379ba5097146106775780637f6497831461068c5780638b0e9f3f146106ac5780638da5cb5b146106c157600080fd5b80633a4b66f11161022a57806351351d53116101e357806351351d531461052b57806351cff8d91461054657806352a9674b14610566578063548db1741461059a5780635689762f146105ba578063572d356e146105da578063628da527146105f057600080fd5b80633a4b66f11461046b5780633b878c22146104735780633fd5000114610489578063410899c9146104a957806346df33d2146104c95780634d99dd161461050b57600080fd5b80632153f7fa116102875780632153f7fa1461039d578063284017f5146103bd57806328f73148146103e05780632e17de78146103f557806333378ada14610415578063355e6b4314610435578063375b3c0a1461045557600080fd5b80630209fdd0146102cf57806302985992146102fa5780631604e4161461031e5780631904bb2e146103345780631bce714d146103665780631f6590b81461037b575b600080fd5b3480156102db57600080fd5b506102e461094f565b6040516102f191906153b4565b60405180910390f35b34801561030657600080fd5b5061031060055481565b6040519081526020016102f1565b34801561032a57600080fd5b5061031060035481565b34801561034057600080fd5b5061035461034f366004615421565b610960565b6040516102f19695949392919061543e565b34801561037257600080fd5b50610310606481565b34801561038757600080fd5b5061039b610396366004615495565b610a33565b005b3480156103a957600080fd5b506102e46103b83660046154d7565b610b30565b3480156103c957600080fd5b506103d361202081565b6040516102f191906154f0565b3480156103ec57600080fd5b50610310610c3b565b34801561040157600080fd5b5061039b6104103660046154d7565b610d09565b34801561042157600080fd5b50610310610430366004615421565b610e2f565b34801561044157600080fd5b5061039b6104503660046154d7565b610e46565b34801561046157600080fd5b5061031060045481565b61039b610f11565b34801561047f57600080fd5b506103d361101081565b34801561049557600080fd5b506103106104a43660046154d7565b610ff0565b3480156104b557600080fd5b5061039b6104c4366004615516565b611011565b3480156104d557600080fd5b506104e96104e43660046154d7565b61121f565b60408051825181526020808401519082015291810151908201526060016102f1565b34801561051757600080fd5b5061039b61052636600461556d565b611297565b34801561053757600080fd5b506103d36002600160a01b0381565b34801561055257600080fd5b5061039b610561366004615421565b6113a2565b34801561057257600080fd5b506103107ffd10bf199d0185af9cce2005e6acc8d19924428058ac3374e16f18c97569b4ee81565b3480156105a657600080fd5b5061039b6105b53660046155dd565b6114d2565b3480156105c657600080fd5b506103106105d536600461561e565b61152b565b3480156105e657600080fd5b5061031060005481565b3480156105fc57600080fd5b5061031061060b36600461561e565b61154b565b34801561061c57600080fd5b5061039b611562565b34801561063157600080fd5b5061066761064036600461564c565b61013e60209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016102f1565b34801561068357600080fd5b5061039b611576565b34801561069857600080fd5b5061039b6106a73660046155dd565b6115ed565b3480156106b857600080fd5b50600954610310565b3480156106cd57600080fd5b506076546001600160a01b03166103d3565b3480156106eb57600080fd5b5061031061520881565b34801561070157600080fd5b506006546103d3906001600160a01b031681565b34801561072157600080fd5b50610310620249f081565b61039b61073a366004615693565b611641565b34801561074b57600080fd5b5061039b61169d565b34801561076057600080fd5b5061066761076f366004615421565b60106020526000908152604090205460ff1681565b34801561079057600080fd5b5061039b61079f3660046156c1565b611702565b3480156107b057600080fd5b5061039b6107bf366004615770565b6119d0565b3480156107d057600080fd5b506103106107df366004615421565b611d5e565b3480156107f057600080fd5b50610310600a81565b34801561080557600080fd5b5061039b610814366004615693565b611d72565b34801561082557600080fd5b506108556108343660046154d7565b600f6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102f1565b34801561087c57600080fd5b5061031061088b366004615421565b611e13565b34801561089c57600080fd5b506103d361203081565b3480156108b257600080fd5b5060a8546001600160a01b03166103d3565b3480156108d057600080fd5b506103106108df366004615421565b611e41565b3480156108f057600080fd5b50610310600181565b34801561090557600080fd5b5061031060015481565b34801561091b57600080fd5b5061039b61092a366004615421565b611e4e565b34801561093b57600080fd5b5061031061094a366004615421565b611ebf565b606061095b6064610b30565b905090565b610968615329565b6000808080808061097a600789611ee6565b604080516101208101909152908160a081018260048282826020028201915b8154815260200190600101908083116109995750505091835250506004820154602080830191909152600583015460408301526006830154606083015260079283015460ff1615156080909201919091528251908301519099509750909150610a029089611f04565b546020820151610a12919061581f565b94508060400151935080606001519250806080015191505091939550919395565b3360009081526010602052604090205460ff16610a845760405163973d02cb60e01b815260206004820152600960248201526815d2125511531254d560ba1b60448201526064015b60405180910390fd5b610a8f338383611f22565b604080516101208101909152610ae29033908060a0810185600482826080808284376000920182905250928452505060208201819052604082018190526060820152600160809091015260079190611fd7565b610aeb33612380565b336001600160a01b03167fcab5c47e498c5b85fd42d656842253cfe070f7648c3a198275347b47dec5d27b82604051610b249190615832565b60405180910390a25050565b60606000600760010154831115610b4957600854610b4b565b825b90506000816001600160401b03811115610b6757610b67615841565b604051908082528060200260200182016040528015610b90578160200160208202803683370190505b50905081600003610ba2579392505050565b6000610bae60076123c9565b90508082600081518110610bc457610bc4615857565b6001600160a01b039092166020928302919091019091015260015b83811015610c3157610bf260078361242a565b915081838281518110610c0757610c07615857565b6001600160a01b039092166020928302919091019091015280610c298161586d565b915050610bdf565b5090949350505050565b60008060076001015460641115610c5457600854610c57565b60645b905080600003610c6957600091505090565b6000610c7560076123c9565b9050610c82600782611f04565b54610c8e600783611ee6565b60040154610c9c919061581f565b610ca6908461581f565b925060015b82811015610d0357610cbe60078361242a565b9150610ccb600783611f04565b54610cd7600784611ee6565b60040154610ce5919061581f565b610cef908561581f565b935080610cfb8161586d565b915050610cab565b50505090565b6000610d16600c3361252c565b336000908152600a6020526040902060070154610d339190615886565b90506000610d4083612588565b905081811315610d63576040516396906e6360e01b8152600401610a7b906158c0565b6000610d6f8284615905565b905060045481128015610d8157508015155b15610d9f576040516396906e6360e01b8152600401610a7b90615945565b610da761169d565b610dc233610db784600019615968565b600c9190600061259b565b80600003610dea576000610dd7600733611ee6565b600701805460ff19169115159190911790555b610df433856126a2565b60405184815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250505050565b6000610e3c600783611ee6565b6006015492915050565b610e51600733611ee6565b6007015460ff16610e755760405163973d02cb60e01b8152600401610a7b90615998565b6064811115610ebb5760405162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa1a7a6a6a4a9a9a4a7a760711b6044820152606401610a7b565b6000610ec8600733611ee6565b6005810154604080519182526020820185905291925033917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a260050155565b610f1c600733611ee6565b6007015460ff16610f405760405163973d02cb60e01b8152600401610a7b90615998565b6000610f4d600c3361252c565b336000908152600a6020526040902060070154610f6a9190615886565b905060045481610f7934612588565b610f839190615886565b1215610fa2576040516396906e6360e01b8152600401610a7b906159bb565b610faa61169d565b610fb8600c3334600061259b565b60405134815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250565b6002818154811061100057600080fd5b600091825260209091200154905081565b336002600160a01b03146110385760405163973d02cb60e01b8152600401610a7b906159e9565b60018054600091826110498361586d565b91905055905080841461106e5760405162461bcd60e51b8152600401610a7b90615a0d565b82356020840135116110925760405162461bcd60e51b8152600401610a7b90615a3a565b6000546110a484356020860135615a67565b6110af90600161581f565b6110b99190615a90565b156111145760405162461bcd60e51b815260206004820152602560248201527f45504f43485f4d5553545f42455f444956495349424c455f42595f45504f43486044820152645f53495a4560d81b6064820152608401610a7b565b8235600f6000611125600185615a67565b8152602001908152602001600020600101546001611143919061581f565b146111605760405162461bcd60e51b8152600401610a7b90615aa4565b6000818152600f602090815260408083209186013560018084018290558735845591870135600280850191909155805492830181559093527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01919091556111c8848461270e565b6111d06128df565b83602001358460000135867f0ce8712c4dee4bd5a691f0bc1c39594671591e77395f8ebf6a3fb5f63fbea66a876040013560405161121091815260200190565b60405180910390a45050505050565b6040805160608101825260008082526020820181905291810182905290611247600284612c12565b9050600f600061125883600161581f565b81526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050915050919050565b60006112a4600784611f04565b905060006112b28233612cc7565b9050808311156112d5576040516396906e6360e01b8152600401610a7b90615aee565b6112e0823385612d13565b60006112ec8483615a67565b9050600554811080156112fe57508015155b1561131c576040516396906e6360e01b8152600401610a7b90615b25565b611327856000611d72565b600061133285612588565b905061135086600061134684600019615968565b600c92919061259b565b61135a33866126a2565b6040518581526001600160a01b0387169033907f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c9060200160405180910390a3505050505050565b6113aa612de8565b6001600160a01b0381166113c0576113c0615b48565b336000908152600e6020526040812060015490919081906113e2908490612e41565b80855560405182815291935091506001600160a01b0385169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a36000846001600160a01b03168360405160006040518083038185875af1925050503d8060008114611477576040519150601f19603f3d011682016040523d82523d6000602084013e61147c565b606091505b50509050806114c15760405162461bcd60e51b815260206004820152601160248201527015d2551211149055d05317d19052531151607a1b6044820152606401610a7b565b505050506114cf600160da55565b50565b6114da612eba565b60005b81811015611526576115148383838181106114fa576114fa615857565b905060200201602081019061150f9190615421565b612380565b8061151e8161586d565b9150506114dd565b505050565b60006115428261153c600786611f04565b90612f14565b90505b92915050565b60006115428261155c600786611f04565b90612cc7565b61156a612eba565b6115746000612f43565b565b60a85433906001600160a01b031681146115e45760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a7b565b6114cf81612f43565b6115f5612eba565b60005b818110156115265761162f83838381811061161557611615615857565b905060200201602081019061162a9190615421565b612f5c565b806116398161586d565b9150506115f8565b600061164e600784611f04565b6005549091503461165f8333612cc7565b611669919061581f565b1015611688576040516396906e6360e01b8152600401610a7b90615b5e565b6116928383611d72565b611526338434612fa8565b60006116aa600733611ee6565b600681015490915060008190036116bf575050565b600060068301556116d033826126a2565b60405181815233907f378c825c0ac073cbae19612eb73cde31c0972f0c8ba2dedb659840f32550df2b90602001610b24565b604354610100900460ff16158080156117225750604354600160ff909116105b8061173c5750303b15801561173c575060435460ff166001145b61179f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a7b565b6043805460ff1916600117905580156117c2576043805461ff0019166101001790555b336002600160a01b03146117e95760405163973d02cb60e01b8152600401610a7b906159e9565b6001805560608601356000556117fe82612f43565b611806613073565b853560035560208601356004556040860135600555600680546001600160a01b0319166001600160a01b03851617905560005b848110156119815760006040518060a0016040528088888581811061186057611860615857565b905061010002016020016004806020026040519081016040528092919082600460200280828437600092019190915250505081526020018888858181106118a9576118a9615857565b9050610100020160e00135815260200160008152602001600081526020016001151581525090506119058787848181106118e5576118e5615857565b6118fc926020610100909202019081019150615421565b60079083611fd7565b61196e87878481811061191a5761191a615857565b611931926020610100909202019081019150615421565b88888581811061194357611943615857565b9050610100020160a00189898681811061195f5761195f615857565b90506101000201602001611f22565b50806119798161586d565b915050611839565b5080156119c8576043805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8060028110156119f25760405162461bcd60e51b8152600401610a7b90615b8f565b6119fc83836130a2565b611a3f5760405162461bcd60e51b8152602060048201526014602482015273424c4f434b484153485f4e4f545f554e4951554560601b6044820152606401610a7b565b60005b81811015611bd957611bd14689868685818110611a6157611a61615857565b9050602002810190611a739190615bb7565b608001358a888887818110611a8a57611a8a615857565b9050602002810190611a9c9190615bb7565b35898988818110611aaf57611aaf615857565b9050602002810190611ac19190615bb7565b602001358a8a89818110611ad757611ad7615857565b9050602002810190611ae99190615bb7565b604001358b8b8a818110611aff57611aff615857565b9050602002810190611b119190615bb7565b604080516020810199909952880196909652606087810195909552608087019390935260a086019190915260c085015260e084015201356101008201526101200160405160208183030381529060405280519060200120858584818110611b7a57611b7a615857565b9050602002810190611b8c9190615bb7565b611b9a9060c0810190615bd7565b878786818110611bac57611bac615857565b9050602002810190611bbe9190615bb7565b611bcc9060a0810190615bd7565b613158565b600101611a42565b506000606460076001015410611bf0576064611bf4565b6008545b90506000611c0182610b30565b90506000826001600160401b03811115611c1d57611c1d615841565b604051908082528060200260200182016040528015611c46578160200160208202803683370190505b50905060005b83811015611d44576000805b86811015611d3a57611c9b898983818110611c7557611c75615857565b9050602002810190611c879190615bb7565b611c959060a0810190615bd7565b8561325c565b15611cae5781611caa8161586d565b9250505b6001821115611d2857611cff858481518110611ccc57611ccc615857565b60200260200101518a8a84818110611ce657611ce6615857565b9050602002810190611cf89190615bb7565b358e6132c6565b6001848481518110611d1357611d13615857565b91151560209283029190910190910152611d3a565b80611d328161586d565b915050611c58565b5050600101611c4c565b50611d518b89898461349d565b5050505050505050505050565b6000611d6b600783611f04565b5492915050565b6000611d7f600784611f04565b90506000611d8d823361383a565b905080600003611d9d5750505050565b8215611db357611dae338583612fa8565b611dbd565b611dbd33826126a2565b821515846001600160a01b0316336001600160a01b03167f6b2cd13395c5d2d1f95934a6a8f884d2cb71e846eb99d6759f7e6a39c060b2d084604051611e0591815260200190565b60405180910390a450505050565b6001546001600160a01b0382166000908152600e602052604081209091611e3a9190612e41565b5092915050565b6000611545600783613881565b611e56612eba565b60a880546001600160a01b0383166001600160a01b03199091168117909155611e876076546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001546001600160a01b0382166000908152600e60205260408120909161154591906138b6565b6001600160a01b031660009081526003918201602052604090200190565b6001600160a01b031660009081526004919091016020526040902090565b60065460009081906001600160a01b031663ebbdac918585611f438961394c565b6040518463ffffffff1660e01b8152600401611f6193929190615c1d565b6040805180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190615c61565b91509150801580611fb0575081155b15611fd05784604051633615713d60e21b8152600401610a7b91906154f0565b5050505050565b6001600160a01b038216611fed57611fed615b48565b611ff78383613a1c565b15612017578160405163cda981d560e01b8152600401610a7b91906154f0565b6001600160a01b0382166000908152600380850160205260409091208251839291909101906120499082906004615347565b50602082810151600483015560408301516005830155606083015160068301556080909201516007909101805460ff191691151591909117905581015160000361209257505050565b82546000906001600160a01b0316816120ab8686613881565b90505b6001600160a01b03821615612121578192506120ca8683613881565b8110156120f9576001600160a01b039182166000908152600387016020526040902060010154909116906120ae565b6001600160a01b039182166000908152600387016020526040902060020154909116906120ae565b6040518060a00160405280846001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160011515815260200185815250866003016000876001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160146101000a81548160ff021916908315150217905550608082015181600301600082015181600001906004612256929190615347565b506020820151600482015560408201516005820155606082015160068201556080909101516007909101805460ff191691151591909117905550506001600160a01b0383166122bd5785546001600160a01b0319166001600160a01b03861617865561233a565b6122c78684613881565b811015612306576001600160a01b038381166000908152600388016020526040902060010180546001600160a01b03191691871691909117905561233a565b6001600160a01b038381166000908152600388016020526040902060020180546001600160a01b0319169187169190911790555b6123448686613a6d565b6001860180549060006123568361586d565b91905055508360200151866002016000828254612373919061581f565b9091555050505050505050565b6001600160a01b038116600081815260106020526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a250565b80546001600160a01b03168015612425575b6001600160a01b0381811660009081526003840160205260409020600201541615612425576001600160a01b039081166000908152600383016020526040902060020154166123db565b919050565b60006001600160a01b038216612453576040516365e52d5160e11b815260040160405180910390fd5b6001600160a01b03828116600090815260038501602052604090206001015416156124aa576001600160a01b0380831660009081526003850160205260409020600101546124a391859116613dba565b9050611545565b506001600160a01b038082166000908152600384016020526040902054165b6001600160a01b0381161580159061250257506001600160a01b0380821660009081526003850160205260409020600101548382169116145b15611545576001600160a01b038082166000908152600385016020526040902054919250166124c9565b6001600160a01b038116600090815260018301602052604081205461255357506000611545565b8261255e8184613e10565b8154811061256e5761256e615857565b906000526020600020906003020160010154905092915050565b6000818181121561154557611545615b48565b6001600160a01b0383166000908152600185016020526040812054908190036126465784546125cb90600161581f565b6001600160a01b03858116600081815260018981016020908152604080842087905580516060810182529485528482018a81529085018981528c548085018e558d8652929094209451600390920290940180546001600160a01b03191691909516178455915191830191909155516002909101559050611fd0565b6000856126538187613e10565b8154811061266357612663615857565b90600052602060002090600302019050838160010160008282546126879190615886565b92505081905550828160020160008282546123739190615886565b6126d381600180546126b4919061581f565b6001600160a01b0385166000908152600e602052604090209190613e46565b816001600160a01b03167f655c1cd0236fb6dc4916f34c8ff10e3b18fcaea5b344dfc16c36fbb1bdfc5df282604051610b2491815260200190565b6001805461271c9190615a67565b8135146127615760405162461bcd60e51b8152602060048201526013602482015272115413d0d217d393d517d0d3d3535255151151606a1b6044820152606401610a7b565b60006127706020830183615c90565b9150506064811180159061278657506008548111155b6127a25760405162461bcd60e51b8152600401610a7b90615b8f565b60006127ac610c3b565b90506000805460646127be9190615cd9565b6127cd86356020880135615a67565b6003546127da9190615cd9565b6127e5906064615cd9565b6127ef9190615cf0565b905060005b838110156119c857600061280b6020870187615c90565b8381811061281b5761281b615857565b9050604002018036038101906128319190615d3a565b805190915060009061284590600790611ee6565b90506000612857604089013587615cd9565b6020840151845161286a90600790611f04565b54600485015461287a919061581f565b6128849088615cd9565b61288e9190615cd9565b6128989190615cf0565b90506000806128ab856000015184613f64565b915091506128bd85600001518361409d565b84516128c99082614108565b5050505050806128d89061586d565b90506127f4565b600c60005b8154811015612aae57600082828154811061290157612901615857565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168084526001820154948401949094526002015490820152915061294d600782613a1c565b15612a9b57600061295f600783611ee6565b905061297d836020015182600401546129789190615886565b614152565b600482015560208301516009546129979161297891615886565b60095560006129a7600784613881565b905060006129b6600785614168565b90506001600160a01b038116158015906129d95750816129d7600783613881565b105b806129f85750816129f66129ee60078761242a565b600790613881565b115b15612a7e57612a08600785614263565b604080516101208101909152612a7e908590858160a081018260048282826020028201915b815481526020019060010190808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b6001600160a01b0384166000908152600d60205260408120555050505b505080612aa79061586d565b90506128e4565b5060005b8154811015612c09576000828281548110612acf57612acf615857565b600091825260209182902060408051606081018252600390930290910180546001600160a01b031680845260018201549484019490945260020154908201529150612b1b600782613a1c565b158015612b3f57506001600160a01b0381166000908152600d602052604090205415155b15612bf6576000612b51600783611ee6565b9050612b608360200151614152565b60048281019190915560408051610120810191829052835460a08201908152612bdb9386938692849290918491906001830160c08601808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b6001600160a01b0382166000908152600d6020526040812055505b505080612c029061586d565b9050612ab2565b506000600c5550565b81546000908103612c2557506000611545565b82546000905b80821015612c72576000612c3f8383614644565b60008781526020902090915085908201541115612c5e57809150612c6c565b612c6981600161581f565b92505b50612c2b565b600082118015612c9e575083612c9b86612c8d600186615a67565b600091825260209091200190565b54145b15612cb757612cae600183615a67565b92505050611545565b509050611545565b505092915050565b60008260010154600003612cdd57506000611545565b600183015483546001600160a01b0384166000908152600686016020526040902054612d099190615cd9565b6115429190615cf0565b8254600184015460009190612d289084615cd9565b612d329190615cf0565b6001600160a01b0384166000908152600686016020526040812080549293508392909190612d61908490615a67565b9250508190555080846001016000828254612d7c9190615a67565b90915550506002840154612d9a90612d95908390615cd9565b612588565b6001600160a01b038416600090815260048601602052604081208054909190612dc4908490615886565b9091555050835482908590600090612ddd908490615a67565b909155505050505050565b600260da5403612e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a7b565b600260da55565b81546000905b8360010154811015612eac57600081815260028501602090815260409182902082518084019093528054835260010154908201819052841015612e8a5750612eac565b8051612e96908461581f565b9250508080612ea49061586d565b915050612e47565b9250929050565b600160da55565b6076546001600160a01b031633146115745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7b565b6001600160a01b0381166000908152600583016020526040812054612f39848461465f565b6115429190615a67565b60a880546001600160a01b03191690556114cf816146d9565b6001600160a01b038116600081815260106020526040808220805460ff19166001179055517fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab039190a250565b612fb3600783611ee6565b6007015460ff16612ffb5760405163973d02cb60e01b815260206004820152601160248201527024a72b20a624a22fab20a624a220aa27a960791b6044820152606401610a7b565b61300a82600061134684612588565b613021838261301a600786611f04565b919061472b565b816001600160a01b0316836001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8360405161306691815260200190565b60405180910390a3505050565b604354610100900460ff1661309a5760405162461bcd60e51b8152600401610a7b90615d74565b61157461480b565b600081815b8181101561314d5760006130bc82600161581f565b90505b8281101561313a578585828181106130d9576130d9615857565b90506020028101906130eb9190615bb7565b6080013586868481811061310157613101615857565b90506020028101906131139190615bb7565b60800135036131285760009350505050611545565b806131328161586d565b9150506130bf565b50806131458161586d565b9150506130a7565b506001949350505050565b6000806120306001600160a01b0316620249f08888888888604051602001613184959493929190615de8565b60408051601f198184030181529082905261319e91615e45565b6000604051808303818686fa925050503d80600081146131da576040519150601f19603f3d011682016040523d82523d6000602084013e6131df565b606091505b50915091506000818060200190518101906131fa9190615e57565b90508280156132065750805b6132525760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c45440000006044820152606401610a7b565b5050505050505050565b60008061326a600884615cf0565b90506000613279600885615a90565b905084821061328d576000925050506132bf565b6000600160ff83161b8787858181106132a8576132a8615857565b9050013560f81c60f81b60f81c60ff161611925050505b9392505050565b600082815261013e6020908152604080832084845282528083206001600160a01b038716845290915290205460ff16156132ff57505050565b600082815261013e6020908152604080832084845282528083206001600160a01b03871684529091528120805460ff19166001179055613340600785611ee6565b6001600160a01b0385166000908152600b602052604090205490915060649061336b90600a90615cd9565b6133759190615cf0565b6001600160a01b0385166000908152600b60205260408120805490919061339d908490615a67565b9250508190555060006064600a83600401546133b99190615cd9565b6133c39190615cf0565b90506133d0600786614263565b808260040160008282546133e49190615a67565b909155505060408051610120810190915261345e908690848160a08101826004828282602002820191815481526020019060010190808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b8284866001600160a01b03167f2d7432ca38933aadba9547f33f0568008e240e52e66f1a16c6182e742bce3b1360405160405180910390a45050505050565b60018054600091826134ae8361586d565b9190505590508085146134d35760405162461bcd60e51b8152600401610a7b90615a0d565b83356020850135116134f75760405162461bcd60e51b8152600401610a7b90615a3a565b8335600f6000613508600185615a67565b8152602001908152602001600020600101546001613526919061581f565b146135435760405162461bcd60e51b8152600401610a7b90615aa4565b6000818152600f6020908152604080832087830135600180830182905589358355928901356002808401919091558054938401815585527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9092019190915591906135b090860186615c90565b915050606481118015906135c657506008548111155b6135e25760405162461bcd60e51b8152600401610a7b90615b8f565b60006135ec610c3b565b90506000805460646135fe9190615cd9565b61360d893560208b0135615a67565b60035461361a9190615cd9565b613625906064615cd9565b61362f9190615cf0565b905060005b838110156137de5786818151811061364e5761364e615857565b60200260200101516137ce57600061366960208a018a615c90565b8381811061367957613679615857565b90506040020180360381019061368f9190615d3a565b80519091506000906136a390600790611ee6565b905060006136b560408c013587615cd9565b602084015184516136c890600790611f04565b5460048501546136d8919061581f565b6136e29088615cd9565b6136ec9190615cd9565b6136f69190615cf0565b9050600080613709856000015184613f64565b9150915081846006016000828254613721919061581f565b909155505084516040518481526001600160a01b03909116907f65da9d8bbc1fc112cfb499f15f17b3bfe4c5070dfca6a3e30f7f5f7f17bd86849060200160405180910390a2845161378190829061377b90600790611f04565b90614832565b84600001516001600160a01b03167f520e62b73478b262ede881cd483440f8e7b8a4651b0ff9154aeb3510089ddbac826040516137c091815260200190565b60405180910390a250505050505b6137d78161586d565b9050613634565b506137e76128df565b876020013588600001358a7f0ce8712c4dee4bd5a691f0bc1c39594671591e77395f8ebf6a3fb5f63fbea66a8b6040013560405161382791815260200190565b60405180910390a4505050505050505050565b60006138468383612f14565b6001600160a01b038316600090815260058501602052604081208054929350839290919061387590849061581f565b90915550909392505050565b6001600160a01b038116600090815260048301602090815260408083205460038601909252822060070154611542919061581f565b60018201546000908082036138cf576000915050611545565b60006138dc600183615a67565b90505b84548110612cbf57600081815260028601602090815260409182902082518084019093528054835260010154908201819052851061391d5750612cbf565b8051613929908561581f565b9350816000036139395750612cbf565b508061394481615e74565b9150506138df565b613954615381565b6006546040516bffffffffffffffffffffffff19606085901b1660208201524660348201526001600160a01b039091169063a850a909907ffd10bf199d0185af9cce2005e6acc8d19924428058ac3374e16f18c97569b4ee906054016040516020818303038152906040526040518363ffffffff1660e01b81526004016139dc929190615e8b565b6040805180830381865afa1580156139f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115459190615ec5565b60006001600160a01b03821615801590611542575082546001600160a01b03838116911614806115425750506001600160a01b03908116600090815260039290920160205260409091205416151590565b60005b82546001600160a01b03838116911614801590613aba57506001600160a01b0382811660009081526003850160205260408082205490921681522060020154600160a01b900460ff165b15613d8c576001600160a01b03808316600090815260038501602052604080822054831680835281832054841683529120600101549091168103613c42576001600160a01b0381811660009081526003860160205260408082205483168252808220600290810154909316808352912090910154909250600160a01b900460ff1615613ba3576001600160a01b0380821660008181526003870160205260408082206002808201805460ff60a01b1990811690915588871685528385208201805482169055825487168552928420018054909216600160a01b1790915591905254169250613d86565b6001600160a01b038082166000908152600386016020526040902060020154811690841603613bd957809250613bd984846148af565b506001600160a01b0380831660009081526003850160205260408082205483168083528183206002808201805460ff60a01b19908116909155825487168652938520018054909316600160a01b1790925591829052549091613c3d91869116614a62565b613d86565b6001600160a01b03818116600090815260038601602052604080822054831682528082206001015490921680825291902060020154909250600160a01b900460ff1615613cec576001600160a01b0380821660008181526003870160205260408082206002808201805460ff60a01b1990811690915588871685528385208201805482169055825487168552928420018054909216600160a01b1790915591905254169250613d86565b6001600160a01b038082166000908152600386016020526040902060010154811690841603613d2257809250613d228484614a62565b506001600160a01b0380831660009081526003850160205260408082205483168083528183206002808201805460ff60a01b19908116909155825487168652938520018054909316600160a01b1790925591829052549091613d86918691166148af565b50613a70565b505080546001600160a01b03166000908152600390910160205260409020600201805460ff60a01b19169055565b60005b6001600160a01b0382811660009081526003850160205260409020600201541615613e0a576001600160a01b03918216600090815260038401602052604090206002015490911690613dbd565b50919050565b6001600160a01b038116600090815260018301602052604081205490819003613e3b57613e3b615b48565b611542600182615a67565b81600003613e5657613e56615b48565b82546001840154818103613ead576040805180820182528581526020808201868152600085815260028a019092529281209151825591516001918201558601805491613ea18361586d565b91905055505050505050565b60006002860181613ebf600185615a67565b815260200190815260200160002060010154905080841015613ee357613ee3615b48565b83811015613f32576040805180820182528681526020808201878152600086815260028b019092529281209151825591516001918201558701805491613f288361586d565b91905055506119c8565b84600287016000613f44600186615a67565b81526020019081526020016000206000016000828254612373919061581f565b60008080613f73600786611ee6565b604080516101208101909152908160a081018260048282826020028201915b815481526020019060010190808311613f925750505091835250506004820154602080830191909152600583015460408301526006830154606083015260079283015460ff161515608090920191909152820151919250600090613ff69088611f04565b54905060008290036140115760008094509450505050612eac565b806000036140285785600094509450505050612eac565b6000614034828461581f565b61403e8489615cd9565b6140489190615cf0565b905060006140568289615a67565b90506000606482876040015161406c9190615cd9565b6140769190615cf0565b9050614082818461581f565b61408c8284615a67565b975097505050505050509250929050565b60006140aa600784611ee6565b9050818160060160008282546140c0919061581f565b90915550506040518281526001600160a01b038416907f65da9d8bbc1fc112cfb499f15f17b3bfe4c5070dfca6a3e30f7f5f7f17bd86849060200160405180910390a2505050565b6141178161377b600785611f04565b816001600160a01b03167f520e62b73478b262ede881cd483440f8e7b8a4651b0ff9154aeb3510089ddbac82604051610b2491815260200190565b60008082121561416457614164615b48565b5090565b60006001600160a01b038216614191576040516365e52d5160e11b815260040160405180910390fd5b6001600160a01b03828116600090815260038501602052604090206002015416156141e1576001600160a01b0380831660009081526003850160205260409020600201546124a391859116614c15565b506001600160a01b038082166000908152600384016020526040902054165b6001600160a01b0381161580159061423957506001600160a01b0380821660009081526003850160205260409020600201548382169116145b15611545576001600160a01b03808216600090815260038501602052604090205491925016614200565b6001600160a01b03811661427957614279615b48565b6142838282613a1c565b6142a25780604051634b2990ed60e11b8152600401610a7b91906154f0565b6001600160a01b038181166000908152600384016020526040812060010154909182911615806142ef57506001600160a01b03838116600090815260038601602052604090206002015416155b156142fb575081614367565b506001600160a01b038083166000908152600385016020526040902060020154165b6001600160a01b0381811660009081526003860160205260409020600101541615614367576001600160a01b0390811660009081526003850160205260409020600101541661431d565b6001600160a01b03818116600090815260038601602052604090206001015416156143b3576001600160a01b0380821660009081526003860160205260409020600101541691506143d6565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b038082166000908152600386016020526040808220548584168352912080546001600160a01b0319169190921690811790915580156144af576001600160a01b038082166000908152600387016020526040902060010154811690831603614477576001600160a01b038181166000908152600387016020526040902060010180546001600160a01b0319169185169190911790556144c9565b6001600160a01b038181166000908152600387016020526040902060020180546001600160a01b0319169185169190911790556144c9565b84546001600160a01b0319166001600160a01b0384161785555b6001600160a01b038281166000818152600388016020526040902060020154600160a01b900460ff1615918616146145a457614506868487614c65565b6001600160a01b03858116600090815260038801602052604080822060018082015488861680865284862092830180549288166001600160a01b03199384168117909155865284862080548316821790556002938401805494909301805494909716938216841787559285529284208054909316821790925590549152815460ff60a01b1916600160a01b9182900460ff1615159091021790559193915b80156145b4576145b48685614d5d565b6001600160a01b0383166000908152600387016020526040812080546001600160a01b0319908116825560018083018054909216909155600290910180546001600160a81b0319169055870180549161460c83615e74565b90915550506001600160a01b038316600090815260038701602052604081206007015460028801805491929091612373908490615a67565b60006146536002848418615cf0565b6115429084841661581f565b6001600160a01b03811660009081526006830160205260408120546002840154829161468f91612d959190615cd9565b6001600160a01b0384166000908152600486016020526040812054919250906146bc906129789084615886565b90506146d0670de0b6b3a764000082615cf0565b95945050505050565b607680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600083600101546000148061473f57508354155b61476357835460018501546147549084615cd9565b61475e9190615cf0565b614765565b815b6001600160a01b038416600090815260068601602052604081208054929350839290919061479490849061581f565b92505081905550808460010160008282546147af919061581f565b90915550508354829085906000906147c890849061581f565b909155505060028401546147e190612d95908390615cd9565b6001600160a01b038416600090815260048601602052604081208054909190612ddd908490615905565b604354610100900460ff16612eb35760405162461bcd60e51b8152600401610a7b90615d74565b8060000361483e575050565b8160010154600003614872576003820154604051636130835f60e01b8152610a7b916001600160a01b0316906004016154f0565b6001820154614889670de0b6b3a764000083615cd9565b6148939190615cf0565b8260020160008282546148a6919061581f565b90915550505050565b6001600160a01b038082166000818152600385016020526040808220600281018054915482871680865293852060010154959094526001600160a01b031990911693851693841790559216908015614932576001600160a01b038181166000908152600387016020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038381166000908152600387016020526040902080546001600160a01b03191691841691821790556149835784546001600160a01b0319166001600160a01b038416178555614a18565b6001600160a01b0380831660009081526003870160205260409020600101548116908516036149e4576001600160a01b038281166000908152600387016020526040902060010180546001600160a01b031916918516919091179055614a18565b6001600160a01b038281166000908152600387016020526040902060020180546001600160a01b0319169185169190911790555b50506001600160a01b039081166000818152600390940160205260408085206001018054939094166001600160a01b03199384168117909455928452919092208054909216179055565b6001600160a01b038082166000818152600385016020526040808220600181018054915482871680865293852060020154959094526001600160a01b031990911693851693841790559216908015614ae5576001600160a01b038181166000908152600387016020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038381166000908152600387016020526040902080546001600160a01b0319169184169182179055614b365784546001600160a01b0319166001600160a01b038416178555614bcb565b6001600160a01b038083166000908152600387016020526040902060020154811690851603614b97576001600160a01b038281166000908152600387016020526040902060020180546001600160a01b031916918516919091179055614bcb565b6001600160a01b038281166000908152600387016020526040902060010180546001600160a01b0319169185169190911790555b50506001600160a01b039081166000818152600390940160205260408085206002018054939094166001600160a01b03199384168117909455928452919092208054909216179055565b60005b6001600160a01b0382811660009081526003850160205260409020600101541615613e0a576001600160a01b03918216600090815260038401602052604090206001015490911690614c18565b6001600160a01b038082166000908152600385016020526040808220548584168352912080546001600160a01b0319169190921690811790915580614cc25783546001600160a01b0319166001600160a01b038416178455614d57565b6001600160a01b038082166000908152600386016020526040902060010154811690831603614d23576001600160a01b038181166000908152600386016020526040902060010180546001600160a01b031916918516919091179055614d57565b6001600160a01b038181166000908152600386016020526040902060020180546001600160a01b0319169185169190911790555b50505050565b60005b82546001600160a01b03838116911614801590614da257506001600160a01b0382166000908152600384016020526040902060020154600160a01b900460ff16155b156152fe576001600160a01b038083166000818152600386016020526040808220548416808352912060010154909216900361506c576001600160a01b038181166000908152600386016020526040808220600290810154909316808352912090910154909250600160a01b900460ff1615614e89576001600160a01b0380831660009081526003860160205260408082206002908101805460ff60a01b1990811690915593851683529120018054909116600160a01b179055614e6684826148af565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16158015614efc57506001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff16155b15614f37576001600160a01b03821660009081526003850160205260409020600201805460ff60a01b1916600160a01b1790559150816152f8565b6001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff16614fec576001600160a01b0380831660008181526003870160205260408082206001810154909416825281206002908101805460ff60a01b19908116909155929091529091018054909116600160a01b179055614fc98483614a62565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b0380821660009081526003860160205260408082206002908101805487861685528385208301805460ff600160a01b9384900416151590920260ff60a01b1992831617815582548216909255905490941683529120018054909116905561505a84826148af565b83546001600160a01b031692506152f8565b6001600160a01b0381811660009081526003860160205260408082206001015490921680825291902060020154909250600160a01b900460ff161561511c576001600160a01b0380831660009081526003860160205260408082206002908101805460ff60a01b1990811690915593851683529120018054909116600160a01b1790556150f98482614a62565b6001600160a01b0380821660009081526003860160205260409020600101541691505b6001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff1615801561518f57506001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16155b156151ca576001600160a01b03821660009081526003850160205260409020600201805460ff60a01b1916600160a01b1790559150816152f8565b6001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16615277576001600160a01b03808316600081815260038701602052604080822060029081018054909516835290822001805460ff60a01b19908116909155919052815416600160a01b17905561525484836148af565b6001600160a01b0380821660009081526003860160205260409020600101541691505b6001600160a01b038082166000908152600386016020526040808220600290810180548786168552838520808401805460ff600160a01b9485900416151590930260ff60a01b19938416179055825482169092556001909101549094168352912001805490911690556152ea8482614a62565b83546001600160a01b031692505b50614d60565b506001600160a01b03166000908152600390910160205260409020600201805460ff60a01b19169055565b60405180608001604052806004906020820280368337509192915050565b8260048101928215615375579160200282015b8281111561537557825182559160200191906001019061535a565b5061416492915061539f565b60405180604001604052806002906020820280368337509192915050565b5b8082111561416457600081556001016153a0565b6020808252825182820181905260009190848201906040850190845b818110156153f55783516001600160a01b0316835292840192918401916001016153d0565b50909695505050505050565b6001600160a01b03811681146114cf57600080fd5b803561242581615401565b60006020828403121561543357600080fd5b81356132bf81615401565b6101208101818860005b6004811015615467578151835260209283019290910190600101615448565b505050608082019690965260a081019490945260c084019290925260e0830152151561010090910152919050565b60008060c083850312156154a857600080fd5b60408301848111156154b957600080fd5b8392508460c0850111156154cc57600080fd5b809150509250929050565b6000602082840312156154e957600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600060608284031215613e0a57600080fd5b600080600060a0848603121561552b57600080fd5b8335925061553c8560208601615504565b915060808401356001600160401b0381111561555757600080fd5b61556386828701615504565b9150509250925092565b6000806040838503121561558057600080fd5b823561558b81615401565b946020939093013593505050565b60008083601f8401126155ab57600080fd5b5081356001600160401b038111156155c257600080fd5b6020830191508360208260051b8501011115612eac57600080fd5b600080602083850312156155f057600080fd5b82356001600160401b0381111561560657600080fd5b61561285828601615599565b90969095509350505050565b6000806040838503121561563157600080fd5b823561563c81615401565b915060208301356154cc81615401565b60008060006060848603121561566157600080fd5b8335925060208401359150604084013561567a81615401565b809150509250925092565b80151581146114cf57600080fd5b600080604083850312156156a657600080fd5b82356156b181615401565b915060208301356154cc81615685565b600080600080600085870360e08112156156da57600080fd5b60808112156156e857600080fd5b5085945060808601356001600160401b038082111561570657600080fd5b818801915088601f83011261571a57600080fd5b81358181111561572957600080fd5b8960208260081b850101111561573e57600080fd5b60208301965080955050505061575660a08701615416565b915061576460c08701615416565b90509295509295909350565b6000806000806000806000610100888a03121561578c57600080fd5b8735965060208801359550604088013594506157ab8960608a01615504565b935060c08801356001600160401b03808211156157c757600080fd5b6157d38b838c01615504565b945060e08a01359150808211156157e957600080fd5b506157f68a828b01615599565b989b979a50959850939692959293505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561154557611545615809565b60808181019083833792915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161587f5761587f615809565b5060010190565b8082018281126000831280158216821582161715612cbf57612cbf615809565b6007815266756e7374616b6560c81b602082015260400190565b6040815260006158d2604083016158a6565b82810360208401526132bf816014815273494e53554646494349454e545f42414c414e434560601b602082015260400190565b8181036000831280158383131683831282161715611e3a57611e3a615809565b600d81526c5354414b455f544f4f5f4c4f5760981b602082015260400190565b604081526000615957604083016158a6565b82810360208401526132bf81615925565b80820260008212600160ff1b8414161561598457615984615809565b818105831482151761154557611545615809565b6020808252600990820152682b20a624a220aa27a960b91b604082015260600190565b6040815260056040820152647374616b6560d81b606082015260806020820152600061154560808301615925565b6020808252600a908201526914d654d5115350d0531360b21b604082015260600190565b60208082526013908201527215539156141150d5115117d15413d0d217d251606a1b604082015260600190565b6020808252601390820152721393d7d09313d0d2d4d7d0d3d3535255151151606a1b604082015260600190565b8181038181111561154557611545615809565b634e487b7160e01b600052601260045260246000fd5b600082615a9f57615a9f615a7a565b500690565b602080825260139082015272494e56414c49445f53544152545f424c4f434b60681b604082015260600190565b600a815269756e64656c656761746560b01b602082015260400190565b6040815260006158d260408301615ad1565b601281527144454c45474154494f4e5f544f4f5f4c4f5760701b602082015260400190565b604081526000615b3760408301615ad1565b82810360208401526132bf81615b00565b634e487b7160e01b600052600160045260246000fd5b60408152600860408201526764656c656761746560c01b606082015260806020820152600061154560808301615b00565b6020808252600e908201526d0929cac82989288be988a9c8ea8960931b604082015260600190565b6000823560de19833603018112615bcd57600080fd5b9190910192915050565b6000808335601e19843603018112615bee57600080fd5b8301803591506001600160401b03821115615c0857600080fd5b602001915036819003821315612eac57600080fd5b61010081016040858337608084604084013760c082018360005b6002811015615c56578151835260209283019290910190600101615c37565b505050949350505050565b60008060408385031215615c7457600080fd5b8251615c7f81615685565b60208401519092506154cc81615685565b6000808335601e19843603018112615ca757600080fd5b8301803591506001600160401b03821115615cc157600080fd5b6020019150600681901b3603821315612eac57600080fd5b808202811582820484141761154557611545615809565b600082615cff57615cff615a7a565b500490565b604080519081016001600160401b0381118282101715615d3457634e487b7160e01b600052604160045260246000fd5b60405290565b600060408284031215615d4c57600080fd5b615d54615d04565b8235615d5f81615401565b81526020928301359281019290925250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000615e02606083018688615dbf565b8281036040840152615e15818587615dbf565b98975050505050505050565b60005b83811015615e3c578181015183820152602001615e24565b50506000910152565b60008251615bcd818460208701615e21565b600060208284031215615e6957600080fd5b81516132bf81615685565b600081615e8357615e83615809565b506000190190565b8281526040602082015260008251806040840152615eb0816060850160208701615e21565b601f01601f1916919091016060019392505050565b600060408284031215615ed757600080fd5b82601f830112615ee657600080fd5b615eee615d04565b806040840185811115615f0057600080fd5b845b81811015615f1a578051845260209384019301615f02565b50909594505050505056fea2646970667358221220a626fbc30de48fae03e0787e09215ca109af7c4393b840809136a8d3e07d3add64736f6c63430008110033\",\n \"deployedBytecode\": \"0x6080604052600436106102ca5760003560e01c8063715018a61161017b578063a2562ddd116100d7578063e0563ab111610085578063e0563ab114610890578063e30c3978146108a6578063e3f56eaa146108c4578063ea0fee4f146108e4578063eacdc5ff146108f9578063f2fde38b1461090f578063f3f437031461092f57600080fd5b8063a2562ddd146107a4578063a2b915e2146107c4578063a77af229146107e4578063a90049d0146107f9578063ae97dde814610366578063c6b61e4c14610819578063ce513b6f1461087057600080fd5b8063947287cf11610134578063947287cf146106df57806395b0b027146106f557806397e5230d14610715578063982ef0a71461072c5780639a91e6d71461073f5780639b19251a14610754578063a15808791461078457600080fd5b8063715018a61461061057806378f619321461062557806379ba5097146106775780637f6497831461068c5780638b0e9f3f146106ac5780638da5cb5b146106c157600080fd5b80633a4b66f11161022a57806351351d53116101e357806351351d531461052b57806351cff8d91461054657806352a9674b14610566578063548db1741461059a5780635689762f146105ba578063572d356e146105da578063628da527146105f057600080fd5b80633a4b66f11461046b5780633b878c22146104735780633fd5000114610489578063410899c9146104a957806346df33d2146104c95780634d99dd161461050b57600080fd5b80632153f7fa116102875780632153f7fa1461039d578063284017f5146103bd57806328f73148146103e05780632e17de78146103f557806333378ada14610415578063355e6b4314610435578063375b3c0a1461045557600080fd5b80630209fdd0146102cf57806302985992146102fa5780631604e4161461031e5780631904bb2e146103345780631bce714d146103665780631f6590b81461037b575b600080fd5b3480156102db57600080fd5b506102e461094f565b6040516102f191906153b4565b60405180910390f35b34801561030657600080fd5b5061031060055481565b6040519081526020016102f1565b34801561032a57600080fd5b5061031060035481565b34801561034057600080fd5b5061035461034f366004615421565b610960565b6040516102f19695949392919061543e565b34801561037257600080fd5b50610310606481565b34801561038757600080fd5b5061039b610396366004615495565b610a33565b005b3480156103a957600080fd5b506102e46103b83660046154d7565b610b30565b3480156103c957600080fd5b506103d361202081565b6040516102f191906154f0565b3480156103ec57600080fd5b50610310610c3b565b34801561040157600080fd5b5061039b6104103660046154d7565b610d09565b34801561042157600080fd5b50610310610430366004615421565b610e2f565b34801561044157600080fd5b5061039b6104503660046154d7565b610e46565b34801561046157600080fd5b5061031060045481565b61039b610f11565b34801561047f57600080fd5b506103d361101081565b34801561049557600080fd5b506103106104a43660046154d7565b610ff0565b3480156104b557600080fd5b5061039b6104c4366004615516565b611011565b3480156104d557600080fd5b506104e96104e43660046154d7565b61121f565b60408051825181526020808401519082015291810151908201526060016102f1565b34801561051757600080fd5b5061039b61052636600461556d565b611297565b34801561053757600080fd5b506103d36002600160a01b0381565b34801561055257600080fd5b5061039b610561366004615421565b6113a2565b34801561057257600080fd5b506103107ffd10bf199d0185af9cce2005e6acc8d19924428058ac3374e16f18c97569b4ee81565b3480156105a657600080fd5b5061039b6105b53660046155dd565b6114d2565b3480156105c657600080fd5b506103106105d536600461561e565b61152b565b3480156105e657600080fd5b5061031060005481565b3480156105fc57600080fd5b5061031061060b36600461561e565b61154b565b34801561061c57600080fd5b5061039b611562565b34801561063157600080fd5b5061066761064036600461564c565b61013e60209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016102f1565b34801561068357600080fd5b5061039b611576565b34801561069857600080fd5b5061039b6106a73660046155dd565b6115ed565b3480156106b857600080fd5b50600954610310565b3480156106cd57600080fd5b506076546001600160a01b03166103d3565b3480156106eb57600080fd5b5061031061520881565b34801561070157600080fd5b506006546103d3906001600160a01b031681565b34801561072157600080fd5b50610310620249f081565b61039b61073a366004615693565b611641565b34801561074b57600080fd5b5061039b61169d565b34801561076057600080fd5b5061066761076f366004615421565b60106020526000908152604090205460ff1681565b34801561079057600080fd5b5061039b61079f3660046156c1565b611702565b3480156107b057600080fd5b5061039b6107bf366004615770565b6119d0565b3480156107d057600080fd5b506103106107df366004615421565b611d5e565b3480156107f057600080fd5b50610310600a81565b34801561080557600080fd5b5061039b610814366004615693565b611d72565b34801561082557600080fd5b506108556108343660046154d7565b600f6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102f1565b34801561087c57600080fd5b5061031061088b366004615421565b611e13565b34801561089c57600080fd5b506103d361203081565b3480156108b257600080fd5b5060a8546001600160a01b03166103d3565b3480156108d057600080fd5b506103106108df366004615421565b611e41565b3480156108f057600080fd5b50610310600181565b34801561090557600080fd5b5061031060015481565b34801561091b57600080fd5b5061039b61092a366004615421565b611e4e565b34801561093b57600080fd5b5061031061094a366004615421565b611ebf565b606061095b6064610b30565b905090565b610968615329565b6000808080808061097a600789611ee6565b604080516101208101909152908160a081018260048282826020028201915b8154815260200190600101908083116109995750505091835250506004820154602080830191909152600583015460408301526006830154606083015260079283015460ff1615156080909201919091528251908301519099509750909150610a029089611f04565b546020820151610a12919061581f565b94508060400151935080606001519250806080015191505091939550919395565b3360009081526010602052604090205460ff16610a845760405163973d02cb60e01b815260206004820152600960248201526815d2125511531254d560ba1b60448201526064015b60405180910390fd5b610a8f338383611f22565b604080516101208101909152610ae29033908060a0810185600482826080808284376000920182905250928452505060208201819052604082018190526060820152600160809091015260079190611fd7565b610aeb33612380565b336001600160a01b03167fcab5c47e498c5b85fd42d656842253cfe070f7648c3a198275347b47dec5d27b82604051610b249190615832565b60405180910390a25050565b60606000600760010154831115610b4957600854610b4b565b825b90506000816001600160401b03811115610b6757610b67615841565b604051908082528060200260200182016040528015610b90578160200160208202803683370190505b50905081600003610ba2579392505050565b6000610bae60076123c9565b90508082600081518110610bc457610bc4615857565b6001600160a01b039092166020928302919091019091015260015b83811015610c3157610bf260078361242a565b915081838281518110610c0757610c07615857565b6001600160a01b039092166020928302919091019091015280610c298161586d565b915050610bdf565b5090949350505050565b60008060076001015460641115610c5457600854610c57565b60645b905080600003610c6957600091505090565b6000610c7560076123c9565b9050610c82600782611f04565b54610c8e600783611ee6565b60040154610c9c919061581f565b610ca6908461581f565b925060015b82811015610d0357610cbe60078361242a565b9150610ccb600783611f04565b54610cd7600784611ee6565b60040154610ce5919061581f565b610cef908561581f565b935080610cfb8161586d565b915050610cab565b50505090565b6000610d16600c3361252c565b336000908152600a6020526040902060070154610d339190615886565b90506000610d4083612588565b905081811315610d63576040516396906e6360e01b8152600401610a7b906158c0565b6000610d6f8284615905565b905060045481128015610d8157508015155b15610d9f576040516396906e6360e01b8152600401610a7b90615945565b610da761169d565b610dc233610db784600019615968565b600c9190600061259b565b80600003610dea576000610dd7600733611ee6565b600701805460ff19169115159190911790555b610df433856126a2565b60405184815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250505050565b6000610e3c600783611ee6565b6006015492915050565b610e51600733611ee6565b6007015460ff16610e755760405163973d02cb60e01b8152600401610a7b90615998565b6064811115610ebb5760405162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa1a7a6a6a4a9a9a4a7a760711b6044820152606401610a7b565b6000610ec8600733611ee6565b6005810154604080519182526020820185905291925033917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a260050155565b610f1c600733611ee6565b6007015460ff16610f405760405163973d02cb60e01b8152600401610a7b90615998565b6000610f4d600c3361252c565b336000908152600a6020526040902060070154610f6a9190615886565b905060045481610f7934612588565b610f839190615886565b1215610fa2576040516396906e6360e01b8152600401610a7b906159bb565b610faa61169d565b610fb8600c3334600061259b565b60405134815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250565b6002818154811061100057600080fd5b600091825260209091200154905081565b336002600160a01b03146110385760405163973d02cb60e01b8152600401610a7b906159e9565b60018054600091826110498361586d565b91905055905080841461106e5760405162461bcd60e51b8152600401610a7b90615a0d565b82356020840135116110925760405162461bcd60e51b8152600401610a7b90615a3a565b6000546110a484356020860135615a67565b6110af90600161581f565b6110b99190615a90565b156111145760405162461bcd60e51b815260206004820152602560248201527f45504f43485f4d5553545f42455f444956495349424c455f42595f45504f43486044820152645f53495a4560d81b6064820152608401610a7b565b8235600f6000611125600185615a67565b8152602001908152602001600020600101546001611143919061581f565b146111605760405162461bcd60e51b8152600401610a7b90615aa4565b6000818152600f602090815260408083209186013560018084018290558735845591870135600280850191909155805492830181559093527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace01919091556111c8848461270e565b6111d06128df565b83602001358460000135867f0ce8712c4dee4bd5a691f0bc1c39594671591e77395f8ebf6a3fb5f63fbea66a876040013560405161121091815260200190565b60405180910390a45050505050565b6040805160608101825260008082526020820181905291810182905290611247600284612c12565b9050600f600061125883600161581f565b81526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050915050919050565b60006112a4600784611f04565b905060006112b28233612cc7565b9050808311156112d5576040516396906e6360e01b8152600401610a7b90615aee565b6112e0823385612d13565b60006112ec8483615a67565b9050600554811080156112fe57508015155b1561131c576040516396906e6360e01b8152600401610a7b90615b25565b611327856000611d72565b600061133285612588565b905061135086600061134684600019615968565b600c92919061259b565b61135a33866126a2565b6040518581526001600160a01b0387169033907f4d10bd049775c77bd7f255195afba5088028ecb3c7c277d393ccff7934f2f92c9060200160405180910390a3505050505050565b6113aa612de8565b6001600160a01b0381166113c0576113c0615b48565b336000908152600e6020526040812060015490919081906113e2908490612e41565b80855560405182815291935091506001600160a01b0385169033907f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63989060200160405180910390a36000846001600160a01b03168360405160006040518083038185875af1925050503d8060008114611477576040519150601f19603f3d011682016040523d82523d6000602084013e61147c565b606091505b50509050806114c15760405162461bcd60e51b815260206004820152601160248201527015d2551211149055d05317d19052531151607a1b6044820152606401610a7b565b505050506114cf600160da55565b50565b6114da612eba565b60005b81811015611526576115148383838181106114fa576114fa615857565b905060200201602081019061150f9190615421565b612380565b8061151e8161586d565b9150506114dd565b505050565b60006115428261153c600786611f04565b90612f14565b90505b92915050565b60006115428261155c600786611f04565b90612cc7565b61156a612eba565b6115746000612f43565b565b60a85433906001600160a01b031681146115e45760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a7b565b6114cf81612f43565b6115f5612eba565b60005b818110156115265761162f83838381811061161557611615615857565b905060200201602081019061162a9190615421565b612f5c565b806116398161586d565b9150506115f8565b600061164e600784611f04565b6005549091503461165f8333612cc7565b611669919061581f565b1015611688576040516396906e6360e01b8152600401610a7b90615b5e565b6116928383611d72565b611526338434612fa8565b60006116aa600733611ee6565b600681015490915060008190036116bf575050565b600060068301556116d033826126a2565b60405181815233907f378c825c0ac073cbae19612eb73cde31c0972f0c8ba2dedb659840f32550df2b90602001610b24565b604354610100900460ff16158080156117225750604354600160ff909116105b8061173c5750303b15801561173c575060435460ff166001145b61179f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a7b565b6043805460ff1916600117905580156117c2576043805461ff0019166101001790555b336002600160a01b03146117e95760405163973d02cb60e01b8152600401610a7b906159e9565b6001805560608601356000556117fe82612f43565b611806613073565b853560035560208601356004556040860135600555600680546001600160a01b0319166001600160a01b03851617905560005b848110156119815760006040518060a0016040528088888581811061186057611860615857565b905061010002016020016004806020026040519081016040528092919082600460200280828437600092019190915250505081526020018888858181106118a9576118a9615857565b9050610100020160e00135815260200160008152602001600081526020016001151581525090506119058787848181106118e5576118e5615857565b6118fc926020610100909202019081019150615421565b60079083611fd7565b61196e87878481811061191a5761191a615857565b611931926020610100909202019081019150615421565b88888581811061194357611943615857565b9050610100020160a00189898681811061195f5761195f615857565b90506101000201602001611f22565b50806119798161586d565b915050611839565b5080156119c8576043805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8060028110156119f25760405162461bcd60e51b8152600401610a7b90615b8f565b6119fc83836130a2565b611a3f5760405162461bcd60e51b8152602060048201526014602482015273424c4f434b484153485f4e4f545f554e4951554560601b6044820152606401610a7b565b60005b81811015611bd957611bd14689868685818110611a6157611a61615857565b9050602002810190611a739190615bb7565b608001358a888887818110611a8a57611a8a615857565b9050602002810190611a9c9190615bb7565b35898988818110611aaf57611aaf615857565b9050602002810190611ac19190615bb7565b602001358a8a89818110611ad757611ad7615857565b9050602002810190611ae99190615bb7565b604001358b8b8a818110611aff57611aff615857565b9050602002810190611b119190615bb7565b604080516020810199909952880196909652606087810195909552608087019390935260a086019190915260c085015260e084015201356101008201526101200160405160208183030381529060405280519060200120858584818110611b7a57611b7a615857565b9050602002810190611b8c9190615bb7565b611b9a9060c0810190615bd7565b878786818110611bac57611bac615857565b9050602002810190611bbe9190615bb7565b611bcc9060a0810190615bd7565b613158565b600101611a42565b506000606460076001015410611bf0576064611bf4565b6008545b90506000611c0182610b30565b90506000826001600160401b03811115611c1d57611c1d615841565b604051908082528060200260200182016040528015611c46578160200160208202803683370190505b50905060005b83811015611d44576000805b86811015611d3a57611c9b898983818110611c7557611c75615857565b9050602002810190611c879190615bb7565b611c959060a0810190615bd7565b8561325c565b15611cae5781611caa8161586d565b9250505b6001821115611d2857611cff858481518110611ccc57611ccc615857565b60200260200101518a8a84818110611ce657611ce6615857565b9050602002810190611cf89190615bb7565b358e6132c6565b6001848481518110611d1357611d13615857565b91151560209283029190910190910152611d3a565b80611d328161586d565b915050611c58565b5050600101611c4c565b50611d518b89898461349d565b5050505050505050505050565b6000611d6b600783611f04565b5492915050565b6000611d7f600784611f04565b90506000611d8d823361383a565b905080600003611d9d5750505050565b8215611db357611dae338583612fa8565b611dbd565b611dbd33826126a2565b821515846001600160a01b0316336001600160a01b03167f6b2cd13395c5d2d1f95934a6a8f884d2cb71e846eb99d6759f7e6a39c060b2d084604051611e0591815260200190565b60405180910390a450505050565b6001546001600160a01b0382166000908152600e602052604081209091611e3a9190612e41565b5092915050565b6000611545600783613881565b611e56612eba565b60a880546001600160a01b0383166001600160a01b03199091168117909155611e876076546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001546001600160a01b0382166000908152600e60205260408120909161154591906138b6565b6001600160a01b031660009081526003918201602052604090200190565b6001600160a01b031660009081526004919091016020526040902090565b60065460009081906001600160a01b031663ebbdac918585611f438961394c565b6040518463ffffffff1660e01b8152600401611f6193929190615c1d565b6040805180830381865afa158015611f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa19190615c61565b91509150801580611fb0575081155b15611fd05784604051633615713d60e21b8152600401610a7b91906154f0565b5050505050565b6001600160a01b038216611fed57611fed615b48565b611ff78383613a1c565b15612017578160405163cda981d560e01b8152600401610a7b91906154f0565b6001600160a01b0382166000908152600380850160205260409091208251839291909101906120499082906004615347565b50602082810151600483015560408301516005830155606083015160068301556080909201516007909101805460ff191691151591909117905581015160000361209257505050565b82546000906001600160a01b0316816120ab8686613881565b90505b6001600160a01b03821615612121578192506120ca8683613881565b8110156120f9576001600160a01b039182166000908152600387016020526040902060010154909116906120ae565b6001600160a01b039182166000908152600387016020526040902060020154909116906120ae565b6040518060a00160405280846001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160011515815260200185815250866003016000876001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160146101000a81548160ff021916908315150217905550608082015181600301600082015181600001906004612256929190615347565b506020820151600482015560408201516005820155606082015160068201556080909101516007909101805460ff191691151591909117905550506001600160a01b0383166122bd5785546001600160a01b0319166001600160a01b03861617865561233a565b6122c78684613881565b811015612306576001600160a01b038381166000908152600388016020526040902060010180546001600160a01b03191691871691909117905561233a565b6001600160a01b038381166000908152600388016020526040902060020180546001600160a01b0319169187169190911790555b6123448686613a6d565b6001860180549060006123568361586d565b91905055508360200151866002016000828254612373919061581f565b9091555050505050505050565b6001600160a01b038116600081815260106020526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a250565b80546001600160a01b03168015612425575b6001600160a01b0381811660009081526003840160205260409020600201541615612425576001600160a01b039081166000908152600383016020526040902060020154166123db565b919050565b60006001600160a01b038216612453576040516365e52d5160e11b815260040160405180910390fd5b6001600160a01b03828116600090815260038501602052604090206001015416156124aa576001600160a01b0380831660009081526003850160205260409020600101546124a391859116613dba565b9050611545565b506001600160a01b038082166000908152600384016020526040902054165b6001600160a01b0381161580159061250257506001600160a01b0380821660009081526003850160205260409020600101548382169116145b15611545576001600160a01b038082166000908152600385016020526040902054919250166124c9565b6001600160a01b038116600090815260018301602052604081205461255357506000611545565b8261255e8184613e10565b8154811061256e5761256e615857565b906000526020600020906003020160010154905092915050565b6000818181121561154557611545615b48565b6001600160a01b0383166000908152600185016020526040812054908190036126465784546125cb90600161581f565b6001600160a01b03858116600081815260018981016020908152604080842087905580516060810182529485528482018a81529085018981528c548085018e558d8652929094209451600390920290940180546001600160a01b03191691909516178455915191830191909155516002909101559050611fd0565b6000856126538187613e10565b8154811061266357612663615857565b90600052602060002090600302019050838160010160008282546126879190615886565b92505081905550828160020160008282546123739190615886565b6126d381600180546126b4919061581f565b6001600160a01b0385166000908152600e602052604090209190613e46565b816001600160a01b03167f655c1cd0236fb6dc4916f34c8ff10e3b18fcaea5b344dfc16c36fbb1bdfc5df282604051610b2491815260200190565b6001805461271c9190615a67565b8135146127615760405162461bcd60e51b8152602060048201526013602482015272115413d0d217d393d517d0d3d3535255151151606a1b6044820152606401610a7b565b60006127706020830183615c90565b9150506064811180159061278657506008548111155b6127a25760405162461bcd60e51b8152600401610a7b90615b8f565b60006127ac610c3b565b90506000805460646127be9190615cd9565b6127cd86356020880135615a67565b6003546127da9190615cd9565b6127e5906064615cd9565b6127ef9190615cf0565b905060005b838110156119c857600061280b6020870187615c90565b8381811061281b5761281b615857565b9050604002018036038101906128319190615d3a565b805190915060009061284590600790611ee6565b90506000612857604089013587615cd9565b6020840151845161286a90600790611f04565b54600485015461287a919061581f565b6128849088615cd9565b61288e9190615cd9565b6128989190615cf0565b90506000806128ab856000015184613f64565b915091506128bd85600001518361409d565b84516128c99082614108565b5050505050806128d89061586d565b90506127f4565b600c60005b8154811015612aae57600082828154811061290157612901615857565b600091825260209182902060408051606081018252600390930290910180546001600160a01b03168084526001820154948401949094526002015490820152915061294d600782613a1c565b15612a9b57600061295f600783611ee6565b905061297d836020015182600401546129789190615886565b614152565b600482015560208301516009546129979161297891615886565b60095560006129a7600784613881565b905060006129b6600785614168565b90506001600160a01b038116158015906129d95750816129d7600783613881565b105b806129f85750816129f66129ee60078761242a565b600790613881565b115b15612a7e57612a08600785614263565b604080516101208101909152612a7e908590858160a081018260048282826020028201915b815481526020019060010190808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b6001600160a01b0384166000908152600d60205260408120555050505b505080612aa79061586d565b90506128e4565b5060005b8154811015612c09576000828281548110612acf57612acf615857565b600091825260209182902060408051606081018252600390930290910180546001600160a01b031680845260018201549484019490945260020154908201529150612b1b600782613a1c565b158015612b3f57506001600160a01b0381166000908152600d602052604090205415155b15612bf6576000612b51600783611ee6565b9050612b608360200151614152565b60048281019190915560408051610120810191829052835460a08201908152612bdb9386938692849290918491906001830160c08601808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b6001600160a01b0382166000908152600d6020526040812055505b505080612c029061586d565b9050612ab2565b506000600c5550565b81546000908103612c2557506000611545565b82546000905b80821015612c72576000612c3f8383614644565b60008781526020902090915085908201541115612c5e57809150612c6c565b612c6981600161581f565b92505b50612c2b565b600082118015612c9e575083612c9b86612c8d600186615a67565b600091825260209091200190565b54145b15612cb757612cae600183615a67565b92505050611545565b509050611545565b505092915050565b60008260010154600003612cdd57506000611545565b600183015483546001600160a01b0384166000908152600686016020526040902054612d099190615cd9565b6115429190615cf0565b8254600184015460009190612d289084615cd9565b612d329190615cf0565b6001600160a01b0384166000908152600686016020526040812080549293508392909190612d61908490615a67565b9250508190555080846001016000828254612d7c9190615a67565b90915550506002840154612d9a90612d95908390615cd9565b612588565b6001600160a01b038416600090815260048601602052604081208054909190612dc4908490615886565b9091555050835482908590600090612ddd908490615a67565b909155505050505050565b600260da5403612e3a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610a7b565b600260da55565b81546000905b8360010154811015612eac57600081815260028501602090815260409182902082518084019093528054835260010154908201819052841015612e8a5750612eac565b8051612e96908461581f565b9250508080612ea49061586d565b915050612e47565b9250929050565b600160da55565b6076546001600160a01b031633146115745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7b565b6001600160a01b0381166000908152600583016020526040812054612f39848461465f565b6115429190615a67565b60a880546001600160a01b03191690556114cf816146d9565b6001600160a01b038116600081815260106020526040808220805460ff19166001179055517fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab039190a250565b612fb3600783611ee6565b6007015460ff16612ffb5760405163973d02cb60e01b815260206004820152601160248201527024a72b20a624a22fab20a624a220aa27a960791b6044820152606401610a7b565b61300a82600061134684612588565b613021838261301a600786611f04565b919061472b565b816001600160a01b0316836001600160a01b03167fe5541a6b6103d4fa7e021ed54fad39c66f27a76bd13d374cf6240ae6bd0bb72b8360405161306691815260200190565b60405180910390a3505050565b604354610100900460ff1661309a5760405162461bcd60e51b8152600401610a7b90615d74565b61157461480b565b600081815b8181101561314d5760006130bc82600161581f565b90505b8281101561313a578585828181106130d9576130d9615857565b90506020028101906130eb9190615bb7565b6080013586868481811061310157613101615857565b90506020028101906131139190615bb7565b60800135036131285760009350505050611545565b806131328161586d565b9150506130bf565b50806131458161586d565b9150506130a7565b506001949350505050565b6000806120306001600160a01b0316620249f08888888888604051602001613184959493929190615de8565b60408051601f198184030181529082905261319e91615e45565b6000604051808303818686fa925050503d80600081146131da576040519150601f19603f3d011682016040523d82523d6000602084013e6131df565b606091505b50915091506000818060200190518101906131fa9190615e57565b90508280156132065750805b6132525760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c45440000006044820152606401610a7b565b5050505050505050565b60008061326a600884615cf0565b90506000613279600885615a90565b905084821061328d576000925050506132bf565b6000600160ff83161b8787858181106132a8576132a8615857565b9050013560f81c60f81b60f81c60ff161611925050505b9392505050565b600082815261013e6020908152604080832084845282528083206001600160a01b038716845290915290205460ff16156132ff57505050565b600082815261013e6020908152604080832084845282528083206001600160a01b03871684529091528120805460ff19166001179055613340600785611ee6565b6001600160a01b0385166000908152600b602052604090205490915060649061336b90600a90615cd9565b6133759190615cf0565b6001600160a01b0385166000908152600b60205260408120805490919061339d908490615a67565b9250508190555060006064600a83600401546133b99190615cd9565b6133c39190615cf0565b90506133d0600786614263565b808260040160008282546133e49190615a67565b909155505060408051610120810190915261345e908690848160a08101826004828282602002820191815481526020019060010190808311612a2d57505050918352505060048201546020820152600582015460408201526006820154606082015260079182015460ff1615156080909101529190611fd7565b8284866001600160a01b03167f2d7432ca38933aadba9547f33f0568008e240e52e66f1a16c6182e742bce3b1360405160405180910390a45050505050565b60018054600091826134ae8361586d565b9190505590508085146134d35760405162461bcd60e51b8152600401610a7b90615a0d565b83356020850135116134f75760405162461bcd60e51b8152600401610a7b90615a3a565b8335600f6000613508600185615a67565b8152602001908152602001600020600101546001613526919061581f565b146135435760405162461bcd60e51b8152600401610a7b90615aa4565b6000818152600f6020908152604080832087830135600180830182905589358355928901356002808401919091558054938401815585527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9092019190915591906135b090860186615c90565b915050606481118015906135c657506008548111155b6135e25760405162461bcd60e51b8152600401610a7b90615b8f565b60006135ec610c3b565b90506000805460646135fe9190615cd9565b61360d893560208b0135615a67565b60035461361a9190615cd9565b613625906064615cd9565b61362f9190615cf0565b905060005b838110156137de5786818151811061364e5761364e615857565b60200260200101516137ce57600061366960208a018a615c90565b8381811061367957613679615857565b90506040020180360381019061368f9190615d3a565b80519091506000906136a390600790611ee6565b905060006136b560408c013587615cd9565b602084015184516136c890600790611f04565b5460048501546136d8919061581f565b6136e29088615cd9565b6136ec9190615cd9565b6136f69190615cf0565b9050600080613709856000015184613f64565b9150915081846006016000828254613721919061581f565b909155505084516040518481526001600160a01b03909116907f65da9d8bbc1fc112cfb499f15f17b3bfe4c5070dfca6a3e30f7f5f7f17bd86849060200160405180910390a2845161378190829061377b90600790611f04565b90614832565b84600001516001600160a01b03167f520e62b73478b262ede881cd483440f8e7b8a4651b0ff9154aeb3510089ddbac826040516137c091815260200190565b60405180910390a250505050505b6137d78161586d565b9050613634565b506137e76128df565b876020013588600001358a7f0ce8712c4dee4bd5a691f0bc1c39594671591e77395f8ebf6a3fb5f63fbea66a8b6040013560405161382791815260200190565b60405180910390a4505050505050505050565b60006138468383612f14565b6001600160a01b038316600090815260058501602052604081208054929350839290919061387590849061581f565b90915550909392505050565b6001600160a01b038116600090815260048301602090815260408083205460038601909252822060070154611542919061581f565b60018201546000908082036138cf576000915050611545565b60006138dc600183615a67565b90505b84548110612cbf57600081815260028601602090815260409182902082518084019093528054835260010154908201819052851061391d5750612cbf565b8051613929908561581f565b9350816000036139395750612cbf565b508061394481615e74565b9150506138df565b613954615381565b6006546040516bffffffffffffffffffffffff19606085901b1660208201524660348201526001600160a01b039091169063a850a909907ffd10bf199d0185af9cce2005e6acc8d19924428058ac3374e16f18c97569b4ee906054016040516020818303038152906040526040518363ffffffff1660e01b81526004016139dc929190615e8b565b6040805180830381865afa1580156139f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115459190615ec5565b60006001600160a01b03821615801590611542575082546001600160a01b03838116911614806115425750506001600160a01b03908116600090815260039290920160205260409091205416151590565b60005b82546001600160a01b03838116911614801590613aba57506001600160a01b0382811660009081526003850160205260408082205490921681522060020154600160a01b900460ff165b15613d8c576001600160a01b03808316600090815260038501602052604080822054831680835281832054841683529120600101549091168103613c42576001600160a01b0381811660009081526003860160205260408082205483168252808220600290810154909316808352912090910154909250600160a01b900460ff1615613ba3576001600160a01b0380821660008181526003870160205260408082206002808201805460ff60a01b1990811690915588871685528385208201805482169055825487168552928420018054909216600160a01b1790915591905254169250613d86565b6001600160a01b038082166000908152600386016020526040902060020154811690841603613bd957809250613bd984846148af565b506001600160a01b0380831660009081526003850160205260408082205483168083528183206002808201805460ff60a01b19908116909155825487168652938520018054909316600160a01b1790925591829052549091613c3d91869116614a62565b613d86565b6001600160a01b03818116600090815260038601602052604080822054831682528082206001015490921680825291902060020154909250600160a01b900460ff1615613cec576001600160a01b0380821660008181526003870160205260408082206002808201805460ff60a01b1990811690915588871685528385208201805482169055825487168552928420018054909216600160a01b1790915591905254169250613d86565b6001600160a01b038082166000908152600386016020526040902060010154811690841603613d2257809250613d228484614a62565b506001600160a01b0380831660009081526003850160205260408082205483168083528183206002808201805460ff60a01b19908116909155825487168652938520018054909316600160a01b1790925591829052549091613d86918691166148af565b50613a70565b505080546001600160a01b03166000908152600390910160205260409020600201805460ff60a01b19169055565b60005b6001600160a01b0382811660009081526003850160205260409020600201541615613e0a576001600160a01b03918216600090815260038401602052604090206002015490911690613dbd565b50919050565b6001600160a01b038116600090815260018301602052604081205490819003613e3b57613e3b615b48565b611542600182615a67565b81600003613e5657613e56615b48565b82546001840154818103613ead576040805180820182528581526020808201868152600085815260028a019092529281209151825591516001918201558601805491613ea18361586d565b91905055505050505050565b60006002860181613ebf600185615a67565b815260200190815260200160002060010154905080841015613ee357613ee3615b48565b83811015613f32576040805180820182528681526020808201878152600086815260028b019092529281209151825591516001918201558701805491613f288361586d565b91905055506119c8565b84600287016000613f44600186615a67565b81526020019081526020016000206000016000828254612373919061581f565b60008080613f73600786611ee6565b604080516101208101909152908160a081018260048282826020028201915b815481526020019060010190808311613f925750505091835250506004820154602080830191909152600583015460408301526006830154606083015260079283015460ff161515608090920191909152820151919250600090613ff69088611f04565b54905060008290036140115760008094509450505050612eac565b806000036140285785600094509450505050612eac565b6000614034828461581f565b61403e8489615cd9565b6140489190615cf0565b905060006140568289615a67565b90506000606482876040015161406c9190615cd9565b6140769190615cf0565b9050614082818461581f565b61408c8284615a67565b975097505050505050509250929050565b60006140aa600784611ee6565b9050818160060160008282546140c0919061581f565b90915550506040518281526001600160a01b038416907f65da9d8bbc1fc112cfb499f15f17b3bfe4c5070dfca6a3e30f7f5f7f17bd86849060200160405180910390a2505050565b6141178161377b600785611f04565b816001600160a01b03167f520e62b73478b262ede881cd483440f8e7b8a4651b0ff9154aeb3510089ddbac82604051610b2491815260200190565b60008082121561416457614164615b48565b5090565b60006001600160a01b038216614191576040516365e52d5160e11b815260040160405180910390fd5b6001600160a01b03828116600090815260038501602052604090206002015416156141e1576001600160a01b0380831660009081526003850160205260409020600201546124a391859116614c15565b506001600160a01b038082166000908152600384016020526040902054165b6001600160a01b0381161580159061423957506001600160a01b0380821660009081526003850160205260409020600201548382169116145b15611545576001600160a01b03808216600090815260038501602052604090205491925016614200565b6001600160a01b03811661427957614279615b48565b6142838282613a1c565b6142a25780604051634b2990ed60e11b8152600401610a7b91906154f0565b6001600160a01b038181166000908152600384016020526040812060010154909182911615806142ef57506001600160a01b03838116600090815260038601602052604090206002015416155b156142fb575081614367565b506001600160a01b038083166000908152600385016020526040902060020154165b6001600160a01b0381811660009081526003860160205260409020600101541615614367576001600160a01b0390811660009081526003850160205260409020600101541661431d565b6001600160a01b03818116600090815260038601602052604090206001015416156143b3576001600160a01b0380821660009081526003860160205260409020600101541691506143d6565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b038082166000908152600386016020526040808220548584168352912080546001600160a01b0319169190921690811790915580156144af576001600160a01b038082166000908152600387016020526040902060010154811690831603614477576001600160a01b038181166000908152600387016020526040902060010180546001600160a01b0319169185169190911790556144c9565b6001600160a01b038181166000908152600387016020526040902060020180546001600160a01b0319169185169190911790556144c9565b84546001600160a01b0319166001600160a01b0384161785555b6001600160a01b038281166000818152600388016020526040902060020154600160a01b900460ff1615918616146145a457614506868487614c65565b6001600160a01b03858116600090815260038801602052604080822060018082015488861680865284862092830180549288166001600160a01b03199384168117909155865284862080548316821790556002938401805494909301805494909716938216841787559285529284208054909316821790925590549152815460ff60a01b1916600160a01b9182900460ff1615159091021790559193915b80156145b4576145b48685614d5d565b6001600160a01b0383166000908152600387016020526040812080546001600160a01b0319908116825560018083018054909216909155600290910180546001600160a81b0319169055870180549161460c83615e74565b90915550506001600160a01b038316600090815260038701602052604081206007015460028801805491929091612373908490615a67565b60006146536002848418615cf0565b6115429084841661581f565b6001600160a01b03811660009081526006830160205260408120546002840154829161468f91612d959190615cd9565b6001600160a01b0384166000908152600486016020526040812054919250906146bc906129789084615886565b90506146d0670de0b6b3a764000082615cf0565b95945050505050565b607680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600083600101546000148061473f57508354155b61476357835460018501546147549084615cd9565b61475e9190615cf0565b614765565b815b6001600160a01b038416600090815260068601602052604081208054929350839290919061479490849061581f565b92505081905550808460010160008282546147af919061581f565b90915550508354829085906000906147c890849061581f565b909155505060028401546147e190612d95908390615cd9565b6001600160a01b038416600090815260048601602052604081208054909190612ddd908490615905565b604354610100900460ff16612eb35760405162461bcd60e51b8152600401610a7b90615d74565b8060000361483e575050565b8160010154600003614872576003820154604051636130835f60e01b8152610a7b916001600160a01b0316906004016154f0565b6001820154614889670de0b6b3a764000083615cd9565b6148939190615cf0565b8260020160008282546148a6919061581f565b90915550505050565b6001600160a01b038082166000818152600385016020526040808220600281018054915482871680865293852060010154959094526001600160a01b031990911693851693841790559216908015614932576001600160a01b038181166000908152600387016020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038381166000908152600387016020526040902080546001600160a01b03191691841691821790556149835784546001600160a01b0319166001600160a01b038416178555614a18565b6001600160a01b0380831660009081526003870160205260409020600101548116908516036149e4576001600160a01b038281166000908152600387016020526040902060010180546001600160a01b031916918516919091179055614a18565b6001600160a01b038281166000908152600387016020526040902060020180546001600160a01b0319169185169190911790555b50506001600160a01b039081166000818152600390940160205260408085206001018054939094166001600160a01b03199384168117909455928452919092208054909216179055565b6001600160a01b038082166000818152600385016020526040808220600181018054915482871680865293852060020154959094526001600160a01b031990911693851693841790559216908015614ae5576001600160a01b038181166000908152600387016020526040902080546001600160a01b0319169186169190911790555b6001600160a01b038381166000908152600387016020526040902080546001600160a01b0319169184169182179055614b365784546001600160a01b0319166001600160a01b038416178555614bcb565b6001600160a01b038083166000908152600387016020526040902060020154811690851603614b97576001600160a01b038281166000908152600387016020526040902060020180546001600160a01b031916918516919091179055614bcb565b6001600160a01b038281166000908152600387016020526040902060010180546001600160a01b0319169185169190911790555b50506001600160a01b039081166000818152600390940160205260408085206002018054939094166001600160a01b03199384168117909455928452919092208054909216179055565b60005b6001600160a01b0382811660009081526003850160205260409020600101541615613e0a576001600160a01b03918216600090815260038401602052604090206001015490911690614c18565b6001600160a01b038082166000908152600385016020526040808220548584168352912080546001600160a01b0319169190921690811790915580614cc25783546001600160a01b0319166001600160a01b038416178455614d57565b6001600160a01b038082166000908152600386016020526040902060010154811690831603614d23576001600160a01b038181166000908152600386016020526040902060010180546001600160a01b031916918516919091179055614d57565b6001600160a01b038181166000908152600386016020526040902060020180546001600160a01b0319169185169190911790555b50505050565b60005b82546001600160a01b03838116911614801590614da257506001600160a01b0382166000908152600384016020526040902060020154600160a01b900460ff16155b156152fe576001600160a01b038083166000818152600386016020526040808220548416808352912060010154909216900361506c576001600160a01b038181166000908152600386016020526040808220600290810154909316808352912090910154909250600160a01b900460ff1615614e89576001600160a01b0380831660009081526003860160205260408082206002908101805460ff60a01b1990811690915593851683529120018054909116600160a01b179055614e6684826148af565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16158015614efc57506001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff16155b15614f37576001600160a01b03821660009081526003850160205260409020600201805460ff60a01b1916600160a01b1790559150816152f8565b6001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff16614fec576001600160a01b0380831660008181526003870160205260408082206001810154909416825281206002908101805460ff60a01b19908116909155929091529091018054909116600160a01b179055614fc98483614a62565b6001600160a01b0380821660009081526003860160205260409020600201541691505b6001600160a01b0380821660009081526003860160205260408082206002908101805487861685528385208301805460ff600160a01b9384900416151590920260ff60a01b1992831617815582548216909255905490941683529120018054909116905561505a84826148af565b83546001600160a01b031692506152f8565b6001600160a01b0381811660009081526003860160205260408082206001015490921680825291902060020154909250600160a01b900460ff161561511c576001600160a01b0380831660009081526003860160205260408082206002908101805460ff60a01b1990811690915593851683529120018054909116600160a01b1790556150f98482614a62565b6001600160a01b0380821660009081526003860160205260409020600101541691505b6001600160a01b038281166000908152600386016020526040808220600290810154909316825290200154600160a01b900460ff1615801561518f57506001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16155b156151ca576001600160a01b03821660009081526003850160205260409020600201805460ff60a01b1916600160a01b1790559150816152f8565b6001600160a01b0382811660009081526003860160205260408082206001015490921681522060020154600160a01b900460ff16615277576001600160a01b03808316600081815260038701602052604080822060029081018054909516835290822001805460ff60a01b19908116909155919052815416600160a01b17905561525484836148af565b6001600160a01b0380821660009081526003860160205260409020600101541691505b6001600160a01b038082166000908152600386016020526040808220600290810180548786168552838520808401805460ff600160a01b9485900416151590930260ff60a01b19938416179055825482169092556001909101549094168352912001805490911690556152ea8482614a62565b83546001600160a01b031692505b50614d60565b506001600160a01b03166000908152600390910160205260409020600201805460ff60a01b19169055565b60405180608001604052806004906020820280368337509192915050565b8260048101928215615375579160200282015b8281111561537557825182559160200191906001019061535a565b5061416492915061539f565b60405180604001604052806002906020820280368337509192915050565b5b8082111561416457600081556001016153a0565b6020808252825182820181905260009190848201906040850190845b818110156153f55783516001600160a01b0316835292840192918401916001016153d0565b50909695505050505050565b6001600160a01b03811681146114cf57600080fd5b803561242581615401565b60006020828403121561543357600080fd5b81356132bf81615401565b6101208101818860005b6004811015615467578151835260209283019290910190600101615448565b505050608082019690965260a081019490945260c084019290925260e0830152151561010090910152919050565b60008060c083850312156154a857600080fd5b60408301848111156154b957600080fd5b8392508460c0850111156154cc57600080fd5b809150509250929050565b6000602082840312156154e957600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600060608284031215613e0a57600080fd5b600080600060a0848603121561552b57600080fd5b8335925061553c8560208601615504565b915060808401356001600160401b0381111561555757600080fd5b61556386828701615504565b9150509250925092565b6000806040838503121561558057600080fd5b823561558b81615401565b946020939093013593505050565b60008083601f8401126155ab57600080fd5b5081356001600160401b038111156155c257600080fd5b6020830191508360208260051b8501011115612eac57600080fd5b600080602083850312156155f057600080fd5b82356001600160401b0381111561560657600080fd5b61561285828601615599565b90969095509350505050565b6000806040838503121561563157600080fd5b823561563c81615401565b915060208301356154cc81615401565b60008060006060848603121561566157600080fd5b8335925060208401359150604084013561567a81615401565b809150509250925092565b80151581146114cf57600080fd5b600080604083850312156156a657600080fd5b82356156b181615401565b915060208301356154cc81615685565b600080600080600085870360e08112156156da57600080fd5b60808112156156e857600080fd5b5085945060808601356001600160401b038082111561570657600080fd5b818801915088601f83011261571a57600080fd5b81358181111561572957600080fd5b8960208260081b850101111561573e57600080fd5b60208301965080955050505061575660a08701615416565b915061576460c08701615416565b90509295509295909350565b6000806000806000806000610100888a03121561578c57600080fd5b8735965060208801359550604088013594506157ab8960608a01615504565b935060c08801356001600160401b03808211156157c757600080fd5b6157d38b838c01615504565b945060e08a01359150808211156157e957600080fd5b506157f68a828b01615599565b989b979a50959850939692959293505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561154557611545615809565b60808181019083833792915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161587f5761587f615809565b5060010190565b8082018281126000831280158216821582161715612cbf57612cbf615809565b6007815266756e7374616b6560c81b602082015260400190565b6040815260006158d2604083016158a6565b82810360208401526132bf816014815273494e53554646494349454e545f42414c414e434560601b602082015260400190565b8181036000831280158383131683831282161715611e3a57611e3a615809565b600d81526c5354414b455f544f4f5f4c4f5760981b602082015260400190565b604081526000615957604083016158a6565b82810360208401526132bf81615925565b80820260008212600160ff1b8414161561598457615984615809565b818105831482151761154557611545615809565b6020808252600990820152682b20a624a220aa27a960b91b604082015260600190565b6040815260056040820152647374616b6560d81b606082015260806020820152600061154560808301615925565b6020808252600a908201526914d654d5115350d0531360b21b604082015260600190565b60208082526013908201527215539156141150d5115117d15413d0d217d251606a1b604082015260600190565b6020808252601390820152721393d7d09313d0d2d4d7d0d3d3535255151151606a1b604082015260600190565b8181038181111561154557611545615809565b634e487b7160e01b600052601260045260246000fd5b600082615a9f57615a9f615a7a565b500690565b602080825260139082015272494e56414c49445f53544152545f424c4f434b60681b604082015260600190565b600a815269756e64656c656761746560b01b602082015260400190565b6040815260006158d260408301615ad1565b601281527144454c45474154494f4e5f544f4f5f4c4f5760701b602082015260400190565b604081526000615b3760408301615ad1565b82810360208401526132bf81615b00565b634e487b7160e01b600052600160045260246000fd5b60408152600860408201526764656c656761746560c01b606082015260806020820152600061154560808301615b00565b6020808252600e908201526d0929cac82989288be988a9c8ea8960931b604082015260600190565b6000823560de19833603018112615bcd57600080fd5b9190910192915050565b6000808335601e19843603018112615bee57600080fd5b8301803591506001600160401b03821115615c0857600080fd5b602001915036819003821315612eac57600080fd5b61010081016040858337608084604084013760c082018360005b6002811015615c56578151835260209283019290910190600101615c37565b505050949350505050565b60008060408385031215615c7457600080fd5b8251615c7f81615685565b60208401519092506154cc81615685565b6000808335601e19843603018112615ca757600080fd5b8301803591506001600160401b03821115615cc157600080fd5b6020019150600681901b3603821315612eac57600080fd5b808202811582820484141761154557611545615809565b600082615cff57615cff615a7a565b500490565b604080519081016001600160401b0381118282101715615d3457634e487b7160e01b600052604160045260246000fd5b60405290565b600060408284031215615d4c57600080fd5b615d54615d04565b8235615d5f81615401565b81526020928301359281019290925250919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000615e02606083018688615dbf565b8281036040840152615e15818587615dbf565b98975050505050505050565b60005b83811015615e3c578181015183820152602001615e24565b50506000910152565b60008251615bcd818460208701615e21565b600060208284031215615e6957600080fd5b81516132bf81615685565b600081615e8357615e83615809565b506000190190565b8281526040602082015260008251806040840152615eb0816060850160208701615e21565b601f01601f1916919091016060019392505050565b600060408284031215615ed757600080fd5b82601f830112615ee657600080fd5b615eee615d04565b806040840185811115615f0057600080fd5b845b81811015615f1a578051845260209384019301615f02565b50909594505050505056fea2646970667358221220a626fbc30de48fae03e0787e09215ca109af7c4393b840809136a8d3e07d3add64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var L2StateSenderArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"L2StateSender\",\n \"sourceName\": \"contracts/child/L2StateSender.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"L2StateSynced\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_LENGTH\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"counter\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"syncState\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610297806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fedaf3c471ebd67d60c29efe34b639ede7d6a1d92eaeb3f503e784971e67118a5858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea2646970667358221220d2d546f135265c71683c4923890de2d8ae66f3be17185690036424019a5309ae64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fedaf3c471ebd67d60c29efe34b639ede7d6a1d92eaeb3f503e784971e67118a5858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea2646970667358221220d2d546f135265c71683c4923890de2d8ae66f3be17185690036424019a5309ae64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var StateReceiverArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"StateReceiver\",\n \"sourceName\": \"contracts/child/StateReceiver.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"startId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"endId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"NewCommitment\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"counter\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bool\",\n \"name\": \"status\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"StateSyncResult\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[][]\",\n \"name\": \"proofs\",\n \"type\": \"bytes32[][]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct StateReceiver.StateSync[]\",\n \"name\": \"objs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"batchExecute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct StateReceiver.StateSyncCommitment\",\n \"name\": \"commitment\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"bitmap\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"commit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"commitmentCounter\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"commitmentIds\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"commitments\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct StateReceiver.StateSync\",\n \"name\": \"obj\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"execute\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getCommitmentByStateSyncId\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"startId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"endId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"root\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct StateReceiver.StateSyncCommitment\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRootByStateSyncId\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"lastCommittedId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"processedStateSyncs\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611428806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c80639017c127116100875780639017c127146101de578063947287cf146101f157806397e5230d146101fa578063ad240c2a14610204578063c59a18f71461020d578063c6df461714610220578063e0563ab114610233578063eb70ef441461023c57600080fd5b8063196f1b2d146100e557806323e281cf1461010b578063284017f5146101145780633b878c221461013557806349ce89971461013e57806350d5b95b1461018857806351351d531461019d578063544c5e0f146101ab575b600080fd5b6100f86100f3366004610e88565b610271565b6040519081526020015b60405180910390f35b6100f860325481565b61011d61202081565b6040516001600160a01b039091168152602001610102565b61011d61101081565b61016d61014c366004610e88565b60356020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61019b610196366004610eec565b6102f0565b005b61011d6002600160a01b0381565b6101ce6101b9366004610e88565b60346020526000908152604090205460ff1681565b6040519015158152602001610102565b61019b6101ec366004610f5b565b6103b7565b6100f861520881565b6100f8620249f081565b6100f860335481565b6100f861021b366004610e88565b610557565b61019b61022e366004611007565b610578565b61011d61203081565b61024f61024a366004610e88565b61075c565b6040805182518152602080840151908201529181015190820152606001610102565b60008060358161028260368661081f565b81526020810191909152604001600020600201549050806102ea5760405162461bcd60e51b815260206004820152601d60248201527f537461746552656365697665723a204e4f5f524f4f545f464f525f494400000060448201526064015b60405180910390fd5b92915050565b60006102fc823561075c565b805190915061036c906103109084356110a5565b8251602084015161032191906110a5565b61032c9060016110b8565b83604001518787876040516020016103449190611110565b604051602081830303815290604052805190602001206108cc9095949392919063ffffffff16565b6103a85760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa82927a7a360991b60448201526064016102e1565b6103b182610a68565b50505050565b8281811461041a5760405162461bcd60e51b815260206004820152602a60248201527f537461746552656365697665723a20554e4d4154434845445f4c454e4754485f604482015269504152414d455445525360b01b60648201526084016102e1565b60005b8181101561054f57600061045485858481811061043c5761043c6111ac565b905060200281019061044e91906111c2565b3561075c565b905060006105088260000151878786818110610472576104726111ac565b905060200281019061048491906111c2565b61048f9190356110a5565b835160208501516104a091906110a5565b6104ab9060016110b8565b84604001518b8b888181106104c2576104c26111ac565b90506020028101906104d491906111e2565b8b8b8a8181106104e6576104e66111ac565b90506020028101906104f891906111c2565b6040516020016103449190611110565b90508061051957505060010161041d565b61054586868581811061052e5761052e6111ac565b905060200281019061054091906111c2565b610a68565b505060010161041d565b505050505050565b6036818154811061056757600080fd5b600091825260209091200154905081565b336002600160a01b03146105bc5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016102e1565b6033546105ca9060016110b8565b85351461060c5760405162461bcd60e51b815260206004820152601060248201526f1253959053125117d4d510549517d25160821b60448201526064016102e1565b8435602086013510156106525760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d1539117d25160921b60448201526064016102e1565b60408051863560208083019190915287013581830152908601356060820152610697906080016040516020818303038152906040528051906020012085858585610c83565b603280548691603591600091826106ad8361122b565b90915550815260208082019290925260409081016000208335815591830135600183015582013560028201555050603680546001810182556000919091526020868101357f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b89092018290556033829055604080519088013581528735917f11efd893530b26afc66d488ff54cb15df117cb6e0e4a08c6dcb166d766c3bf3b910160405180910390a35050505050565b604080516060810182526000808252602082018190529181018290529061078460368461081f565b60365490915081036107e45760405162461bcd60e51b815260206004820152602360248201527f537461746552656365697665723a204e4f5f434f4d4d49544d454e545f464f5260448201526217d25160ea1b60648201526084016102e1565b600090815260356020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915292915050565b81546000908103610832575060006102ea565b82546000905b8082101561087f57600061084c8383610d87565b6000878152602090209091508590820154111561086b57809150610879565b6108768160016110b8565b92505b50610838565b6000821180156108ab5750836108a88661089a6001866110a5565b600091825260209091200190565b54145b156108c4576108bb6001836110a5565b925050506102ea565b509392505050565b6000816108da866001610da9565b811461091f5760405162461bcd60e51b81526020600482015260146024820152730929cac82989288bea0a49e9e8cbe988a9c8ea8960631b60448201526064016102e1565b8587106109635760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016102e1565b8761099f5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016102e1565b8760005b82811015610a595760008686838181106109bf576109bf6111ac565b90506020020135905060028a6109d5919061125a565b600003610a0d576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a3a565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a4560028b61126e565b99505080610a529061122b565b90506109a3565b50909414979650505050505050565b803560009081526034602052604090205460ff1615610ad85760405162461bcd60e51b815260206004820152602660248201527f537461746552656365697665723a2053544154455f53594e435f49535f50524f60448201526510d154d4d15160d21b60648201526084016102e1565b610ae86060820160408301611282565b6001600160a01b03163b600003610b3c576040805160208082526000908201819052918335917f31c652130602f3ce96ceaf8a4c2b8b49f049166c6fcf2eb31943a75ec7c936ae910160405180910390a350565b8035600090815260346020526040808220805460ff191660011790558190610b6a9060608501908501611282565b6001600160a01b03168335610b856040860160208701611282565b610b92606087018761129d565b604051602401610ba594939291906112e3565b60408051601f198184030181529181526020820180516001600160e01b031663eeb4994560e01b17905251610bda919061133c565b6000604051808303816000865af19150503d8060008114610c17576040519150601f19603f3d011682016040523d82523d6000602084013e610c1c565b606091505b509150915081610c3f5782356000908152603460205260409020805460ff191690555b81151583600001357f31c652130602f3ce96ceaf8a4c2b8b49f049166c6fcf2eb31943a75ec7c936ae83604051610c76919061134e565b60405180910390a3505050565b6000806120306001600160a01b0316620249f08888888888604051602001610caf959493929190611381565b60408051601f1981840301815290829052610cc99161133c565b6000604051808303818686fa925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b5091509150600081806020019051810190610d2591906113ba565b9050828015610d315750805b610d7d5760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016102e1565b5050505050505050565b6000610d96600284841861126e565b610da2908484166110b8565b9392505050565b600080610db584610df4565b90506001836002811115610dcb57610dcb6113dc565b148015610ddb575083816001901b105b610de6576000610de9565b60015b60ff16019392505050565b600080608083901c15610e0957608092831c92015b604083901c15610e1b57604092831c92015b602083901c15610e2d57602092831c92015b601083901c15610e3f57601092831c92015b600883901c15610e5157600892831c92015b600483901c15610e6357600492831c92015b600283901c15610e7557600292831c92015b600183901c156102ea5760010192915050565b600060208284031215610e9a57600080fd5b5035919050565b60008083601f840112610eb357600080fd5b5081356001600160401b03811115610eca57600080fd5b6020830191508360208260051b8501011115610ee557600080fd5b9250929050565b600080600060408486031215610f0157600080fd5b83356001600160401b0380821115610f1857600080fd5b610f2487838801610ea1565b90955093506020860135915080821115610f3d57600080fd5b50840160808187031215610f5057600080fd5b809150509250925092565b60008060008060408587031215610f7157600080fd5b84356001600160401b0380821115610f8857600080fd5b610f9488838901610ea1565b90965094506020870135915080821115610fad57600080fd5b50610fba87828801610ea1565b95989497509550505050565b60008083601f840112610fd857600080fd5b5081356001600160401b03811115610fef57600080fd5b602083019150836020828501011115610ee557600080fd5b600080600080600085870360a081121561102057600080fd5b606081121561102e57600080fd5b5085945060608601356001600160401b038082111561104c57600080fd5b61105889838a01610fc6565b9096509450608088013591508082111561107157600080fd5b5061107e88828901610fc6565b969995985093965092949392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156102ea576102ea61108f565b808201808211156102ea576102ea61108f565b80356001600160a01b03811681146110e257600080fd5b919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152813560208201526000611129602084016110cb565b60018060a01b03808216604085015280611145604087016110cb565b16606085015250506060830135601e1984360301811261116457600080fd5b83016020810190356001600160401b0381111561118057600080fd5b80360382131561118f57600080fd5b6080808501526111a360a0850182846110e7565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e198336030181126111d857600080fd5b9190910192915050565b6000808335601e198436030181126111f957600080fd5b8301803591506001600160401b0382111561121357600080fd5b6020019150600581901b3603821315610ee557600080fd5b60006001820161123d5761123d61108f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261126957611269611244565b500690565b60008261127d5761127d611244565b500490565b60006020828403121561129457600080fd5b610da2826110cb565b6000808335601e198436030181126112b457600080fd5b8301803591506001600160401b038211156112ce57600080fd5b602001915036819003821315610ee557600080fd5b8481526001600160a01b038416602082015260606040820181905260009061130e90830184866110e7565b9695505050505050565b60005b8381101561133357818101518382015260200161131b565b50506000910152565b600082516111d8818460208701611318565b602081526000825180602084015261136d816040850160208701611318565b601f01601f19169190910160400192915050565b85815260606020820152600061139b6060830186886110e7565b82810360408401526113ae8185876110e7565b98975050505050505050565b6000602082840312156113cc57600080fd5b81518015158114610da257600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f12de4c572934572c3dae6184bcfe87730e8a0938ba1504547710fd27554218264736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100e05760003560e01c80639017c127116100875780639017c127146101de578063947287cf146101f157806397e5230d146101fa578063ad240c2a14610204578063c59a18f71461020d578063c6df461714610220578063e0563ab114610233578063eb70ef441461023c57600080fd5b8063196f1b2d146100e557806323e281cf1461010b578063284017f5146101145780633b878c221461013557806349ce89971461013e57806350d5b95b1461018857806351351d531461019d578063544c5e0f146101ab575b600080fd5b6100f86100f3366004610e88565b610271565b6040519081526020015b60405180910390f35b6100f860325481565b61011d61202081565b6040516001600160a01b039091168152602001610102565b61011d61101081565b61016d61014c366004610e88565b60356020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61019b610196366004610eec565b6102f0565b005b61011d6002600160a01b0381565b6101ce6101b9366004610e88565b60346020526000908152604090205460ff1681565b6040519015158152602001610102565b61019b6101ec366004610f5b565b6103b7565b6100f861520881565b6100f8620249f081565b6100f860335481565b6100f861021b366004610e88565b610557565b61019b61022e366004611007565b610578565b61011d61203081565b61024f61024a366004610e88565b61075c565b6040805182518152602080840151908201529181015190820152606001610102565b60008060358161028260368661081f565b81526020810191909152604001600020600201549050806102ea5760405162461bcd60e51b815260206004820152601d60248201527f537461746552656365697665723a204e4f5f524f4f545f464f525f494400000060448201526064015b60405180910390fd5b92915050565b60006102fc823561075c565b805190915061036c906103109084356110a5565b8251602084015161032191906110a5565b61032c9060016110b8565b83604001518787876040516020016103449190611110565b604051602081830303815290604052805190602001206108cc9095949392919063ffffffff16565b6103a85760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa82927a7a360991b60448201526064016102e1565b6103b182610a68565b50505050565b8281811461041a5760405162461bcd60e51b815260206004820152602a60248201527f537461746552656365697665723a20554e4d4154434845445f4c454e4754485f604482015269504152414d455445525360b01b60648201526084016102e1565b60005b8181101561054f57600061045485858481811061043c5761043c6111ac565b905060200281019061044e91906111c2565b3561075c565b905060006105088260000151878786818110610472576104726111ac565b905060200281019061048491906111c2565b61048f9190356110a5565b835160208501516104a091906110a5565b6104ab9060016110b8565b84604001518b8b888181106104c2576104c26111ac565b90506020028101906104d491906111e2565b8b8b8a8181106104e6576104e66111ac565b90506020028101906104f891906111c2565b6040516020016103449190611110565b90508061051957505060010161041d565b61054586868581811061052e5761052e6111ac565b905060200281019061054091906111c2565b610a68565b505060010161041d565b505050505050565b6036818154811061056757600080fd5b600091825260209091200154905081565b336002600160a01b03146105bc5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016102e1565b6033546105ca9060016110b8565b85351461060c5760405162461bcd60e51b815260206004820152601060248201526f1253959053125117d4d510549517d25160821b60448201526064016102e1565b8435602086013510156106525760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d1539117d25160921b60448201526064016102e1565b60408051863560208083019190915287013581830152908601356060820152610697906080016040516020818303038152906040528051906020012085858585610c83565b603280548691603591600091826106ad8361122b565b90915550815260208082019290925260409081016000208335815591830135600183015582013560028201555050603680546001810182556000919091526020868101357f4a11f94e20a93c79f6ec743a1954ec4fc2c08429ae2122118bf234b2185c81b89092018290556033829055604080519088013581528735917f11efd893530b26afc66d488ff54cb15df117cb6e0e4a08c6dcb166d766c3bf3b910160405180910390a35050505050565b604080516060810182526000808252602082018190529181018290529061078460368461081f565b60365490915081036107e45760405162461bcd60e51b815260206004820152602360248201527f537461746552656365697665723a204e4f5f434f4d4d49544d454e545f464f5260448201526217d25160ea1b60648201526084016102e1565b600090815260356020908152604091829020825160608101845281548152600182015492810192909252600201549181019190915292915050565b81546000908103610832575060006102ea565b82546000905b8082101561087f57600061084c8383610d87565b6000878152602090209091508590820154111561086b57809150610879565b6108768160016110b8565b92505b50610838565b6000821180156108ab5750836108a88661089a6001866110a5565b600091825260209091200190565b54145b156108c4576108bb6001836110a5565b925050506102ea565b509392505050565b6000816108da866001610da9565b811461091f5760405162461bcd60e51b81526020600482015260146024820152730929cac82989288bea0a49e9e8cbe988a9c8ea8960631b60448201526064016102e1565b8587106109635760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016102e1565b8761099f5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016102e1565b8760005b82811015610a595760008686838181106109bf576109bf6111ac565b90506020020135905060028a6109d5919061125a565b600003610a0d576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a3a565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a4560028b61126e565b99505080610a529061122b565b90506109a3565b50909414979650505050505050565b803560009081526034602052604090205460ff1615610ad85760405162461bcd60e51b815260206004820152602660248201527f537461746552656365697665723a2053544154455f53594e435f49535f50524f60448201526510d154d4d15160d21b60648201526084016102e1565b610ae86060820160408301611282565b6001600160a01b03163b600003610b3c576040805160208082526000908201819052918335917f31c652130602f3ce96ceaf8a4c2b8b49f049166c6fcf2eb31943a75ec7c936ae910160405180910390a350565b8035600090815260346020526040808220805460ff191660011790558190610b6a9060608501908501611282565b6001600160a01b03168335610b856040860160208701611282565b610b92606087018761129d565b604051602401610ba594939291906112e3565b60408051601f198184030181529181526020820180516001600160e01b031663eeb4994560e01b17905251610bda919061133c565b6000604051808303816000865af19150503d8060008114610c17576040519150601f19603f3d011682016040523d82523d6000602084013e610c1c565b606091505b509150915081610c3f5782356000908152603460205260409020805460ff191690555b81151583600001357f31c652130602f3ce96ceaf8a4c2b8b49f049166c6fcf2eb31943a75ec7c936ae83604051610c76919061134e565b60405180910390a3505050565b6000806120306001600160a01b0316620249f08888888888604051602001610caf959493929190611381565b60408051601f1981840301815290829052610cc99161133c565b6000604051808303818686fa925050503d8060008114610d05576040519150601f19603f3d011682016040523d82523d6000602084013e610d0a565b606091505b5091509150600081806020019051810190610d2591906113ba565b9050828015610d315750805b610d7d5760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016102e1565b5050505050505050565b6000610d96600284841861126e565b610da2908484166110b8565b9392505050565b600080610db584610df4565b90506001836002811115610dcb57610dcb6113dc565b148015610ddb575083816001901b105b610de6576000610de9565b60015b60ff16019392505050565b600080608083901c15610e0957608092831c92015b604083901c15610e1b57604092831c92015b602083901c15610e2d57602092831c92015b601083901c15610e3f57601092831c92015b600883901c15610e5157600892831c92015b600483901c15610e6357600492831c92015b600283901c15610e7557600292831c92015b600183901c156102ea5760010192915050565b600060208284031215610e9a57600080fd5b5035919050565b60008083601f840112610eb357600080fd5b5081356001600160401b03811115610eca57600080fd5b6020830191508360208260051b8501011115610ee557600080fd5b9250929050565b600080600060408486031215610f0157600080fd5b83356001600160401b0380821115610f1857600080fd5b610f2487838801610ea1565b90955093506020860135915080821115610f3d57600080fd5b50840160808187031215610f5057600080fd5b809150509250925092565b60008060008060408587031215610f7157600080fd5b84356001600160401b0380821115610f8857600080fd5b610f9488838901610ea1565b90965094506020870135915080821115610fad57600080fd5b50610fba87828801610ea1565b95989497509550505050565b60008083601f840112610fd857600080fd5b5081356001600160401b03811115610fef57600080fd5b602083019150836020828501011115610ee557600080fd5b600080600080600085870360a081121561102057600080fd5b606081121561102e57600080fd5b5085945060608601356001600160401b038082111561104c57600080fd5b61105889838a01610fc6565b9096509450608088013591508082111561107157600080fd5b5061107e88828901610fc6565b969995985093965092949392505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156102ea576102ea61108f565b808201808211156102ea576102ea61108f565b80356001600160a01b03811681146110e257600080fd5b919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152813560208201526000611129602084016110cb565b60018060a01b03808216604085015280611145604087016110cb565b16606085015250506060830135601e1984360301811261116457600080fd5b83016020810190356001600160401b0381111561118057600080fd5b80360382131561118f57600080fd5b6080808501526111a360a0850182846110e7565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e198336030181126111d857600080fd5b9190910192915050565b6000808335601e198436030181126111f957600080fd5b8301803591506001600160401b0382111561121357600080fd5b6020019150600581901b3603821315610ee557600080fd5b60006001820161123d5761123d61108f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261126957611269611244565b500690565b60008261127d5761127d611244565b500490565b60006020828403121561129457600080fd5b610da2826110cb565b6000808335601e198436030181126112b457600080fd5b8301803591506001600160401b038211156112ce57600080fd5b602001915036819003821315610ee557600080fd5b8481526001600160a01b038416602082015260606040820181905260009061130e90830184866110e7565b9695505050505050565b60005b8381101561133357818101518382015260200161131b565b50506000910152565b600082516111d8818460208701611318565b602081526000825180602084015261136d816040850160208701611318565b601f01601f19169190910160400192915050565b85815260606020820152600061139b6060830186886110e7565b82810360408401526113ae8185876110e7565b98975050505050505050565b6000602082840312156113cc57600080fd5b81518015158114610da257600080fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f12de4c572934572c3dae6184bcfe87730e8a0938ba1504547710fd27554218264736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var NativeERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"NativeERC20\",\n \"sourceName\": \"contracts/child/NativeERC20.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"predicate_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506111c3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b85780639dc29fac1161007c5780639dc29fac14610278578063a457c2d71461028b578063a9059cbb1461029e578063dd62ed3e146102b1578063e0563ab1146102c4578063e6198705146102cd57600080fd5b806370a082311461022d5780638420ce9914610248578063947287cf1461025d57806395d89b411461026657806397e5230d1461026e57600080fd5b8063284017f51161010a578063284017f5146101d2578063313ce567146101db57806339509351146101f05780633b878c221461020357806340c10f191461020c57806351351d531461021f57600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd146101885780631f2d00651461019a57806323b872dd146101bf575b600080fd5b61014f6102de565b60405161015c9190610cfd565b60405180910390f35b610178610173366004610d4c565b610370565b604051901515815260200161015c565b6034545b60405190815260200161015c565b6036546001600160a01b03165b6040516001600160a01b03909116815260200161015c565b6101786101cd366004610d76565b61038a565b6101a761202081565b60395460405160ff909116815260200161015c565b6101786101fe366004610d4c565b6103ae565b6101a761101081565b61017861021a366004610d4c565b6103d0565b6101a76002600160a01b0381565b61018c61023b366004610db2565b6001600160a01b03163190565b61025b610256366004610e1d565b610419565b005b61018c61520881565b61014f6105c8565b61018c620249f081565b610178610286366004610d4c565b6105d7565b610178610299366004610d4c565b61060e565b6101786102ac366004610d4c565b610689565b61018c6102bf366004610ec8565b610697565b6101a761203081565b6035546001600160a01b03166101a7565b6060603780546102ed90610efb565b80601f016020809104026020016040519081016040528092919081815260200182805461031990610efb565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b5050505050905090565b60003361037e8185856106c2565b60019150505b92915050565b6000336103988582856107e6565b6103a3858585610860565b506001949350505050565b60003361037e8185856103c18383610697565b6103cb9190610f4b565b6106c2565b6035546000906001600160a01b031633146104065760405162461bcd60e51b81526004016103fd90610f5e565b60405180910390fd5b6104108383610a25565b50600192915050565b600054610100900460ff16158080156104395750600054600160ff909116105b806104535750303b158015610453575060005460ff166001145b6104b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103fd565b6000805460ff1916600117905580156104d9576000805461ff0019166101001790555b336002600160a01b031461051d5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103fd565b603580546001600160a01b03808b166001600160a01b03199283161790925560368054928a1692909116919091179055603761055a868883611007565b506038610568848683611007565b506039805460ff191660ff841617905580156105be576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6060603880546102ed90610efb565b6035546000906001600160a01b031633146106045760405162461bcd60e51b81526004016103fd90610f5e565b6104108383610b7f565b6000338161061c8286610697565b90508381101561067c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103fd565b6103a382868684036106c2565b60003361037e818585610860565b6001600160a01b03918216600090815260336020908152604080832093909416825291909152205490565b6001600160a01b0383166107245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fd565b6001600160a01b0382166107855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fd565b6001600160a01b0383811660008181526033602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107f28484610697565b9050600019811461085a578181101561084d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103fd565b61085a84848484036106c2565b50505050565b6001600160a01b0383166108c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fd565b6001600160a01b0382166109265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fd565b6000806120206001600160a01b031685858560405160200161094a939291906110c8565b60408051601f1981840301815290829052610964916110ec565b6000604051808303816000865af19150503d80600081146109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b50915091508180156109c75750808060200190518101906109c79190611108565b6109e35760405162461bcd60e51b81526004016103fd9061112a565b836001600160a01b0316856001600160a01b031660008051602061116e83398151915285604051610a1691815260200190565b60405180910390a35050505050565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103fd565b8060346000828254610a8d9190610f4b565b9091555050604051600090819061202090610ab0908390879087906020016110c8565b60408051601f1981840301815290829052610aca916110ec565b6000604051808303816000865af19150503d8060008114610b07576040519150601f19603f3d011682016040523d82523d6000602084013e610b0c565b606091505b5091509150818015610b2d575080806020019051810190610b2d9190611108565b610b495760405162461bcd60e51b81526004016103fd9061112a565b6040518381526001600160a01b0385169060009060008051602061116e833981519152906020015b60405180910390a350505050565b6001600160a01b038216610bdf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103fd565b8060346000828254610bf1919061115a565b9091555050604051600090819061202090610c14908690849087906020016110c8565b60408051601f1981840301815290829052610c2e916110ec565b6000604051808303816000865af19150503d8060008114610c6b576040519150601f19603f3d011682016040523d82523d6000602084013e610c70565b606091505b5091509150818015610c91575080806020019051810190610c919190611108565b610cad5760405162461bcd60e51b81526004016103fd9061112a565b6040518381526000906001600160a01b0386169060008051602061116e83398151915290602001610b71565b60005b83811015610cf4578181015183820152602001610cdc565b50506000910152565b6020815260008251806020840152610d1c816040850160208701610cd9565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b610dcd82610d30565b9392505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b602083019150836020828501011115610e1657600080fd5b9250929050565b600080600080600080600060a0888a031215610e3857600080fd5b610e4188610d30565b9650610e4f60208901610d30565b9550604088013567ffffffffffffffff80821115610e6c57600080fd5b610e788b838c01610dd4565b909750955060608a0135915080821115610e9157600080fd5b50610e9e8a828b01610dd4565b909450925050608088013560ff81168114610eb857600080fd5b8091505092959891949750929550565b60008060408385031215610edb57600080fd5b610ee483610d30565b9150610ef260208401610d30565b90509250929050565b600181811c90821680610f0f57607f821691505b602082108103610f2f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561038457610384610f35565b60208082526024908201527f4e617469766545524332303a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561100257600081815260208120601f850160051c81016020861015610fdf5750805b601f850160051c820191505b81811015610ffe57828155600101610feb565b5050505b505050565b67ffffffffffffffff83111561101f5761101f610fa2565b6110338361102d8354610efb565b83610fb8565b6000601f841160018114611067576000851561104f5750838201355b600019600387901b1c1916600186901b1783556110c1565b600083815260209020601f19861690835b828110156110985786850135825560209485019460019092019101611078565b50868210156110b55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516110fe818460208701610cd9565b9190910192915050565b60006020828403121561111a57600080fd5b81518015158114610dcd57600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b8181038181111561038457610384610f3556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201cc2b3ea246b46198f0ff59b53d69a9ac96c47a287d6ed78414118383506ad4264736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b85780639dc29fac1161007c5780639dc29fac14610278578063a457c2d71461028b578063a9059cbb1461029e578063dd62ed3e146102b1578063e0563ab1146102c4578063e6198705146102cd57600080fd5b806370a082311461022d5780638420ce9914610248578063947287cf1461025d57806395d89b411461026657806397e5230d1461026e57600080fd5b8063284017f51161010a578063284017f5146101d2578063313ce567146101db57806339509351146101f05780633b878c221461020357806340c10f191461020c57806351351d531461021f57600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd146101885780631f2d00651461019a57806323b872dd146101bf575b600080fd5b61014f6102de565b60405161015c9190610cfd565b60405180910390f35b610178610173366004610d4c565b610370565b604051901515815260200161015c565b6034545b60405190815260200161015c565b6036546001600160a01b03165b6040516001600160a01b03909116815260200161015c565b6101786101cd366004610d76565b61038a565b6101a761202081565b60395460405160ff909116815260200161015c565b6101786101fe366004610d4c565b6103ae565b6101a761101081565b61017861021a366004610d4c565b6103d0565b6101a76002600160a01b0381565b61018c61023b366004610db2565b6001600160a01b03163190565b61025b610256366004610e1d565b610419565b005b61018c61520881565b61014f6105c8565b61018c620249f081565b610178610286366004610d4c565b6105d7565b610178610299366004610d4c565b61060e565b6101786102ac366004610d4c565b610689565b61018c6102bf366004610ec8565b610697565b6101a761203081565b6035546001600160a01b03166101a7565b6060603780546102ed90610efb565b80601f016020809104026020016040519081016040528092919081815260200182805461031990610efb565b80156103665780601f1061033b57610100808354040283529160200191610366565b820191906000526020600020905b81548152906001019060200180831161034957829003601f168201915b5050505050905090565b60003361037e8185856106c2565b60019150505b92915050565b6000336103988582856107e6565b6103a3858585610860565b506001949350505050565b60003361037e8185856103c18383610697565b6103cb9190610f4b565b6106c2565b6035546000906001600160a01b031633146104065760405162461bcd60e51b81526004016103fd90610f5e565b60405180910390fd5b6104108383610a25565b50600192915050565b600054610100900460ff16158080156104395750600054600160ff909116105b806104535750303b158015610453575060005460ff166001145b6104b65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103fd565b6000805460ff1916600117905580156104d9576000805461ff0019166101001790555b336002600160a01b031461051d5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103fd565b603580546001600160a01b03808b166001600160a01b03199283161790925560368054928a1692909116919091179055603761055a868883611007565b506038610568848683611007565b506039805460ff191660ff841617905580156105be576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6060603880546102ed90610efb565b6035546000906001600160a01b031633146106045760405162461bcd60e51b81526004016103fd90610f5e565b6104108383610b7f565b6000338161061c8286610697565b90508381101561067c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103fd565b6103a382868684036106c2565b60003361037e818585610860565b6001600160a01b03918216600090815260336020908152604080832093909416825291909152205490565b6001600160a01b0383166107245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fd565b6001600160a01b0382166107855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fd565b6001600160a01b0383811660008181526033602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006107f28484610697565b9050600019811461085a578181101561084d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103fd565b61085a84848484036106c2565b50505050565b6001600160a01b0383166108c45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fd565b6001600160a01b0382166109265760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fd565b6000806120206001600160a01b031685858560405160200161094a939291906110c8565b60408051601f1981840301815290829052610964916110ec565b6000604051808303816000865af19150503d80600081146109a1576040519150601f19603f3d011682016040523d82523d6000602084013e6109a6565b606091505b50915091508180156109c75750808060200190518101906109c79190611108565b6109e35760405162461bcd60e51b81526004016103fd9061112a565b836001600160a01b0316856001600160a01b031660008051602061116e83398151915285604051610a1691815260200190565b60405180910390a35050505050565b6001600160a01b038216610a7b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103fd565b8060346000828254610a8d9190610f4b565b9091555050604051600090819061202090610ab0908390879087906020016110c8565b60408051601f1981840301815290829052610aca916110ec565b6000604051808303816000865af19150503d8060008114610b07576040519150601f19603f3d011682016040523d82523d6000602084013e610b0c565b606091505b5091509150818015610b2d575080806020019051810190610b2d9190611108565b610b495760405162461bcd60e51b81526004016103fd9061112a565b6040518381526001600160a01b0385169060009060008051602061116e833981519152906020015b60405180910390a350505050565b6001600160a01b038216610bdf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103fd565b8060346000828254610bf1919061115a565b9091555050604051600090819061202090610c14908690849087906020016110c8565b60408051601f1981840301815290829052610c2e916110ec565b6000604051808303816000865af19150503d8060008114610c6b576040519150601f19603f3d011682016040523d82523d6000602084013e610c70565b606091505b5091509150818015610c91575080806020019051810190610c919190611108565b610cad5760405162461bcd60e51b81526004016103fd9061112a565b6040518381526000906001600160a01b0386169060008051602061116e83398151915290602001610b71565b60005b83811015610cf4578181015183820152602001610cdc565b50506000910152565b6020815260008251806020840152610d1c816040850160208701610cd9565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b9150604084013590509250925092565b600060208284031215610dc457600080fd5b610dcd82610d30565b9392505050565b60008083601f840112610de657600080fd5b50813567ffffffffffffffff811115610dfe57600080fd5b602083019150836020828501011115610e1657600080fd5b9250929050565b600080600080600080600060a0888a031215610e3857600080fd5b610e4188610d30565b9650610e4f60208901610d30565b9550604088013567ffffffffffffffff80821115610e6c57600080fd5b610e788b838c01610dd4565b909750955060608a0135915080821115610e9157600080fd5b50610e9e8a828b01610dd4565b909450925050608088013560ff81168114610eb857600080fd5b8091505092959891949750929550565b60008060408385031215610edb57600080fd5b610ee483610d30565b9150610ef260208401610d30565b90509250929050565b600181811c90821680610f0f57607f821691505b602082108103610f2f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561038457610384610f35565b60208082526024908201527f4e617469766545524332303a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561100257600081815260208120601f850160051c81016020861015610fdf5750805b601f850160051c820191505b81811015610ffe57828155600101610feb565b5050505b505050565b67ffffffffffffffff83111561101f5761101f610fa2565b6110338361102d8354610efb565b83610fb8565b6000601f841160018114611067576000851561104f5750838201355b600019600387901b1c1916600186901b1783556110c1565b600083815260209020601f19861690835b828110156110985786850135825560209485019460019092019101611078565b50868210156110b55760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516110fe818460208701610cd9565b9190910192915050565b60006020828403121561111a57600080fd5b81518015158114610dcd57600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b8181038181111561038457610384610f3556feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201cc2b3ea246b46198f0ff59b53d69a9ac96c47a287d6ed78414118383506ad4264736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var NativeERC20MintableArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"NativeERC20Mintable\",\n \"sourceName\": \"contracts/child/NativeERC20Mintable.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"predicate_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b5061001a3361001f565b610098565b603480546001600160a01b031916905561004381610046602090811b6108ce17901c565b50565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6114ad806100a76000396000f3fe608060405234801561001057600080fd5b50600436106101795760003560e01c8063715018a6116100d9578063a457c2d711610087578063a457c2d7146102e3578063a9059cbb146102f6578063dd62ed3e14610309578063e0563ab11461031c578063e30c397814610325578063e619870514610336578063f2fde38b1461034757600080fd5b8063715018a61461029457806379ba50971461029c5780638da5cb5b146102a4578063947287cf146102b557806395d89b41146102be57806397e5230d146102c65780639dc29fac146102d057600080fd5b8063284017f511610136578063284017f51461021e578063313ce56714610227578063395093511461023c5780633b878c221461024f57806340c10f191461025857806351351d531461026b57806370a082311461027957600080fd5b806306fdde031461017e578063095ea7b31461019c57806318160ddd146101bf5780631f2d0065146101d1578063238b4bc5146101f657806323b872dd1461020b575b600080fd5b61018661035a565b6040516101939190610fce565b60405180910390f35b6101af6101aa36600461101d565b6103ec565b6040519015158152602001610193565b6036545b604051908152602001610193565b6038546001600160a01b03165b6040516001600160a01b039091168152602001610193565b610209610204366004611090565b610406565b005b6101af61021936600461114b565b610625565b6101de61202081565b603b5460405160ff9091168152602001610193565b6101af61024a36600461101d565b610649565b6101de61101081565b6101af61026636600461101d565b61066b565b6101de6002600160a01b0381565b6101c3610287366004611187565b6001600160a01b03163190565b6102096106c0565b6102096106d4565b6033546001600160a01b03166101de565b6101c361520881565b61018661074e565b6101c3620249f081565b6101af6102de36600461101d565b61075d565b6101af6102f136600461101d565b6107a9565b6101af61030436600461101d565b610824565b6101c36103173660046111a9565b610832565b6101de61203081565b6034546001600160a01b03166101de565b6037546001600160a01b03166101de565b610209610355366004611187565b61085d565b606060398054610369906111dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610395906111dc565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b5050505050905090565b6000336103fa818585610920565b60019150505b92915050565b600054610100900460ff16158080156104265750600054600160ff909116105b806104405750303b158015610440575060005460ff166001145b6104a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156104cb576000805461ff0019166101001790555b336002600160a01b031461050f5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b604482015260640161049f565b6001600160a01b0388166105705760405162461bcd60e51b815260206004820152602260248201527f4e617469766545524332303a20496e76616c6964206f776e6572206164647265604482015261737360f01b606482015260840161049f565b603780546001600160a01b03808c166001600160a01b03199283161790925560388054928a169290911691909117905560396105ad86888361127b565b50603a6105bb84868361127b565b50603b805460ff191660ff84161790556105d488610a44565b801561061a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b600033610633858285610a5d565b61063e858585610ad7565b506001949350505050565b6000336103fa81858561065c8383610832565b6106669190611352565b610920565b6037546000906001600160a01b031633148061069157506033546001600160a01b031633145b6106ad5760405162461bcd60e51b815260040161049f90611365565b6106b78383610c9c565b50600192915050565b6106c8610df6565b6106d26000610a44565b565b60345433906001600160a01b031681146107425760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161049f565b61074b81610a44565b50565b6060603a8054610369906111dc565b6037546000906001600160a01b031633148061078357506033546001600160a01b031633145b61079f5760405162461bcd60e51b815260040161049f90611365565b6106b78383610e50565b600033816107b78286610832565b9050838110156108175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161049f565b61063e8286868403610920565b6000336103fa818585610ad7565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b610865610df6565b603480546001600160a01b0383166001600160a01b031990911681179091556108966033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b0383811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b603480546001600160a01b031916905561074b816108ce565b6000610a698484610832565b90506000198114610ad15781811015610ac45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161049f565b610ad18484848403610920565b50505050565b6001600160a01b038316610b3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049f565b6001600160a01b038216610b9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049f565b6000806120206001600160a01b0316858585604051602001610bc1939291906113b2565b60408051601f1981840301815290829052610bdb916113d6565b6000604051808303816000865af19150503d8060008114610c18576040519150601f19603f3d011682016040523d82523d6000602084013e610c1d565b606091505b5091509150818015610c3e575080806020019051810190610c3e91906113f2565b610c5a5760405162461bcd60e51b815260040161049f90611414565b836001600160a01b0316856001600160a01b031660008051602061145883398151915285604051610c8d91815260200190565b60405180910390a35050505050565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161049f565b8060366000828254610d049190611352565b9091555050604051600090819061202090610d27908390879087906020016113b2565b60408051601f1981840301815290829052610d41916113d6565b6000604051808303816000865af19150503d8060008114610d7e576040519150601f19603f3d011682016040523d82523d6000602084013e610d83565b606091505b5091509150818015610da4575080806020019051810190610da491906113f2565b610dc05760405162461bcd60e51b815260040161049f90611414565b6040518381526001600160a01b03851690600090600080516020611458833981519152906020015b60405180910390a350505050565b6033546001600160a01b031633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049f565b6001600160a01b038216610eb05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161049f565b8060366000828254610ec29190611444565b9091555050604051600090819061202090610ee5908690849087906020016113b2565b60408051601f1981840301815290829052610eff916113d6565b6000604051808303816000865af19150503d8060008114610f3c576040519150601f19603f3d011682016040523d82523d6000602084013e610f41565b606091505b5091509150818015610f62575080806020019051810190610f6291906113f2565b610f7e5760405162461bcd60e51b815260040161049f90611414565b6040518381526000906001600160a01b0386169060008051602061145883398151915290602001610de8565b60005b83811015610fc5578181015183820152602001610fad565b50506000910152565b6020815260008251806020840152610fed816040850160208701610faa565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461101857600080fd5b919050565b6000806040838503121561103057600080fd5b61103983611001565b946020939093013593505050565b60008083601f84011261105957600080fd5b50813567ffffffffffffffff81111561107157600080fd5b60208301915083602082850101111561108957600080fd5b9250929050565b60008060008060008060008060c0898b0312156110ac57600080fd5b6110b589611001565b97506110c360208a01611001565b96506110d160408a01611001565b9550606089013567ffffffffffffffff808211156110ee57600080fd5b6110fa8c838d01611047565b909750955060808b013591508082111561111357600080fd5b506111208b828c01611047565b90945092505060a089013560ff8116811461113a57600080fd5b809150509295985092959890939650565b60008060006060848603121561116057600080fd5b61116984611001565b925061117760208501611001565b9150604084013590509250925092565b60006020828403121561119957600080fd5b6111a282611001565b9392505050565b600080604083850312156111bc57600080fd5b6111c583611001565b91506111d360208401611001565b90509250929050565b600181811c908216806111f057607f821691505b60208210810361121057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561127657600081815260208120601f850160051c810160208610156112535750805b601f850160051c820191505b818110156112725782815560010161125f565b5050505b505050565b67ffffffffffffffff83111561129357611293611216565b6112a7836112a183546111dc565b8361122c565b6000601f8411600181146112db57600085156112c35750838201355b600019600387901b1c1916600186901b178355611335565b600083815260209020601f19861690835b8281101561130c57868501358255602094850194600190920191016112ec565b50868210156113295760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104005761040061133c565b6020808252602d908201527f4e617469766545524332303a204f6e6c7920707265646963617465206f72206f60408201526c1ddb995c8818d85b8818d85b1b609a1b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516113e8818460208701610faa565b9190910192915050565b60006020828403121561140457600080fd5b815180151581146111a257600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b818103818111156104005761040061133c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209be318415f88ce7ef3eb3e9be7eed0fb2e93811e73c7b0d5b1fd4e46144f210d64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101795760003560e01c8063715018a6116100d9578063a457c2d711610087578063a457c2d7146102e3578063a9059cbb146102f6578063dd62ed3e14610309578063e0563ab11461031c578063e30c397814610325578063e619870514610336578063f2fde38b1461034757600080fd5b8063715018a61461029457806379ba50971461029c5780638da5cb5b146102a4578063947287cf146102b557806395d89b41146102be57806397e5230d146102c65780639dc29fac146102d057600080fd5b8063284017f511610136578063284017f51461021e578063313ce56714610227578063395093511461023c5780633b878c221461024f57806340c10f191461025857806351351d531461026b57806370a082311461027957600080fd5b806306fdde031461017e578063095ea7b31461019c57806318160ddd146101bf5780631f2d0065146101d1578063238b4bc5146101f657806323b872dd1461020b575b600080fd5b61018661035a565b6040516101939190610fce565b60405180910390f35b6101af6101aa36600461101d565b6103ec565b6040519015158152602001610193565b6036545b604051908152602001610193565b6038546001600160a01b03165b6040516001600160a01b039091168152602001610193565b610209610204366004611090565b610406565b005b6101af61021936600461114b565b610625565b6101de61202081565b603b5460405160ff9091168152602001610193565b6101af61024a36600461101d565b610649565b6101de61101081565b6101af61026636600461101d565b61066b565b6101de6002600160a01b0381565b6101c3610287366004611187565b6001600160a01b03163190565b6102096106c0565b6102096106d4565b6033546001600160a01b03166101de565b6101c361520881565b61018661074e565b6101c3620249f081565b6101af6102de36600461101d565b61075d565b6101af6102f136600461101d565b6107a9565b6101af61030436600461101d565b610824565b6101c36103173660046111a9565b610832565b6101de61203081565b6034546001600160a01b03166101de565b6037546001600160a01b03166101de565b610209610355366004611187565b61085d565b606060398054610369906111dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610395906111dc565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b5050505050905090565b6000336103fa818585610920565b60019150505b92915050565b600054610100900460ff16158080156104265750600054600160ff909116105b806104405750303b158015610440575060005460ff166001145b6104a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156104cb576000805461ff0019166101001790555b336002600160a01b031461050f5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b604482015260640161049f565b6001600160a01b0388166105705760405162461bcd60e51b815260206004820152602260248201527f4e617469766545524332303a20496e76616c6964206f776e6572206164647265604482015261737360f01b606482015260840161049f565b603780546001600160a01b03808c166001600160a01b03199283161790925560388054928a169290911691909117905560396105ad86888361127b565b50603a6105bb84868361127b565b50603b805460ff191660ff84161790556105d488610a44565b801561061a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b600033610633858285610a5d565b61063e858585610ad7565b506001949350505050565b6000336103fa81858561065c8383610832565b6106669190611352565b610920565b6037546000906001600160a01b031633148061069157506033546001600160a01b031633145b6106ad5760405162461bcd60e51b815260040161049f90611365565b6106b78383610c9c565b50600192915050565b6106c8610df6565b6106d26000610a44565b565b60345433906001600160a01b031681146107425760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161049f565b61074b81610a44565b50565b6060603a8054610369906111dc565b6037546000906001600160a01b031633148061078357506033546001600160a01b031633145b61079f5760405162461bcd60e51b815260040161049f90611365565b6106b78383610e50565b600033816107b78286610832565b9050838110156108175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161049f565b61063e8286868403610920565b6000336103fa818585610ad7565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b610865610df6565b603480546001600160a01b0383166001600160a01b031990911681179091556108966033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b0383811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b603480546001600160a01b031916905561074b816108ce565b6000610a698484610832565b90506000198114610ad15781811015610ac45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161049f565b610ad18484848403610920565b50505050565b6001600160a01b038316610b3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049f565b6001600160a01b038216610b9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049f565b6000806120206001600160a01b0316858585604051602001610bc1939291906113b2565b60408051601f1981840301815290829052610bdb916113d6565b6000604051808303816000865af19150503d8060008114610c18576040519150601f19603f3d011682016040523d82523d6000602084013e610c1d565b606091505b5091509150818015610c3e575080806020019051810190610c3e91906113f2565b610c5a5760405162461bcd60e51b815260040161049f90611414565b836001600160a01b0316856001600160a01b031660008051602061145883398151915285604051610c8d91815260200190565b60405180910390a35050505050565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161049f565b8060366000828254610d049190611352565b9091555050604051600090819061202090610d27908390879087906020016113b2565b60408051601f1981840301815290829052610d41916113d6565b6000604051808303816000865af19150503d8060008114610d7e576040519150601f19603f3d011682016040523d82523d6000602084013e610d83565b606091505b5091509150818015610da4575080806020019051810190610da491906113f2565b610dc05760405162461bcd60e51b815260040161049f90611414565b6040518381526001600160a01b03851690600090600080516020611458833981519152906020015b60405180910390a350505050565b6033546001600160a01b031633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049f565b6001600160a01b038216610eb05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161049f565b8060366000828254610ec29190611444565b9091555050604051600090819061202090610ee5908690849087906020016113b2565b60408051601f1981840301815290829052610eff916113d6565b6000604051808303816000865af19150503d8060008114610f3c576040519150601f19603f3d011682016040523d82523d6000602084013e610f41565b606091505b5091509150818015610f62575080806020019051810190610f6291906113f2565b610f7e5760405162461bcd60e51b815260040161049f90611414565b6040518381526000906001600160a01b0386169060008051602061145883398151915290602001610de8565b60005b83811015610fc5578181015183820152602001610fad565b50506000910152565b6020815260008251806020840152610fed816040850160208701610faa565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461101857600080fd5b919050565b6000806040838503121561103057600080fd5b61103983611001565b946020939093013593505050565b60008083601f84011261105957600080fd5b50813567ffffffffffffffff81111561107157600080fd5b60208301915083602082850101111561108957600080fd5b9250929050565b60008060008060008060008060c0898b0312156110ac57600080fd5b6110b589611001565b97506110c360208a01611001565b96506110d160408a01611001565b9550606089013567ffffffffffffffff808211156110ee57600080fd5b6110fa8c838d01611047565b909750955060808b013591508082111561111357600080fd5b506111208b828c01611047565b90945092505060a089013560ff8116811461113a57600080fd5b809150509295985092959890939650565b60008060006060848603121561116057600080fd5b61116984611001565b925061117760208501611001565b9150604084013590509250925092565b60006020828403121561119957600080fd5b6111a282611001565b9392505050565b600080604083850312156111bc57600080fd5b6111c583611001565b91506111d360208401611001565b90509250929050565b600181811c908216806111f057607f821691505b60208210810361121057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561127657600081815260208120601f850160051c810160208610156112535750805b601f850160051c820191505b818110156112725782815560010161125f565b5050505b505050565b67ffffffffffffffff83111561129357611293611216565b6112a7836112a183546111dc565b8361122c565b6000601f8411600181146112db57600085156112c35750838201355b600019600387901b1c1916600186901b178355611335565b600083815260209020601f19861690835b8281101561130c57868501358255602094850194600190920191016112ec565b50868210156113295760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104005761040061133c565b6020808252602d908201527f4e617469766545524332303a204f6e6c7920707265646963617465206f72206f60408201526c1ddb995c8818d85b8818d85b1b609a1b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516113e8818460208701610faa565b9190910192915050565b60006020828403121561140457600080fd5b815180151581146111a257600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b818103818111156104005761040061133c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209be318415f88ce7ef3eb3e9be7eed0fb2e93811e73c7b0d5b1fd4e46144f210d64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var ChildERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC20\",\n \"sourceName\": \"contracts/child/ChildERC20.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"relayerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"MetaTransactionExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigR\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigS\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"sigV\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"executeMetaTransaction\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506118e3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d71461026b578063a9059cbb1461027e578063dd62ed3e14610291578063e6198705146102a4578063f6d2ee86146102b557600080fd5b806340c10f191461021457806370a082311461022757806395d89b41146102505780639dc29fac1461025857600080fd5b80631f2d0065116100e95780631f2d00651461018157806323b872dd146101a65780632d0335ab146101b9578063313ce567146101e2578063395093511461020157600080fd5b806306fdde031461011b578063095ea7b3146101395780630c53c51c1461015c57806318160ddd1461016f575b600080fd5b6101236102ca565b6040516101309190611371565b60405180910390f35b61014c6101473660046113a7565b61035c565b6040519015158152602001610130565b61012361016a36600461142b565b610380565b603c545b604051908152602001610130565b606d546001600160a01b03165b6040516001600160a01b039091168152602001610130565b61014c6101b43660046114a1565b610663565b6101736101c73660046114dd565b6001600160a01b031660009081526006602052604090205490565b606d54600160a01b900460ff1660405160ff9091168152602001610130565b61014c61020f3660046113a7565b610691565b61014c6102223660046113a7565b6106bd565b6101736102353660046114dd565b6001600160a01b03166000908152603a602052604090205490565b6101236106fd565b61014c6102663660046113a7565b61070c565b61014c6102793660046113a7565b610743565b61014c61028c3660046113a7565b6107c9565b61017361029f3660046114f8565b6107e1565b606c546001600160a01b031661018e565b6102c86102c336600461152b565b61080c565b005b6060603d80546102d9906115af565b80601f0160208091040260200160405190810160405280929190818152602001828054610305906115af565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b600080610367610a8c565b9050610374818585610a9b565b60019150505b92915050565b606060006103c387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bc092505050565b90506001600160e01b031960003581169082160361044e5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084015b60405180910390fd5b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104bf8982888888610bdb565b6105155760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610445565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161056a939291906115e9565b60408051601f19818403018152908290526105849161160f565b6000604051808303816000865af19150503d80600081146105c1576040519150601f19603f3d011682016040523d82523d6000602084013e6105c6565b606091505b5091509150816106185760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610445565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161064d949392919061162b565b60405180910390a19a9950505050505050505050565b60008061066e610a8c565b905061067b858285610cb7565b610686858585610d31565b506001949350505050565b60008061069c610a8c565b90506103748185856106ae85896107e1565b6106b89190611677565b610a9b565b606c546000906001600160a01b031633146106ea5760405162461bcd60e51b815260040161044590611698565b6106f48383610eca565b50600192915050565b6060603e80546102d9906115af565b606c546000906001600160a01b031633146107395760405162461bcd60e51b815260040161044590611698565b6106f48383610f7a565b60008061074e610a8c565b9050600061075c82866107e1565b9050838110156107bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610445565b6106868286868403610a9b565b6000806107d4610a8c565b9050610374818585610d31565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b600754610100900460ff161580801561082c5750600754600160ff909116105b806108465750303b158015610846575060075460ff166001145b6108a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610445565b6007805460ff1916600117905580156108cc576007805461ff0019166101001790555b6001600160a01b038716158015906108e357508415155b80156108ee57508215155b61093a5760405162461bcd60e51b815260206004820152601e60248201527f4368696c6445524332303a204241445f494e495449414c495a4154494f4e00006044820152606401610445565b606d805460ff8416600160a01b026001600160a81b03199091166001600160a01b038a1617179055606c80546001600160a01b03191633179055604080516020601f88018190048102820181019092528681526109e591889088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061109992505050565b610a3d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506110ca9050565b8015610a83576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610a96611136565b905090565b6001600160a01b038316610afd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610445565b6001600160a01b038216610b5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610445565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008151600003610bd357506000919050565b506020015190565b6000806001610bf1610bec88611192565b61120f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610c3f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c965760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610445565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000610cc384846107e1565b90506000198114610d2b5781811015610d1e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610445565b610d2b8484848403610a9b565b50505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b6001600160a01b0383166000908152603a602052604090205481811015610e6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610445565b6001600160a01b038085166000818152603a6020526040808220868603905592861680825290839020805486019055915160008051602061188e83398151915290610ebd9086815260200190565b60405180910390a3610d2b565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610445565b80603c6000828254610f329190611677565b90915550506001600160a01b0382166000818152603a602090815260408083208054860190555184815260008051602061188e833981519152910160405180910390a35b5050565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610445565b6001600160a01b0382166000908152603a60205260409020548181101561104e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610445565b6001600160a01b0383166000818152603a602090815260408083208686039055603c805487900390555185815291929160008051602061188e8339815191529101610bb3565b505050565b600754610100900460ff166110c05760405162461bcd60e51b8152600401610445906116db565b610f76828261125d565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61111881848461129d565b600055600280546001600160a01b0319163017905560055550505050565b600030330361118c57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061118f9050565b50335b90565b600060405180608001604052806043815260200161184b60439139805160209182012083518483015160408087015180519086012090516111f2950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037a61121c6112e6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600754610100900460ff166112845760405162461bcd60e51b8152600401610445906116db565b603d611290838261178a565b50603e611094828261178a565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611304575060015446145b15611310575060005490565b610a9660055460035460045461129d565b60005b8381101561133c578181015183820152602001611324565b50506000910152565b6000815180845261135d816020860160208601611321565b601f01601f19169290920160200192915050565b6020815260006113846020830184611345565b9392505050565b80356001600160a01b03811681146113a257600080fd5b919050565b600080604083850312156113ba57600080fd5b6113c38361138b565b946020939093013593505050565b60008083601f8401126113e357600080fd5b50813567ffffffffffffffff8111156113fb57600080fd5b60208301915083602082850101111561141357600080fd5b9250929050565b803560ff811681146113a257600080fd5b60008060008060008060a0878903121561144457600080fd5b61144d8761138b565b9550602087013567ffffffffffffffff81111561146957600080fd5b61147589828a016113d1565b90965094505060408701359250606087013591506114956080880161141a565b90509295509295509295565b6000806000606084860312156114b657600080fd5b6114bf8461138b565b92506114cd6020850161138b565b9150604084013590509250925092565b6000602082840312156114ef57600080fd5b6113848261138b565b6000806040838503121561150b57600080fd5b6115148361138b565b91506115226020840161138b565b90509250929050565b6000806000806000806080878903121561154457600080fd5b61154d8761138b565b9550602087013567ffffffffffffffff8082111561156a57600080fd5b6115768a838b016113d1565b9097509550604089013591508082111561158f57600080fd5b5061159c89828a016113d1565b909450925061149590506060880161141a565b600181811c908216806115c357607f821691505b6020821081036115e357634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611621818460208701611321565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b8082018082111561037a57634e487b7160e01b600052601160045260246000fd5b60208082526023908201527f4368696c6445524332303a204f6e6c79207072656469636174652063616e2063604082015262185b1b60ea1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561109457600081815260208120601f850160051c810160208610156117635750805b601f850160051c820191505b818110156117825782815560010161176f565b505050505050565b815167ffffffffffffffff8111156117a4576117a4611726565b6117b8816117b284546115af565b8461173c565b602080601f8311600181146117ed57600084156117d55750858301515b600019600386901b1c1916600185901b178555611782565b600085815260208120601f198616915b8281101561181c578886015182559484019460019091019084016117fd565b508582101561183a5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122006e7874e62afcc37d931c31b2d4bea5f12ba721af845c8552d4733d66d6dcbb064736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d71461026b578063a9059cbb1461027e578063dd62ed3e14610291578063e6198705146102a4578063f6d2ee86146102b557600080fd5b806340c10f191461021457806370a082311461022757806395d89b41146102505780639dc29fac1461025857600080fd5b80631f2d0065116100e95780631f2d00651461018157806323b872dd146101a65780632d0335ab146101b9578063313ce567146101e2578063395093511461020157600080fd5b806306fdde031461011b578063095ea7b3146101395780630c53c51c1461015c57806318160ddd1461016f575b600080fd5b6101236102ca565b6040516101309190611371565b60405180910390f35b61014c6101473660046113a7565b61035c565b6040519015158152602001610130565b61012361016a36600461142b565b610380565b603c545b604051908152602001610130565b606d546001600160a01b03165b6040516001600160a01b039091168152602001610130565b61014c6101b43660046114a1565b610663565b6101736101c73660046114dd565b6001600160a01b031660009081526006602052604090205490565b606d54600160a01b900460ff1660405160ff9091168152602001610130565b61014c61020f3660046113a7565b610691565b61014c6102223660046113a7565b6106bd565b6101736102353660046114dd565b6001600160a01b03166000908152603a602052604090205490565b6101236106fd565b61014c6102663660046113a7565b61070c565b61014c6102793660046113a7565b610743565b61014c61028c3660046113a7565b6107c9565b61017361029f3660046114f8565b6107e1565b606c546001600160a01b031661018e565b6102c86102c336600461152b565b61080c565b005b6060603d80546102d9906115af565b80601f0160208091040260200160405190810160405280929190818152602001828054610305906115af565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b600080610367610a8c565b9050610374818585610a9b565b60019150505b92915050565b606060006103c387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bc092505050565b90506001600160e01b031960003581169082160361044e5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084015b60405180910390fd5b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104bf8982888888610bdb565b6105155760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610445565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161056a939291906115e9565b60408051601f19818403018152908290526105849161160f565b6000604051808303816000865af19150503d80600081146105c1576040519150601f19603f3d011682016040523d82523d6000602084013e6105c6565b606091505b5091509150816106185760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610445565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161064d949392919061162b565b60405180910390a19a9950505050505050505050565b60008061066e610a8c565b905061067b858285610cb7565b610686858585610d31565b506001949350505050565b60008061069c610a8c565b90506103748185856106ae85896107e1565b6106b89190611677565b610a9b565b606c546000906001600160a01b031633146106ea5760405162461bcd60e51b815260040161044590611698565b6106f48383610eca565b50600192915050565b6060603e80546102d9906115af565b606c546000906001600160a01b031633146107395760405162461bcd60e51b815260040161044590611698565b6106f48383610f7a565b60008061074e610a8c565b9050600061075c82866107e1565b9050838110156107bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610445565b6106868286868403610a9b565b6000806107d4610a8c565b9050610374818585610d31565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b600754610100900460ff161580801561082c5750600754600160ff909116105b806108465750303b158015610846575060075460ff166001145b6108a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610445565b6007805460ff1916600117905580156108cc576007805461ff0019166101001790555b6001600160a01b038716158015906108e357508415155b80156108ee57508215155b61093a5760405162461bcd60e51b815260206004820152601e60248201527f4368696c6445524332303a204241445f494e495449414c495a4154494f4e00006044820152606401610445565b606d805460ff8416600160a01b026001600160a81b03199091166001600160a01b038a1617179055606c80546001600160a01b03191633179055604080516020601f88018190048102820181019092528681526109e591889088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061109992505050565b610a3d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506110ca9050565b8015610a83576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610a96611136565b905090565b6001600160a01b038316610afd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610445565b6001600160a01b038216610b5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610445565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008151600003610bd357506000919050565b506020015190565b6000806001610bf1610bec88611192565b61120f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610c3f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c965760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610445565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000610cc384846107e1565b90506000198114610d2b5781811015610d1e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610445565b610d2b8484848403610a9b565b50505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b6001600160a01b0383166000908152603a602052604090205481811015610e6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610445565b6001600160a01b038085166000818152603a6020526040808220868603905592861680825290839020805486019055915160008051602061188e83398151915290610ebd9086815260200190565b60405180910390a3610d2b565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610445565b80603c6000828254610f329190611677565b90915550506001600160a01b0382166000818152603a602090815260408083208054860190555184815260008051602061188e833981519152910160405180910390a35b5050565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610445565b6001600160a01b0382166000908152603a60205260409020548181101561104e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610445565b6001600160a01b0383166000818152603a602090815260408083208686039055603c805487900390555185815291929160008051602061188e8339815191529101610bb3565b505050565b600754610100900460ff166110c05760405162461bcd60e51b8152600401610445906116db565b610f76828261125d565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61111881848461129d565b600055600280546001600160a01b0319163017905560055550505050565b600030330361118c57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061118f9050565b50335b90565b600060405180608001604052806043815260200161184b60439139805160209182012083518483015160408087015180519086012090516111f2950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037a61121c6112e6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600754610100900460ff166112845760405162461bcd60e51b8152600401610445906116db565b603d611290838261178a565b50603e611094828261178a565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611304575060015446145b15611310575060005490565b610a9660055460035460045461129d565b60005b8381101561133c578181015183820152602001611324565b50506000910152565b6000815180845261135d816020860160208601611321565b601f01601f19169290920160200192915050565b6020815260006113846020830184611345565b9392505050565b80356001600160a01b03811681146113a257600080fd5b919050565b600080604083850312156113ba57600080fd5b6113c38361138b565b946020939093013593505050565b60008083601f8401126113e357600080fd5b50813567ffffffffffffffff8111156113fb57600080fd5b60208301915083602082850101111561141357600080fd5b9250929050565b803560ff811681146113a257600080fd5b60008060008060008060a0878903121561144457600080fd5b61144d8761138b565b9550602087013567ffffffffffffffff81111561146957600080fd5b61147589828a016113d1565b90965094505060408701359250606087013591506114956080880161141a565b90509295509295509295565b6000806000606084860312156114b657600080fd5b6114bf8461138b565b92506114cd6020850161138b565b9150604084013590509250925092565b6000602082840312156114ef57600080fd5b6113848261138b565b6000806040838503121561150b57600080fd5b6115148361138b565b91506115226020840161138b565b90509250929050565b6000806000806000806080878903121561154457600080fd5b61154d8761138b565b9550602087013567ffffffffffffffff8082111561156a57600080fd5b6115768a838b016113d1565b9097509550604089013591508082111561158f57600080fd5b5061159c89828a016113d1565b909450925061149590506060880161141a565b600181811c908216806115c357607f821691505b6020821081036115e357634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611621818460208701611321565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b8082018082111561037a57634e487b7160e01b600052601160045260246000fd5b60208082526023908201527f4368696c6445524332303a204f6e6c79207072656469636174652063616e2063604082015262185b1b60ea1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561109457600081815260208120601f850160051c810160208610156117635750805b601f850160051c820191505b818110156117825782815560010161176f565b505050505050565b815167ffffffffffffffff8111156117a4576117a4611726565b6117b8816117b284546115af565b8461173c565b602080601f8311600181146117ed57600084156117d55750858301515b600019600386901b1c1916600185901b178555611782565b600085815260208120601f198616915b8281101561181c578886015182559484019460019091019084016117fd565b508582101561183a5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122006e7874e62afcc37d931c31b2d4bea5f12ba721af845c8552d4733d66d6dcbb064736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var ChildERC20PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC20Predicate\",\n \"sourceName\": \"contracts/child/ChildERC20Predicate.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC20Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC20Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"L2TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newL2StateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newStateReceiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newRootERC20Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newNativeTokenRootAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"l2StateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onStateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootERC20Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateReceiver\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC20\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC20\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611490806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806397e5230d116100a2578063d41f177111610071578063d41f17711461023d578063e0563ab114610264578063eeb499451461026d578063f3fef3a314610280578063f64512551461029357600080fd5b806397e5230d146101e6578063b1768065146101f0578063b68ad1e414610217578063c3b35a7e1461022a57600080fd5b80633b878c22116100e95780633b878c221461017c57806351351d531461018557806371cf93b7146101935780637efab4f5146101a6578063947287cf146101cf57600080fd5b806305dc2e8f1461011b5780631459457a1461014b5780631bc114ba14610160578063284017f514610173575b600080fd5b60345461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004610f98565b6102ba565b005b60335461012e906001600160a01b031681565b61012e61202081565b61012e61101081565b61012e6002600160a01b0381565b60355461012e906001600160a01b031681565b61012e6101b4366004611009565b6037602052600090815260409020546001600160a01b031681565b6101d861520881565b604051908152602001610142565b6101d8620249f081565b6101d87f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461012e906001600160a01b031681565b61015e61023836600461102d565b61055a565b6101d87f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b61012e61203081565b61015e61027b36600461106e565b61056a565b61015e61028e3660046110f7565b61073e565b6101d87f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b336002600160a01b03146103035760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064015b60405180910390fd5b600054610100900460ff16158080156103235750600054600160ff909116105b8061033d5750303b15801561033d575060005460ff166001145b6103a05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102fa565b6000805460ff1916600117905580156103c3576000805461ff0019166101001790555b6001600160a01b038616158015906103e357506001600160a01b03851615155b80156103f757506001600160a01b03841615155b801561040b57506001600160a01b03831615155b6104675760405162461bcd60e51b815260206004820152602760248201527f4368696c6445524332305072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b60648201526084016102fa565b603380546001600160a01b03199081166001600160a01b03898116919091179092556034805482168884161790556035805482168784161790556036805490911685831617905582161561050c576001600160a01b03821660008181526037602052604080822080546001600160a01b03191661101090811790915590519092917f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d91a35b8015610552576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61056583838361074d565b505050565b6034546001600160a01b031633146105d55760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f53544154455f6044820152672922a1a2a4ab22a960c11b60648201526084016102fa565b6035546001600160a01b038481169116146106435760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f524f4f545f50604482015267524544494341544560c01b60648201526084016102fa565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821610672602060008486611123565b61067b9161114d565b0361069a576106956106908260208186611123565b610ac3565b610738565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6106c9602060008486611123565b6106d29161114d565b036106e1576106958282610d6e565b60405162461bcd60e51b815260206004820152602660248201527f4368696c6445524332305072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b60648201526084016102fa565b50505050565b61074982338361074d565b5050565b826001600160a01b03163b6000036107b15760405162461bcd60e51b815260206004820152602160248201527f4368696c6445524332305072656469636174653a204e4f545f434f4e545241436044820152601560fa1b60648201526084016102fa565b6000836001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061116b565b6001600160a01b038181166000908152603760205260409020549192508581169116146108545760405162461bcd60e51b81526004016102fa90611188565b6001600160a01b03811661086a5761086a6111cb565b306001600160a01b0316846001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d6919061116b565b6001600160a01b0316146108ec576108ec6111cb565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac9061091a90339086906004016111e1565b6020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fa565b6109a95760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204255524e5f4641494c454460448201526064016102fa565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610a349391169160c401611262565b600060405180830381600087803b158015610a4e57600080fd5b505af1158015610a62573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b0316826001600160a01b03167fa0923f060a16fc784558d43de424ffde7b01643de5e5d335851b9df94c76bb273386604051610ab59291906111e1565b60405180910390a450505050565b6000808080610ad48587018761128e565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610b175760405162461bcd60e51b81526004016102fa90611188565b806001600160a01b03163b600003610b3157610b316111cb565b6000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061116b565b9050856001600160a01b0316816001600160a01b031614610bb857610bb86111cb565b6001600160a01b038116610bce57610bce6111cb565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a919061116b565b6001600160a01b031614610c5057610c506111cb565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610c7e90879087906004016111e1565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc191906111fa565b610d0d5760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204d494e545f4641494c454460448201526064016102fa565b836001600160a01b0316826001600160a01b0316876001600160a01b03167fdf34f3a3ed8bedc14a4b284ebaee5374d55b64bac6a84c270dabe8fd6b4cdafd8887604051610d5c9291906111e1565b60405180910390a45050505050505050565b6000808080610d7f85870187611382565b92975090955093509150506001600160a01b038416610da057610da06111cb565b6001600160a01b038481166000908152603760205260409020541615610dc857610dc86111cb565b6036546040516bffffffffffffffffffffffff19606087901b166020820152600091610e18916001600160a01b039091169060340160405160208183030381529060405280519060200120610ee3565b6001600160a01b038681166000908152603760205260409081902080546001600160a01b031916928416928317905551637b69774360e11b81529192509063f6d2ee8690610e7090889088908890889060040161140f565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b50506040516001600160a01b038085169350881691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a350505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610f7a5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016102fa565b92915050565b6001600160a01b0381168114610f9557600080fd5b50565b600080600080600060a08688031215610fb057600080fd5b8535610fbb81610f80565b94506020860135610fcb81610f80565b93506040860135610fdb81610f80565b92506060860135610feb81610f80565b91506080860135610ffb81610f80565b809150509295509295909350565b60006020828403121561101b57600080fd5b813561102681610f80565b9392505050565b60008060006060848603121561104257600080fd5b833561104d81610f80565b9250602084013561105d81610f80565b929592945050506040919091013590565b6000806000806060858703121561108457600080fd5b84359350602085013561109681610f80565b9250604085013567ffffffffffffffff808211156110b357600080fd5b818701915087601f8301126110c757600080fd5b8135818111156110d657600080fd5b8860208285010111156110e857600080fd5b95989497505060200194505050565b6000806040838503121561110a57600080fd5b823561111581610f80565b946020939093013593505050565b6000808585111561113357600080fd5b8386111561114057600080fd5b5050820193919092039150565b80356020831015610f7a57600019602084900360031b1b1692915050565b60006020828403121561117d57600080fd5b815161102681610f80565b60208082526023908201527f4368696c6445524332305072656469636174653a20554e4d41505045445f544f60408201526225a2a760e91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561120c57600080fd5b8151801515811461102657600080fd5b6000815180845260005b8181101561124257602081850181015186830182015201611226565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190526000906112869083018461121c565b949350505050565b600080600080608085870312156112a457600080fd5b84356112af81610f80565b935060208501356112bf81610f80565b925060408501356112cf81610f80565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261130657600080fd5b813567ffffffffffffffff80821115611321576113216112df565b604051601f8301601f19908116603f01168101908282118183101715611349576113496112df565b8160405283815286602085880101111561136257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561139a57600080fd5b8535945060208601356113ac81610f80565b9350604086013567ffffffffffffffff808211156113c957600080fd5b6113d589838a016112f5565b945060608801359150808211156113eb57600080fd5b506113f8888289016112f5565b925050608086013560ff81168114610ffb57600080fd5b6001600160a01b03851681526080602082018190526000906114339083018661121c565b8281036040840152611445818661121c565b91505060ff831660608301529594505050505056fea2646970667358221220826f58ea208b8a100d3343999582bb4813e24a5dd686101ad5da8213058bdfaf64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806397e5230d116100a2578063d41f177111610071578063d41f17711461023d578063e0563ab114610264578063eeb499451461026d578063f3fef3a314610280578063f64512551461029357600080fd5b806397e5230d146101e6578063b1768065146101f0578063b68ad1e414610217578063c3b35a7e1461022a57600080fd5b80633b878c22116100e95780633b878c221461017c57806351351d531461018557806371cf93b7146101935780637efab4f5146101a6578063947287cf146101cf57600080fd5b806305dc2e8f1461011b5780631459457a1461014b5780631bc114ba14610160578063284017f514610173575b600080fd5b60345461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004610f98565b6102ba565b005b60335461012e906001600160a01b031681565b61012e61202081565b61012e61101081565b61012e6002600160a01b0381565b60355461012e906001600160a01b031681565b61012e6101b4366004611009565b6037602052600090815260409020546001600160a01b031681565b6101d861520881565b604051908152602001610142565b6101d8620249f081565b6101d87f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461012e906001600160a01b031681565b61015e61023836600461102d565b61055a565b6101d87f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b61012e61203081565b61015e61027b36600461106e565b61056a565b61015e61028e3660046110f7565b61073e565b6101d87f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b336002600160a01b03146103035760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064015b60405180910390fd5b600054610100900460ff16158080156103235750600054600160ff909116105b8061033d5750303b15801561033d575060005460ff166001145b6103a05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102fa565b6000805460ff1916600117905580156103c3576000805461ff0019166101001790555b6001600160a01b038616158015906103e357506001600160a01b03851615155b80156103f757506001600160a01b03841615155b801561040b57506001600160a01b03831615155b6104675760405162461bcd60e51b815260206004820152602760248201527f4368696c6445524332305072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b60648201526084016102fa565b603380546001600160a01b03199081166001600160a01b03898116919091179092556034805482168884161790556035805482168784161790556036805490911685831617905582161561050c576001600160a01b03821660008181526037602052604080822080546001600160a01b03191661101090811790915590519092917f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d91a35b8015610552576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61056583838361074d565b505050565b6034546001600160a01b031633146105d55760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f53544154455f6044820152672922a1a2a4ab22a960c11b60648201526084016102fa565b6035546001600160a01b038481169116146106435760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f524f4f545f50604482015267524544494341544560c01b60648201526084016102fa565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821610672602060008486611123565b61067b9161114d565b0361069a576106956106908260208186611123565b610ac3565b610738565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6106c9602060008486611123565b6106d29161114d565b036106e1576106958282610d6e565b60405162461bcd60e51b815260206004820152602660248201527f4368696c6445524332305072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b60648201526084016102fa565b50505050565b61074982338361074d565b5050565b826001600160a01b03163b6000036107b15760405162461bcd60e51b815260206004820152602160248201527f4368696c6445524332305072656469636174653a204e4f545f434f4e545241436044820152601560fa1b60648201526084016102fa565b6000836001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061116b565b6001600160a01b038181166000908152603760205260409020549192508581169116146108545760405162461bcd60e51b81526004016102fa90611188565b6001600160a01b03811661086a5761086a6111cb565b306001600160a01b0316846001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d6919061116b565b6001600160a01b0316146108ec576108ec6111cb565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac9061091a90339086906004016111e1565b6020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fa565b6109a95760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204255524e5f4641494c454460448201526064016102fa565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610a349391169160c401611262565b600060405180830381600087803b158015610a4e57600080fd5b505af1158015610a62573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b0316826001600160a01b03167fa0923f060a16fc784558d43de424ffde7b01643de5e5d335851b9df94c76bb273386604051610ab59291906111e1565b60405180910390a450505050565b6000808080610ad48587018761128e565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610b175760405162461bcd60e51b81526004016102fa90611188565b806001600160a01b03163b600003610b3157610b316111cb565b6000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061116b565b9050856001600160a01b0316816001600160a01b031614610bb857610bb86111cb565b6001600160a01b038116610bce57610bce6111cb565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a919061116b565b6001600160a01b031614610c5057610c506111cb565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610c7e90879087906004016111e1565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc191906111fa565b610d0d5760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204d494e545f4641494c454460448201526064016102fa565b836001600160a01b0316826001600160a01b0316876001600160a01b03167fdf34f3a3ed8bedc14a4b284ebaee5374d55b64bac6a84c270dabe8fd6b4cdafd8887604051610d5c9291906111e1565b60405180910390a45050505050505050565b6000808080610d7f85870187611382565b92975090955093509150506001600160a01b038416610da057610da06111cb565b6001600160a01b038481166000908152603760205260409020541615610dc857610dc86111cb565b6036546040516bffffffffffffffffffffffff19606087901b166020820152600091610e18916001600160a01b039091169060340160405160208183030381529060405280519060200120610ee3565b6001600160a01b038681166000908152603760205260409081902080546001600160a01b031916928416928317905551637b69774360e11b81529192509063f6d2ee8690610e7090889088908890889060040161140f565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b50506040516001600160a01b038085169350881691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a350505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610f7a5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016102fa565b92915050565b6001600160a01b0381168114610f9557600080fd5b50565b600080600080600060a08688031215610fb057600080fd5b8535610fbb81610f80565b94506020860135610fcb81610f80565b93506040860135610fdb81610f80565b92506060860135610feb81610f80565b91506080860135610ffb81610f80565b809150509295509295909350565b60006020828403121561101b57600080fd5b813561102681610f80565b9392505050565b60008060006060848603121561104257600080fd5b833561104d81610f80565b9250602084013561105d81610f80565b929592945050506040919091013590565b6000806000806060858703121561108457600080fd5b84359350602085013561109681610f80565b9250604085013567ffffffffffffffff808211156110b357600080fd5b818701915087601f8301126110c757600080fd5b8135818111156110d657600080fd5b8860208285010111156110e857600080fd5b95989497505060200194505050565b6000806040838503121561110a57600080fd5b823561111581610f80565b946020939093013593505050565b6000808585111561113357600080fd5b8386111561114057600080fd5b5050820193919092039150565b80356020831015610f7a57600019602084900360031b1b1692915050565b60006020828403121561117d57600080fd5b815161102681610f80565b60208082526023908201527f4368696c6445524332305072656469636174653a20554e4d41505045445f544f60408201526225a2a760e91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561120c57600080fd5b8151801515811461102657600080fd5b6000815180845260005b8181101561124257602081850181015186830182015201611226565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190526000906112869083018461121c565b949350505050565b600080600080608085870312156112a457600080fd5b84356112af81610f80565b935060208501356112bf81610f80565b925060408501356112cf81610f80565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261130657600080fd5b813567ffffffffffffffff80821115611321576113216112df565b604051601f8301601f19908116603f01168101908282118183101715611349576113496112df565b8160405283815286602085880101111561136257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561139a57600080fd5b8535945060208601356113ac81610f80565b9350604086013567ffffffffffffffff808211156113c957600080fd5b6113d589838a016112f5565b945060608801359150808211156113eb57600080fd5b506113f8888289016112f5565b925050608086013560ff81168114610ffb57600080fd5b6001600160a01b03851681526080602082018190526000906114339083018661121c565b8281036040840152611445818661121c565b91505060ff831660608301529594505050505056fea2646970667358221220826f58ea208b8a100d3343999582bb4813e24a5dd686101ad5da8213058bdfaf64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var SystemArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"System\",\n \"sourceName\": \"contracts/child/System.sol\",\n \"abi\": [\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b5060f58061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610605a5760003560e01c8063284017f514605f5780633b878c2214608457806351351d5314608c578063947287cf14609957806397e5230d1460ae578063e0563ab11460b7575b600080fd5b606761202081565b6040516001600160a01b0390911681526020015b60405180910390f35b606761101081565b60676002600160a01b0381565b60a161520881565b604051908152602001607b565b60a1620249f081565b60676120308156fea264697066735822122064014c9d48fdaeeccbde77e32e0a3289adc5bd43847b6b471e83d76a9ba6fbab64736f6c63430008110033\",\n \"deployedBytecode\": \"0x6080604052348015600f57600080fd5b5060043610605a5760003560e01c8063284017f514605f5780633b878c2214608457806351351d5314608c578063947287cf14609957806397e5230d1460ae578063e0563ab11460b7575b600080fd5b606761202081565b6040516001600160a01b0390911681526020015b60405180910390f35b606761101081565b60676002600160a01b0381565b60a161520881565b604051908152602001607b565b60a1620249f081565b60676120308156fea264697066735822122064014c9d48fdaeeccbde77e32e0a3289adc5bd43847b6b471e83d76a9ba6fbab64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var BLSArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"BLS\",\n \"sourceName\": \"contracts/common/BLS.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"domain\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"expandMsgTo96\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"domain\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"messages\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"hashToField\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"domain\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"message\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"hashToPoint\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"point\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"name\": \"isOnCurveG1\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_isOnCurve\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"point\",\n \"type\": \"uint256[4]\"\n }\n ],\n \"name\": \"isOnCurveG2\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"_isOnCurve\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"name\": \"isValidSignature\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_x\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mapToPoint\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"p\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"internalType\": \"uint256[4][]\",\n \"name\": \"pubkeys\",\n \"type\": \"uint256[4][]\"\n },\n {\n \"internalType\": \"uint256[2][]\",\n \"name\": \"messages\",\n \"type\": \"uint256[2][]\"\n }\n ],\n \"name\": \"verifyMultiple\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"checkResult\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"callSuccess\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"internalType\": \"uint256[4][]\",\n \"name\": \"pubkeys\",\n \"type\": \"uint256[4][]\"\n },\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"message\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"name\": \"verifyMultipleSameMsg\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"checkResult\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"callSuccess\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"pubkey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"message\",\n \"type\": \"uint256[2]\"\n }\n ],\n \"name\": \"verifySingle\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50612df8806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806391ec2d2b1161006657806391ec2d2b1461013b578063a850a9091461015b578063d58e77331461016e578063e242cce914610181578063ebbdac911461019457600080fd5b8063115000fe146100a3578063247dd9fb146100cb5780633e5476ce146100de5780638669026f146101085780639141376314610128575b600080fd5b6100b66100b1366004612708565b6101a7565b60405190151581526020015b60405180910390f35b6100b66100d9366004612785565b61030e565b6100f16100ec366004612841565b6103b8565b6040805192151583529015156020830152016100c2565b61011b6101163660046128ce565b61079f565b6040516100c29190612957565b6100f1610136366004612988565b6108bb565b61014e6101493660046128ce565b610d5c565b6040516100c29190612a86565b61011b6101693660046128ce565b610ff8565b61011b61017c366004612aa0565b6111d4565b6100b661018f366004612785565b6115aa565b6100f16101a2366004612ab9565b611609565b600081516020830151600080516020612d63833981519152828309600080516020612d638339815191528283098182830101600080516020612d638339815191528283840108600080516020612d638339815191528682600080516020612d6383398151915203860109935050600080516020612d638339815191528483600080516020612d63833981519152038301099150600080516020612d638339815191527f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e584089450600080516020612d638339815191527e9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2830893506040870151925060608701519150600080516020612d638339815191528083600080516020612d63833981519152038508600080516020612d63833981519152848608099050600080516020612d63833981519152828460011b0994149290931491909116949350505050565b8051600090600080516020612d6383398151915211158061034157506020820151600080516020612d6383398151915211155b1561034e57506000919050565b60405163e242cce960e01b8152309063e242cce990610371908590600401612957565b602060405180830381865afa15801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b29190612b1c565b92915050565b60008083806103e25760405162461bcd60e51b81526004016103d990612b3e565b60405180910390fd5b60006103ef826001612b95565b6103fa906006612ba8565b90506000816001600160401b038111156104165761041661269a565b60405190808252806020026020018201604052801561043f578160200160208202803683370190505b50905088600060200201358160008151811061045d5761045d612b06565b602090810291909101015288600160200201358160018151811061048357610483612b06565b602002602001018181525050600080516020612d43833981519152816002815181106104b1576104b1612b06565b602002602001018181525050600080516020612d23833981519152816003815181106104df576104df612b06565b602002602001018181525050600080516020612d838339815191528160048151811061050d5761050d612b06565b602002602001018181525050600080516020612da38339815191528160058151811061053b5761053b612b06565b60200260200101818152505060005b8381101561075a57863582610560836006612ba8565b61056b906006612b95565b8151811061057b5761057b612b06565b602090810291909101015286600160200201358261059a836006612ba8565b6105a5906007612b95565b815181106105b5576105b5612b06565b6020026020010181815250508888828181106105d3576105d3612b06565b9050608002016001600481106105eb576105eb612b06565b6020020135826105fc836006612ba8565b610607906008612b95565b8151811061061757610617612b06565b60200260200101818152505088888281811061063557610635612b06565b90506080020160006004811061064d5761064d612b06565b60200201358261065e836006612ba8565b610669906009612b95565b8151811061067957610679612b06565b60200260200101818152505088888281811061069757610697612b06565b9050608002016003600481106106af576106af612b06565b6020020135826106c0836006612ba8565b6106cb90600a612b95565b815181106106db576106db612b06565b6020026020010181815250508888828181106106f9576106f9612b06565b90506080020160026004811061071157610711612b06565b602002013582610722836006612ba8565b61072d90600b612b95565b8151811061073d5761073d612b06565b60209081029190910101528061075281612bbf565b91505061054a565b50610763612640565b602081602085026020850160085afa945084610789576000809550955050505050610796565b5115159450600193505050505b94509492505050565b6107a761265e565b6040516391ec2d2b60e01b815260009030906391ec2d2b906107cf9087908790600401612bd8565b600060405180830381865afa1580156107ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108149190810190612bf9565b9050600080600080601885016001600160c01b0381511693506030860190506001600160c01b038151169450600080516020612d6383398151915285600080516020612d63833981519152600160c01b870908604887015160608801516001600160c01b0390811697501694509250600080516020612d6383398151915290508481600160c01b860908604080518082019091529283526020830152509695505050505050565b60008084806108dc5760405162461bcd60e51b81526004016103d990612b3e565b8084146109495760405162461bcd60e51b815260206004820152603560248201527f424c533a206e756d626572206f66207075626c6963206b65797320616e64206d604482015274195cdcd859d95cc81b5d5cdd08189948195c5d585b605a1b60648201526084016103d9565b6000610956826001612b95565b610961906006612ba8565b90506000816001600160401b0381111561097d5761097d61269a565b6040519080825280602002602001820160405280156109a6578160200160208202803683370190505b5090508960006020020135816000815181106109c4576109c4612b06565b60209081029190910101528960016020020135816001815181106109ea576109ea612b06565b602002602001018181525050600080516020612d4383398151915281600281518110610a1857610a18612b06565b602002602001018181525050600080516020612d2383398151915281600381518110610a4657610a46612b06565b602002602001018181525050600080516020612d8383398151915281600481518110610a7457610a74612b06565b602002602001018181525050600080516020612da383398151915281600581518110610aa257610aa2612b06565b60200260200101818152505060005b83811015610d1657878782818110610acb57610acb612b06565b905060400201600060028110610ae357610ae3612b06565b602002013582610af4836006612ba8565b610aff906006612b95565b81518110610b0f57610b0f612b06565b602002602001018181525050878782818110610b2d57610b2d612b06565b905060400201600160028110610b4557610b45612b06565b602002013582610b56836006612ba8565b610b61906007612b95565b81518110610b7157610b71612b06565b602002602001018181525050898982818110610b8f57610b8f612b06565b905060800201600160048110610ba757610ba7612b06565b602002013582610bb8836006612ba8565b610bc3906008612b95565b81518110610bd357610bd3612b06565b602002602001018181525050898982818110610bf157610bf1612b06565b905060800201600060048110610c0957610c09612b06565b602002013582610c1a836006612ba8565b610c25906009612b95565b81518110610c3557610c35612b06565b602002602001018181525050898982818110610c5357610c53612b06565b905060800201600360048110610c6b57610c6b612b06565b602002013582610c7c836006612ba8565b610c8790600a612b95565b81518110610c9757610c97612b06565b602002602001018181525050898982818110610cb557610cb5612b06565b905060800201600260048110610ccd57610ccd612b06565b602002013582610cde836006612ba8565b610ce990600b612b95565b81518110610cf957610cf9612b06565b602090810291909101015280610d0e81612bbf565b915050610ab1565b50610d1f612640565b602081602085026020850160085afa945084610d45576000809550955050505050610d52565b5115159450600193505050505b9550959350505050565b80516060906000610d6e826020612b95565b610d79906040612b95565b610d84906004612b95565b6001600160401b03811115610d9b57610d9b61269a565b6040519080825280601f01601f191660200182016040528015610dc5576020820181803683370190505b5060408051606080825260808201909252919250600091906020820181803683370190505090506060820160005b84811015610e0d5760208188018101518383015201610df3565b5083016000815360010160608153600101600081536001810187905260210160208153506000600283604051610e439190612c6f565b602060405180830381855afa158015610e60573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e839190612c8b565b9050600060429450848452816020850152600160408501536041840188905260206061850153600284604051610eb99190612c6f565b602060405180830381855afa158015610ed6573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610ef99190612c8b565b905080602084015280821880602086015250600260408501536041840188905260206061850153600284604051610f309190612c6f565b602060405180830381855afa158015610f4d573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f709190612c8b565b905080604084015280821880602086015250600360408501536041840188905260206061850153600284604051610fa79190612c6f565b602060405180830381855afa158015610fc4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610fe79190612c8b565b606084015250909695505050505050565b61100061265e565b604051638669026f60e01b81526000903090638669026f906110289087908790600401612bd8565b6040805180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190612ca4565b805160405163d58e773360e01b81526004810191909152909150600090309063d58e7733906024016040805180830381865afa1580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d09190612ca4565b602083015160405163d58e773360e01b81526004810191909152909150600090309063d58e7733906024016040805180830381865afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ca4565b905061114561267c565b825181526020808401518282015282516040808401919091529083015160608301526000908460808460066107d05a03fa9050808061118057fe5b50806111c85760405162461bcd60e51b8152602060048201526017602482015276109314ce88189b881859190818d85b1b0819985a5b1959604a1b60448201526064016103d9565b50919695505050505050565b6111dc61265e565b600080516020612d6383398151915282106112455760405162461bcd60e51b815260206004820152602360248201527f6d6170546f506f696e7446543a20696e76616c6964206669656c6420656c656d604482015262195b9d60ea1b60648201526084016103d9565b81600061125182611790565b9150506000600080516020612d638339815191528061127257611272612cf9565b8384099050600080516020612d638339815191526004820890506000600080516020612d6383398151915277b3c4d79d41a91759a9e4c7e359b6b89eaec68e62effffffd850990506000600080516020612d6383398151915283830990506112d9816117b9565b9050600080516020612d638339815191528283099150600080516020612d638339815191528183099150600080516020612d638339815191528286099150600080516020612d6383398151915261133e83600080516020612d63833981519152612d0f565b7759e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe089450600080516020612d638339815191528586099150600080516020612d638339815191528583099150600080516020612d6383398151915260038308915060006113a283611790565b909350905080156113ea57846113cd576113ca83600080516020612d63833981519152612d0f565b92505b505060408051808201909152938452602084015250909392505050565b600080516020612d638339815191526001870861141590600080516020612d63833981519152612d0f565b9550600080516020612d638339815191528687099250600080516020612d638339815191528684099250600080516020612d6383398151915260038408925061145d83611790565b9093509050801561148557846113cd576113ca83600080516020612d63833981519152612d0f565b600080516020612d638339815191528485099550600080516020612d638339815191528687099550600080516020612d638339815191528287099550600080516020612d638339815191528287099550600080516020612d63833981519152600187089550600080516020612d638339815191528687099250600080516020612d638339815191528684099250600080516020612d6383398151915260038408925061153083611790565b90935090508061158d5760405162461bcd60e51b815260206004820152602260248201527f424c533a20626164206674206d617070696e6720696d706c656d656e7461746960448201526137b760f11b60648201526084016103d9565b846113cd576113ca83600080516020612d63833981519152612d0f565b600081516020830151600080516020612d63833981519152828309600080516020612d638339815191528382099050600080516020612d63833981519152600382089050600080516020612d6383398151915282830914949350505050565b60008060006040518061018001604052808760006002811061162d5761162d612b06565b602002013581526020018760016002811061164a5761164a612b06565b60200201358152602001600080516020612d438339815191528152602001600080516020612d238339815191528152602001600080516020612d838339815191528152602001600080516020612da38339815191528152602001856000600281106116b7576116b7612b06565b60200201358152602001856001600281106116d4576116d4612b06565b60200201358152602001866001600481106116f1576116f1612b06565b602002013581526020018660006004811061170e5761170e612b06565b602002013581526020018660036004811061172b5761172b612b06565b602002013581526020018660026004811061174857611748612b06565b602002013590529050611759612640565b60006020826101808560085afa90508061177c5760008094509450505050611788565b50511515925060019150505b935093915050565b60008061179c836117c4565b915082600080516020612d63833981519152838409149050915091565b60006103b282611ef9565b6000600080516020612d638339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508584880996508587880996508587880996508587880996508587880996508587880996508581880996505050505050808283099392505050565b6000600080516020612d638339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996505050838586099450838586099450838586099450838586099450838186099450508284850993508284850993508284850993508281850993508284850993508284850993508285850993508284850993508284850993508284850993508284850993508284850993508284850993508281850995945050505050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156126d2576126d261269a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156127005761270061269a565b604052919050565b60006080828403121561271a57600080fd5b82601f83011261272957600080fd5b604051608081018181106001600160401b038211171561274b5761274b61269a565b60405280608084018581111561276057600080fd5b845b8181101561277a578035835260209283019201612762565b509195945050505050565b60006040828403121561279757600080fd5b82601f8301126127a657600080fd5b6127ae6126b0565b8060408401858111156127c057600080fd5b845b818110156127da5780358452602093840193016127c2565b509095945050505050565b80604081018310156103b257600080fd5b60008083601f84011261280857600080fd5b5081356001600160401b0381111561281f57600080fd5b6020830191508360208260071b850101111561283a57600080fd5b9250929050565b60008060008060a0858703121561285757600080fd5b61286186866127e5565b935060408501356001600160401b0381111561287c57600080fd5b612888878288016127f6565b909450925061289c905086606087016127e5565b905092959194509250565b60006001600160401b038211156128c0576128c061269a565b50601f01601f191660200190565b600080604083850312156128e157600080fd5b8235915060208301356001600160401b038111156128fe57600080fd5b8301601f8101851361290f57600080fd5b803561292261291d826128a7565b6126d8565b81815286602083850101111561293757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60408101818360005b600281101561297f578151835260209283019290910190600101612960565b50505092915050565b6000806000806000608086880312156129a057600080fd5b6129aa87876127e5565b945060408601356001600160401b03808211156129c657600080fd5b6129d289838a016127f6565b909650945060608801359150808211156129eb57600080fd5b818801915088601f8301126129ff57600080fd5b813581811115612a0e57600080fd5b8960208260061b8501011115612a2357600080fd5b9699959850939650602001949392505050565b60005b83811015612a51578181015183820152602001612a39565b50506000910152565b60008151808452612a72816020860160208601612a36565b601f01601f19169290920160200192915050565b602081526000612a996020830184612a5a565b9392505050565b600060208284031215612ab257600080fd5b5035919050565b60008060006101008486031215612acf57600080fd5b612ad985856127e5565b925060c0840185811115612aec57600080fd5b604085019250612afc86826127e5565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b2e57600080fd5b81518015158114612a9957600080fd5b60208082526021908201527f424c533a206e756d626572206f66207075626c6963206b6579206973207a65726040820152606f60f81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103b2576103b2612b7f565b80820281158282048414176103b2576103b2612b7f565b600060018201612bd157612bd1612b7f565b5060010190565b828152604060208201526000612bf16040830184612a5a565b949350505050565b600060208284031215612c0b57600080fd5b81516001600160401b03811115612c2157600080fd5b8201601f81018413612c3257600080fd5b8051612c4061291d826128a7565b818152856020838501011115612c5557600080fd5b612c66826020830160208601612a36565b95945050505050565b60008251612c81818460208701612a36565b9190910192915050565b600060208284031215612c9d57600080fd5b5051919050565b600060408284031215612cb657600080fd5b82601f830112612cc557600080fd5b612ccd6126b0565b806040840185811115612cdf57600080fd5b845b818110156127da578051845260209384019301612ce1565b634e487b7160e01b600052601260045260246000fd5b818103818111156103b2576103b2612b7f56fe1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c230644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9da264697066735822122026307d7712f2d905c1e8d78be9a5b3a609a6d61f5bdebb114a32bfdb7fdfb8ce64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806391ec2d2b1161006657806391ec2d2b1461013b578063a850a9091461015b578063d58e77331461016e578063e242cce914610181578063ebbdac911461019457600080fd5b8063115000fe146100a3578063247dd9fb146100cb5780633e5476ce146100de5780638669026f146101085780639141376314610128575b600080fd5b6100b66100b1366004612708565b6101a7565b60405190151581526020015b60405180910390f35b6100b66100d9366004612785565b61030e565b6100f16100ec366004612841565b6103b8565b6040805192151583529015156020830152016100c2565b61011b6101163660046128ce565b61079f565b6040516100c29190612957565b6100f1610136366004612988565b6108bb565b61014e6101493660046128ce565b610d5c565b6040516100c29190612a86565b61011b6101693660046128ce565b610ff8565b61011b61017c366004612aa0565b6111d4565b6100b661018f366004612785565b6115aa565b6100f16101a2366004612ab9565b611609565b600081516020830151600080516020612d63833981519152828309600080516020612d638339815191528283098182830101600080516020612d638339815191528283840108600080516020612d638339815191528682600080516020612d6383398151915203860109935050600080516020612d638339815191528483600080516020612d63833981519152038301099150600080516020612d638339815191527f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e584089450600080516020612d638339815191527e9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2830893506040870151925060608701519150600080516020612d638339815191528083600080516020612d63833981519152038508600080516020612d63833981519152848608099050600080516020612d63833981519152828460011b0994149290931491909116949350505050565b8051600090600080516020612d6383398151915211158061034157506020820151600080516020612d6383398151915211155b1561034e57506000919050565b60405163e242cce960e01b8152309063e242cce990610371908590600401612957565b602060405180830381865afa15801561038e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b29190612b1c565b92915050565b60008083806103e25760405162461bcd60e51b81526004016103d990612b3e565b60405180910390fd5b60006103ef826001612b95565b6103fa906006612ba8565b90506000816001600160401b038111156104165761041661269a565b60405190808252806020026020018201604052801561043f578160200160208202803683370190505b50905088600060200201358160008151811061045d5761045d612b06565b602090810291909101015288600160200201358160018151811061048357610483612b06565b602002602001018181525050600080516020612d43833981519152816002815181106104b1576104b1612b06565b602002602001018181525050600080516020612d23833981519152816003815181106104df576104df612b06565b602002602001018181525050600080516020612d838339815191528160048151811061050d5761050d612b06565b602002602001018181525050600080516020612da38339815191528160058151811061053b5761053b612b06565b60200260200101818152505060005b8381101561075a57863582610560836006612ba8565b61056b906006612b95565b8151811061057b5761057b612b06565b602090810291909101015286600160200201358261059a836006612ba8565b6105a5906007612b95565b815181106105b5576105b5612b06565b6020026020010181815250508888828181106105d3576105d3612b06565b9050608002016001600481106105eb576105eb612b06565b6020020135826105fc836006612ba8565b610607906008612b95565b8151811061061757610617612b06565b60200260200101818152505088888281811061063557610635612b06565b90506080020160006004811061064d5761064d612b06565b60200201358261065e836006612ba8565b610669906009612b95565b8151811061067957610679612b06565b60200260200101818152505088888281811061069757610697612b06565b9050608002016003600481106106af576106af612b06565b6020020135826106c0836006612ba8565b6106cb90600a612b95565b815181106106db576106db612b06565b6020026020010181815250508888828181106106f9576106f9612b06565b90506080020160026004811061071157610711612b06565b602002013582610722836006612ba8565b61072d90600b612b95565b8151811061073d5761073d612b06565b60209081029190910101528061075281612bbf565b91505061054a565b50610763612640565b602081602085026020850160085afa945084610789576000809550955050505050610796565b5115159450600193505050505b94509492505050565b6107a761265e565b6040516391ec2d2b60e01b815260009030906391ec2d2b906107cf9087908790600401612bd8565b600060405180830381865afa1580156107ec573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108149190810190612bf9565b9050600080600080601885016001600160c01b0381511693506030860190506001600160c01b038151169450600080516020612d6383398151915285600080516020612d63833981519152600160c01b870908604887015160608801516001600160c01b0390811697501694509250600080516020612d6383398151915290508481600160c01b860908604080518082019091529283526020830152509695505050505050565b60008084806108dc5760405162461bcd60e51b81526004016103d990612b3e565b8084146109495760405162461bcd60e51b815260206004820152603560248201527f424c533a206e756d626572206f66207075626c6963206b65797320616e64206d604482015274195cdcd859d95cc81b5d5cdd08189948195c5d585b605a1b60648201526084016103d9565b6000610956826001612b95565b610961906006612ba8565b90506000816001600160401b0381111561097d5761097d61269a565b6040519080825280602002602001820160405280156109a6578160200160208202803683370190505b5090508960006020020135816000815181106109c4576109c4612b06565b60209081029190910101528960016020020135816001815181106109ea576109ea612b06565b602002602001018181525050600080516020612d4383398151915281600281518110610a1857610a18612b06565b602002602001018181525050600080516020612d2383398151915281600381518110610a4657610a46612b06565b602002602001018181525050600080516020612d8383398151915281600481518110610a7457610a74612b06565b602002602001018181525050600080516020612da383398151915281600581518110610aa257610aa2612b06565b60200260200101818152505060005b83811015610d1657878782818110610acb57610acb612b06565b905060400201600060028110610ae357610ae3612b06565b602002013582610af4836006612ba8565b610aff906006612b95565b81518110610b0f57610b0f612b06565b602002602001018181525050878782818110610b2d57610b2d612b06565b905060400201600160028110610b4557610b45612b06565b602002013582610b56836006612ba8565b610b61906007612b95565b81518110610b7157610b71612b06565b602002602001018181525050898982818110610b8f57610b8f612b06565b905060800201600160048110610ba757610ba7612b06565b602002013582610bb8836006612ba8565b610bc3906008612b95565b81518110610bd357610bd3612b06565b602002602001018181525050898982818110610bf157610bf1612b06565b905060800201600060048110610c0957610c09612b06565b602002013582610c1a836006612ba8565b610c25906009612b95565b81518110610c3557610c35612b06565b602002602001018181525050898982818110610c5357610c53612b06565b905060800201600360048110610c6b57610c6b612b06565b602002013582610c7c836006612ba8565b610c8790600a612b95565b81518110610c9757610c97612b06565b602002602001018181525050898982818110610cb557610cb5612b06565b905060800201600260048110610ccd57610ccd612b06565b602002013582610cde836006612ba8565b610ce990600b612b95565b81518110610cf957610cf9612b06565b602090810291909101015280610d0e81612bbf565b915050610ab1565b50610d1f612640565b602081602085026020850160085afa945084610d45576000809550955050505050610d52565b5115159450600193505050505b9550959350505050565b80516060906000610d6e826020612b95565b610d79906040612b95565b610d84906004612b95565b6001600160401b03811115610d9b57610d9b61269a565b6040519080825280601f01601f191660200182016040528015610dc5576020820181803683370190505b5060408051606080825260808201909252919250600091906020820181803683370190505090506060820160005b84811015610e0d5760208188018101518383015201610df3565b5083016000815360010160608153600101600081536001810187905260210160208153506000600283604051610e439190612c6f565b602060405180830381855afa158015610e60573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610e839190612c8b565b9050600060429450848452816020850152600160408501536041840188905260206061850153600284604051610eb99190612c6f565b602060405180830381855afa158015610ed6573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610ef99190612c8b565b905080602084015280821880602086015250600260408501536041840188905260206061850153600284604051610f309190612c6f565b602060405180830381855afa158015610f4d573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610f709190612c8b565b905080604084015280821880602086015250600360408501536041840188905260206061850153600284604051610fa79190612c6f565b602060405180830381855afa158015610fc4573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610fe79190612c8b565b606084015250909695505050505050565b61100061265e565b604051638669026f60e01b81526000903090638669026f906110289087908790600401612bd8565b6040805180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190612ca4565b805160405163d58e773360e01b81526004810191909152909150600090309063d58e7733906024016040805180830381865afa1580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d09190612ca4565b602083015160405163d58e773360e01b81526004810191909152909150600090309063d58e7733906024016040805180830381865afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ca4565b905061114561267c565b825181526020808401518282015282516040808401919091529083015160608301526000908460808460066107d05a03fa9050808061118057fe5b50806111c85760405162461bcd60e51b8152602060048201526017602482015276109314ce88189b881859190818d85b1b0819985a5b1959604a1b60448201526064016103d9565b50919695505050505050565b6111dc61265e565b600080516020612d6383398151915282106112455760405162461bcd60e51b815260206004820152602360248201527f6d6170546f506f696e7446543a20696e76616c6964206669656c6420656c656d604482015262195b9d60ea1b60648201526084016103d9565b81600061125182611790565b9150506000600080516020612d638339815191528061127257611272612cf9565b8384099050600080516020612d638339815191526004820890506000600080516020612d6383398151915277b3c4d79d41a91759a9e4c7e359b6b89eaec68e62effffffd850990506000600080516020612d6383398151915283830990506112d9816117b9565b9050600080516020612d638339815191528283099150600080516020612d638339815191528183099150600080516020612d638339815191528286099150600080516020612d6383398151915261133e83600080516020612d63833981519152612d0f565b7759e26bcea0d48bacd4f263f1acdb5c4f5763473177fffffe089450600080516020612d638339815191528586099150600080516020612d638339815191528583099150600080516020612d6383398151915260038308915060006113a283611790565b909350905080156113ea57846113cd576113ca83600080516020612d63833981519152612d0f565b92505b505060408051808201909152938452602084015250909392505050565b600080516020612d638339815191526001870861141590600080516020612d63833981519152612d0f565b9550600080516020612d638339815191528687099250600080516020612d638339815191528684099250600080516020612d6383398151915260038408925061145d83611790565b9093509050801561148557846113cd576113ca83600080516020612d63833981519152612d0f565b600080516020612d638339815191528485099550600080516020612d638339815191528687099550600080516020612d638339815191528287099550600080516020612d638339815191528287099550600080516020612d63833981519152600187089550600080516020612d638339815191528687099250600080516020612d638339815191528684099250600080516020612d6383398151915260038408925061153083611790565b90935090508061158d5760405162461bcd60e51b815260206004820152602260248201527f424c533a20626164206674206d617070696e6720696d706c656d656e7461746960448201526137b760f11b60648201526084016103d9565b846113cd576113ca83600080516020612d63833981519152612d0f565b600081516020830151600080516020612d63833981519152828309600080516020612d638339815191528382099050600080516020612d63833981519152600382089050600080516020612d6383398151915282830914949350505050565b60008060006040518061018001604052808760006002811061162d5761162d612b06565b602002013581526020018760016002811061164a5761164a612b06565b60200201358152602001600080516020612d438339815191528152602001600080516020612d238339815191528152602001600080516020612d838339815191528152602001600080516020612da38339815191528152602001856000600281106116b7576116b7612b06565b60200201358152602001856001600281106116d4576116d4612b06565b60200201358152602001866001600481106116f1576116f1612b06565b602002013581526020018660006004811061170e5761170e612b06565b602002013581526020018660036004811061172b5761172b612b06565b602002013581526020018660026004811061174857611748612b06565b602002013590529050611759612640565b60006020826101808560085afa90508061177c5760008094509450505050611788565b50511515925060019150505b935093915050565b60008061179c836117c4565b915082600080516020612d63833981519152838409149050915091565b60006103b282611ef9565b6000600080516020612d638339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508584880996508587880996508587880996508587880996508587880996508587880996508581880996505050505050808283099392505050565b6000600080516020612d638339815191528083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996505050838586099450838586099450838586099450838586099450838186099450508284850993508284850993508284850993508281850993508284850993508284850993508285850993508284850993508284850993508284850993508284850993508284850993508284850993508281850995945050505050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156126d2576126d261269a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156127005761270061269a565b604052919050565b60006080828403121561271a57600080fd5b82601f83011261272957600080fd5b604051608081018181106001600160401b038211171561274b5761274b61269a565b60405280608084018581111561276057600080fd5b845b8181101561277a578035835260209283019201612762565b509195945050505050565b60006040828403121561279757600080fd5b82601f8301126127a657600080fd5b6127ae6126b0565b8060408401858111156127c057600080fd5b845b818110156127da5780358452602093840193016127c2565b509095945050505050565b80604081018310156103b257600080fd5b60008083601f84011261280857600080fd5b5081356001600160401b0381111561281f57600080fd5b6020830191508360208260071b850101111561283a57600080fd5b9250929050565b60008060008060a0858703121561285757600080fd5b61286186866127e5565b935060408501356001600160401b0381111561287c57600080fd5b612888878288016127f6565b909450925061289c905086606087016127e5565b905092959194509250565b60006001600160401b038211156128c0576128c061269a565b50601f01601f191660200190565b600080604083850312156128e157600080fd5b8235915060208301356001600160401b038111156128fe57600080fd5b8301601f8101851361290f57600080fd5b803561292261291d826128a7565b6126d8565b81815286602083850101111561293757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60408101818360005b600281101561297f578151835260209283019290910190600101612960565b50505092915050565b6000806000806000608086880312156129a057600080fd5b6129aa87876127e5565b945060408601356001600160401b03808211156129c657600080fd5b6129d289838a016127f6565b909650945060608801359150808211156129eb57600080fd5b818801915088601f8301126129ff57600080fd5b813581811115612a0e57600080fd5b8960208260061b8501011115612a2357600080fd5b9699959850939650602001949392505050565b60005b83811015612a51578181015183820152602001612a39565b50506000910152565b60008151808452612a72816020860160208601612a36565b601f01601f19169290920160200192915050565b602081526000612a996020830184612a5a565b9392505050565b600060208284031215612ab257600080fd5b5035919050565b60008060006101008486031215612acf57600080fd5b612ad985856127e5565b925060c0840185811115612aec57600080fd5b604085019250612afc86826127e5565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612b2e57600080fd5b81518015158114612a9957600080fd5b60208082526021908201527f424c533a206e756d626572206f66207075626c6963206b6579206973207a65726040820152606f60f81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156103b2576103b2612b7f565b80820281158282048414176103b2576103b2612b7f565b600060018201612bd157612bd1612b7f565b5060010190565b828152604060208201526000612bf16040830184612a5a565b949350505050565b600060208284031215612c0b57600080fd5b81516001600160401b03811115612c2157600080fd5b8201601f81018413612c3257600080fd5b8051612c4061291d826128a7565b818152856020838501011115612c5557600080fd5b612c66826020830160208601612a36565b95945050505050565b60008251612c81818460208701612a36565b9190910192915050565b600060208284031215612c9d57600080fd5b5051919050565b600060408284031215612cb657600080fd5b82601f830112612cc557600080fd5b612ccd6126b0565b806040840185811115612cdf57600080fd5b845b818110156127da578051845260209384019301612ce1565b634e487b7160e01b600052601260045260246000fd5b818103818111156103b2576103b2612b7f56fe1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c230644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9da264697066735822122026307d7712f2d905c1e8d78be9a5b3a609a6d61f5bdebb114a32bfdb7fdfb8ce64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var BN256G2Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"BN256G2\",\n \"sourceName\": \"contracts/common/BN256G2.sol\",\n \"abi\": [\n {\n \"inputs\": [],\n \"name\": \"G2_NEG_X_IM\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"G2_NEG_X_RE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"G2_NEG_Y_IM\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"G2_NEG_Y_RE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1xx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1xy\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1yx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1yy\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt2xx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt2xy\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt2yx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt2yy\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ecTwistAdd\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"s\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1xx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1xy\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1yx\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"pt1yy\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ecTwistMul\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getFieldModulus\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610dfd806100206000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c80635120675214610072578063779d890d146100ac578063783bde80146100c05780639b0c399a146100e7578063ad50f9c11461010e578063cbe96a5014610135578063defbcdee14610168575b600080fd5b6100997f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81565b6040519081526020015b60405180910390f35b600080516020610da8833981519152610099565b6100997f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281565b6100997f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81565b6100997f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81565b610148610143366004610c8c565b61017b565b6040805194855260208501939093529183015260608201526080016100a3565b610148610176366004610ce1565b61031a565b60008080808b15801561018c57508a155b8015610196575089155b80156101a0575088155b1561020a57871580156101b1575086155b80156101bb575085155b80156101c5575084155b6101fa576101d5888888886103b1565b6101fa5760405162461bcd60e51b81526004016101f190610d1c565b60405180910390fd5b508692508591508490508361030b565b87158015610216575086155b8015610220575085155b801561022a575084155b156102675761023b8c8c8c8c6103b1565b6102575760405162461bcd60e51b81526004016101f190610d1c565b508a92508991508890508761030b565b6102738c8c8c8c6103b1565b61028f5760405162461bcd60e51b81526004016101f190610d1c565b61029b888888886103b1565b6102b75760405162461bcd60e51b81526004016101f190610d1c565b60006102d18d8d8d8d600160008f8f8f8f60016000610466565b90506103018160005b602090810291909101519083015160408401516060850151608086015160a08701516106f1565b9450945094509450505b98509850985098945050505050565b600080808060018815801561032d575087155b8015610337575086155b8015610341575085155b15610355575060019750879550600061037d565b610361898989896103b1565b61037d5760405162461bcd60e51b81526004016101f190610d1c565b600061038f8b8b8b8b8b87600061075c565b905061039c8160006102da565b929e919d509b50909950975050505050505050565b60008060008060006103c5878789896107df565b90945092506103d6898981816107df565b90925090506103e782828b8b6107df565b90925090506103f884848484610850565b909450925061044884847f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e57e9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2610850565b909450925083158015610459575082155b9998505050505050505050565b61046e610c50565b8815801561047a575087155b156104bc578686868686868660005b60a089019290925260808801929092526060870192909252604086019290925260208581019390935290910201526106e1565b821580156104c8575081155b156104db578c8c8c8c8c8c866000610489565b6104e785858b8b6107df565b90955093506104f88b8b85856107df565b6060830152604082015261050e87878b8b6107df565b909750955061051f8d8d85856107df565b60a0830152608082018190528714801561053c575060a081015186145b15610581576040810151851480156105575750606081015184145b156105725761056a8d8d8d8d8d8d610892565b866000610489565b60016000818180808681610489565b61058d898985856107df565b90935091506105ad858583600260200201518460035b6020020151610850565b909d509b506105c887878360045b60200201518460056105a3565b909b5099506105d98b8b81816107df565b90995097506105fa89898360045b60200201518460055b60200201516107df565b909550935061060b89898d8d6107df565b909950975061061c898985856107df565b60a083015260808201526106328d8d81816107df565b9097509550610643878785856107df565b909750955061065487878b8b610850565b909750955061066585856002610ada565b909350915061067687878585610850565b90975095506106878b8b89896107df565b6020830152815261069a85858989610850565b909b5099506106ab8d8d8d8d6107df565b909b5099506106c5898983600260200201518460036105f0565b909d509b506106d68b8b8f8f610850565b606083015260408201525b9c9b505050505050505050505050565b600080600080600080610702610c6e565b61070c8989610b0d565b909350915061071d8d8d85856107df565b602083015281526107308b8b85856107df565b60608301819052604083018290528251602090930151929f929e50909c509a5098505050505050505050565b610764610c50565b87156107d45760018816156107a5578051602082015160408301516060840151608085015160a08601516107a29594939291908d8d8d8d8d8d610466565b90505b6107b3878787878787610892565b949b509299509097509550935091506107cd600289610d5e565b9750610764565b979650505050505050565b60008061081d600080516020610da8833981519152858809600080516020610da8833981519152858809600080516020610da8833981519152610b98565b600080516020610da883398151915280868809600080516020610da8833981519152868a09089150915094509492505050565b60008061086c8685600080516020610da8833981519152610b98565b6108858685600080516020610da8833981519152610b98565b9150915094509492505050565b6000806000806000806108a3610c50565b6108af8d8d6003610ada565b602083018190528183526108c591908f8f6107df565b602083015281526108d88b8b8b8b6107df565b90995097506108e98d8d8d8d6107df565b606083015260408201819052610909908260035b60200201518b8b6107df565b60608301526040820152805161092c908260015b602002015183518460016105f0565b6040830151919e509c5061094a908260035b60200201516008610ada565b60a083015260808201526109618d8d8360046105bb565b909d509b50610972898981816107df565b60a083015260808201526040810151606082015161099291906004610ada565b60608301819052604083018290526109ac91908f8f610850565b6060830152604082018190526109c49082600361091d565b606083015260408201526109da8b8b6008610ada565b602083018190528183526109f091908d8d6107df565b60208301819052818352610a0791908360046105e7565b602083015280825260408201516060830151610a25928460016105a3565b60608301526040820152610a3b8d8d6002610ada565b6020830152808252610a4f908260016108fd565b60208301528152610a6389898360046105e7565b60a083015260808201819052610a7b9082600561093e565b826004602002018360056020020191909152528060006020020151816001602002015182600260200201518360036020020151846004602002015185600560200201519650965096509650965096505096509650965096509650969050565b600080600080516020610da8833981519152838609600080516020610da883398151915284860991509150935093915050565b60008080610b4e600080516020610da883398151915280878809600080516020610da883398151915287880908600080516020610da8833981519152610bbc565b9050600080516020610da8833981519152818609600080516020610da8833981519152828609610b8c90600080516020610da8833981519152610d80565b92509250509250929050565b60008180610ba857610ba8610d48565b610bb28484610d80565b8508949350505050565b60008060405160208152602080820152602060408201528460608201526002840360808201528360a082015260208160c08360056107d05a03fa90519250905080610c495760405162461bcd60e51b815260206004820152601a60248201527f6572726f722077697468206d6f64756c617220696e766572736500000000000060448201526064016101f1565b5092915050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b600080600080600080600080610100898b031215610ca957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a08688031215610cf957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271706f696e74206e6f7420696e20637572766560701b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b600082610d7b57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610da157634e487b7160e01b600052601160045260246000fd5b9291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bef62bc28068690954bff720632bf34d282621c8a9da6cc064b8d7b5b6d91bb564736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b506004361061006d5760003560e01c80635120675214610072578063779d890d146100ac578063783bde80146100c05780639b0c399a146100e7578063ad50f9c11461010e578063cbe96a5014610135578063defbcdee14610168575b600080fd5b6100997f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d81565b6040519081526020015b60405180910390f35b600080516020610da8833981519152610099565b6100997f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281565b6100997f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81565b6100997f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81565b610148610143366004610c8c565b61017b565b6040805194855260208501939093529183015260608201526080016100a3565b610148610176366004610ce1565b61031a565b60008080808b15801561018c57508a155b8015610196575089155b80156101a0575088155b1561020a57871580156101b1575086155b80156101bb575085155b80156101c5575084155b6101fa576101d5888888886103b1565b6101fa5760405162461bcd60e51b81526004016101f190610d1c565b60405180910390fd5b508692508591508490508361030b565b87158015610216575086155b8015610220575085155b801561022a575084155b156102675761023b8c8c8c8c6103b1565b6102575760405162461bcd60e51b81526004016101f190610d1c565b508a92508991508890508761030b565b6102738c8c8c8c6103b1565b61028f5760405162461bcd60e51b81526004016101f190610d1c565b61029b888888886103b1565b6102b75760405162461bcd60e51b81526004016101f190610d1c565b60006102d18d8d8d8d600160008f8f8f8f60016000610466565b90506103018160005b602090810291909101519083015160408401516060850151608086015160a08701516106f1565b9450945094509450505b98509850985098945050505050565b600080808060018815801561032d575087155b8015610337575086155b8015610341575085155b15610355575060019750879550600061037d565b610361898989896103b1565b61037d5760405162461bcd60e51b81526004016101f190610d1c565b600061038f8b8b8b8b8b87600061075c565b905061039c8160006102da565b929e919d509b50909950975050505050505050565b60008060008060006103c5878789896107df565b90945092506103d6898981816107df565b90925090506103e782828b8b6107df565b90925090506103f884848484610850565b909450925061044884847f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e57e9713b03af0fed4cd2cafadeed8fdf4a74fa084e52d1852e4a2bd0685c315d2610850565b909450925083158015610459575082155b9998505050505050505050565b61046e610c50565b8815801561047a575087155b156104bc578686868686868660005b60a089019290925260808801929092526060870192909252604086019290925260208581019390935290910201526106e1565b821580156104c8575081155b156104db578c8c8c8c8c8c866000610489565b6104e785858b8b6107df565b90955093506104f88b8b85856107df565b6060830152604082015261050e87878b8b6107df565b909750955061051f8d8d85856107df565b60a0830152608082018190528714801561053c575060a081015186145b15610581576040810151851480156105575750606081015184145b156105725761056a8d8d8d8d8d8d610892565b866000610489565b60016000818180808681610489565b61058d898985856107df565b90935091506105ad858583600260200201518460035b6020020151610850565b909d509b506105c887878360045b60200201518460056105a3565b909b5099506105d98b8b81816107df565b90995097506105fa89898360045b60200201518460055b60200201516107df565b909550935061060b89898d8d6107df565b909950975061061c898985856107df565b60a083015260808201526106328d8d81816107df565b9097509550610643878785856107df565b909750955061065487878b8b610850565b909750955061066585856002610ada565b909350915061067687878585610850565b90975095506106878b8b89896107df565b6020830152815261069a85858989610850565b909b5099506106ab8d8d8d8d6107df565b909b5099506106c5898983600260200201518460036105f0565b909d509b506106d68b8b8f8f610850565b606083015260408201525b9c9b505050505050505050505050565b600080600080600080610702610c6e565b61070c8989610b0d565b909350915061071d8d8d85856107df565b602083015281526107308b8b85856107df565b60608301819052604083018290528251602090930151929f929e50909c509a5098505050505050505050565b610764610c50565b87156107d45760018816156107a5578051602082015160408301516060840151608085015160a08601516107a29594939291908d8d8d8d8d8d610466565b90505b6107b3878787878787610892565b949b509299509097509550935091506107cd600289610d5e565b9750610764565b979650505050505050565b60008061081d600080516020610da8833981519152858809600080516020610da8833981519152858809600080516020610da8833981519152610b98565b600080516020610da883398151915280868809600080516020610da8833981519152868a09089150915094509492505050565b60008061086c8685600080516020610da8833981519152610b98565b6108858685600080516020610da8833981519152610b98565b9150915094509492505050565b6000806000806000806108a3610c50565b6108af8d8d6003610ada565b602083018190528183526108c591908f8f6107df565b602083015281526108d88b8b8b8b6107df565b90995097506108e98d8d8d8d6107df565b606083015260408201819052610909908260035b60200201518b8b6107df565b60608301526040820152805161092c908260015b602002015183518460016105f0565b6040830151919e509c5061094a908260035b60200201516008610ada565b60a083015260808201526109618d8d8360046105bb565b909d509b50610972898981816107df565b60a083015260808201526040810151606082015161099291906004610ada565b60608301819052604083018290526109ac91908f8f610850565b6060830152604082018190526109c49082600361091d565b606083015260408201526109da8b8b6008610ada565b602083018190528183526109f091908d8d6107df565b60208301819052818352610a0791908360046105e7565b602083015280825260408201516060830151610a25928460016105a3565b60608301526040820152610a3b8d8d6002610ada565b6020830152808252610a4f908260016108fd565b60208301528152610a6389898360046105e7565b60a083015260808201819052610a7b9082600561093e565b826004602002018360056020020191909152528060006020020151816001602002015182600260200201518360036020020151846004602002015185600560200201519650965096509650965096505096509650965096509650969050565b600080600080516020610da8833981519152838609600080516020610da883398151915284860991509150935093915050565b60008080610b4e600080516020610da883398151915280878809600080516020610da883398151915287880908600080516020610da8833981519152610bbc565b9050600080516020610da8833981519152818609600080516020610da8833981519152828609610b8c90600080516020610da8833981519152610d80565b92509250509250929050565b60008180610ba857610ba8610d48565b610bb28484610d80565b8508949350505050565b60008060405160208152602080820152602060408201528460608201526002840360808201528360a082015260208160c08360056107d05a03fa90519250905080610c495760405162461bcd60e51b815260206004820152601a60248201527f6572726f722077697468206d6f64756c617220696e766572736500000000000060448201526064016101f1565b5092915050565b6040518060c001604052806006906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b600080600080600080600080610100898b031215610ca957600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b600080600080600060a08688031215610cf957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b602080825260129082015271706f696e74206e6f7420696e20637572766560701b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b600082610d7b57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610da157634e487b7160e01b600052601160045260246000fd5b9291505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220bef62bc28068690954bff720632bf34d282621c8a9da6cc064b8d7b5b6d91bb564736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var MerkleArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"Merkle\",\n \"sourceName\": \"contracts/common/Merkle.sol\",\n \"abi\": [],\n \"bytecode\": \"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb95e4956e03415a17fac86b59ad7d42d699865638cab948804a84759122547a64736f6c63430008110033\",\n \"deployedBytecode\": \"0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fb95e4956e03415a17fac86b59ad7d42d699865638cab948804a84759122547a64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var CheckpointManagerArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"CheckpointManager\",\n \"sourceName\": \"contracts/root/CheckpointManager.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bls\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bn256G2\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBN256G2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"chainId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"checkpointBlockNumbers\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"checkpoints\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"eventRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentCheckpointBlockNumber\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"currentValidatorSet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentValidatorSetHash\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentValidatorSetLength\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getCheckpointBlock\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getEventMembershipByBlockNumber\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getEventMembershipByEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getEventRootByBlock\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"newBls\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IBN256G2\",\n \"name\": \"newBn256G2\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId_\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Validator[]\",\n \"name\": \"newValidatorSet\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"blockHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockRound\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"currentValidatorSetHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.CheckpointMetadata\",\n \"name\": \"checkpointMetadata\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"eventRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Checkpoint\",\n \"name\": \"checkpoint\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Validator[]\",\n \"name\": \"newValidatorSet\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"bitmap\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"submit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalVotingPower\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506116f2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806376671808116100a2578063babd4ee411610071578063babd4ee4146102c8578063d4c8e3e8146102db578063e416d677146102ee578063e9193d2b146102f7578063f896f1a51461030a57600080fd5b8063766718081461024157806395b0b0271461024a5780639a8a059214610275578063b8a242521461027e57600080fd5b806361a02208116100e957806361a022081461019b578063671b3793146101be5780636969a25c146101c7578063729e7c6e1461021957806373cb1a111461022c57600080fd5b80631d1d4f261461011b57806322fd1818146101375780633569ed931461016157806352a9674b14610174575b600080fd5b61012460035481565b6040519081526020015b60405180910390f35b61014a610145366004610fdb565b610313565b60408051921515835260208301919091520161012e565b61012461016f366004610fdb565b610364565b6101247fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe281565b6101ae6101a9366004610ff4565b610398565b604051901515815260200161012e565b61012460055481565b6101fa6101d5366004610fdb565b600960205260009081526040902080546005909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161012e565b6101ae610227366004610ff4565b610410565b61023f61023a3660046110e8565b610469565b005b61012460025481565b60065461025d906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61012460015481565b6102ad61028c366004610fdb565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012e565b61023f6102d6366004611173565b6105bb565b60075461025d906001600160a01b031681565b61012460045481565b610124610305366004610fdb565b610820565b610124600b5481565b60008080610322600a85610841565b600a54909150810361033a5750600093849350915050565b6001600a828154811061034f5761034f61124c565b90600052602060002001549250925050915091565b6000600881610374600a85610841565b61037f906001611278565b8152602001908152602001600020600201549050919050565b6000806103a487610364565b9050806103f85760405162461bcd60e51b815260206004820152601e60248201527f4e4f5f4556454e545f524f4f545f464f525f424c4f434b5f4e554d424552000060448201526064015b60405180910390fd5b61040586868387876108f0565b979650505050505050565b600085815260086020526040812060020154806103f85760405162461bcd60e51b815260206004820152601760248201527609c9ebe8aac8a9ca8bea49e9ea8be8c9ea4be8aa09e869604b1b60448201526064016103ef565b600054610100900460ff16158080156104895750600054600160ff909116105b806104a35750303b1580156104a3575060005460ff166001145b6105065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ef565b6000805460ff191660011790558015610529576000805461ff0019166101001790555b6001849055600680546001600160a01b038089166001600160a01b0319928316179092556007805492881692909116919091179055600382905561056d8383610a45565b80156105b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8660400135600b54146106105760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f56414c494441544f525f5345545f4841534800000000000060448201526064016103ef565b6000600154876020013589600001358a602001358a600001358b604001358d604001358b8b60405160200161064692919061128b565b604051602081830303815290604052805190602001206040516020016106739897969594939291906112ee565b60408051601f198184030181528282528051602091820120908301520160408051601f198184030181529082905260065463a850a90960e01b835290925061073f916001600160a01b039091169063a850a909906106f7907fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe2908690600401611324565b6040805180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610737919061137a565b878585610b4b565b60025461074c8189610e55565b8735600081815260086020908152604091829020838155908b01356001820155908a01356002909101558110156107cf57600a8054600181018255600091825260208a01357fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910155600280549091906107c690611408565b90915550610803565b600a805460208a013591906107e690600190611421565b815481106107f6576107f661124c565b6000918252602090912001555b60208801356004556108158686610a45565b505050505050505050565b600a818154811061083057600080fd5b600091825260209091200154905081565b81546000908103610854575060006108ea565b82546000905b808210156108a157600061086e8383610f32565b6000878152602090209091508590820154111561088d5780915061089b565b610898816001611278565b92505b5061085a565b6000821180156108cd5750836108ca866108bc600186611421565b600091825260209091200190565b54145b156108e6576108dd600183611421565b925050506108ea565b5090505b92915050565b6000816108fe816002611518565b86106109415760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016103ef565b8661097d5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016103ef565b8660005b82811015610a3757600086868381811061099d5761099d61124c565b9050602002013590506002896109b3919061153a565b6000036109eb576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a18565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a2360028a61154e565b98505080610a3090611408565b9050610981565b509094149695505050505050565b60038190556040518190610a5f908490839060200161128b565b60408051601f198184030181529190528051602090910120600b556000805b82811015610b42576000858583818110610a9a57610a9a61124c565b905060c0020160a00135905060008111610aea5760405162461bcd60e51b8152602060048201526011602482015270564f54494e475f504f5745525f5a45524f60781b60448201526064016103ef565b610af48184611278565b9250858583818110610b0857610b0861124c565b905060c00201600960008481526020019081526020016000208181610b2d9190611579565b9050505080610b3b90611408565b9050610a7e565b50600555505050565b600354610b56610fbd565b6000805b83811015610cda57610b6d868683610f54565b15610cd25781600003610bc1576000818152600960205260409081902081516080810190925260010160048282826020028201915b815481526020019060010190808311610ba25750505050509250610cb3565b60008181526009602052604080822081516080810190925260010160048282826020028201915b815481526020019060010190808311610be857505060075488516020808b01516040808d01516060808f01518b51958c0151848d0151928d01519451630cbe96a560e41b81529c9d506001600160a01b039098169b63cbe96a509b50610c5f9a5096985093969195939493919290916004016112ee565b608060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906115d8565b6060880152604087015260208601528452505b600081815260096020526040902060050154610ccf9083611278565b91505b600101610b5a565b5080600003610d1d5760405162461bcd60e51b815260206004820152600f60248201526e4249544d41505f49535f454d50545960881b60448201526064016103ef565b60036005546002610d2e9190611562565b610d38919061154e565b8111610d825760405162461bcd60e51b815260206004820152601960248201527824a729aaa32324a1a4a2a72a2fab27aa24a723afa827aba2a960391b60448201526064016103ef565b60065460405163ebbdac9160e01b815260009182916001600160a01b039091169063ebbdac9190610dbb908b9088908e9060040161160e565b6040805180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611689565b91509150818015610e095750805b6108155760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016103ef565b600082815260086020908152604091829020825160608101845281548082526001830154938201939093526002909101549281019290925282351480610ea757508051610ea3906001611278565b8235145b610ee35760405162461bcd60e51b815260206004820152600d60248201526c0929cac82989288be8aa09e869609b1b60448201526064016103ef565b8060200151826020013511610f2d5760405162461bcd60e51b815260206004820152601060248201526f115354151657d0d21150d2d413d2539560821b60448201526064016103ef565b505050565b6000610f41600284841861154e565b610f4d90848416611278565b9392505050565b600080610f6260088461154e565b90506000610f7160088561153a565b9050848210610f8557600092505050610f4d565b6000600160ff83161b878785818110610fa057610fa061124c565b9050013560f81c60f81b60f81c60ff161611925050509392505050565b60405180608001604052806004906020820280368337509192915050565b600060208284031215610fed57600080fd5b5035919050565b60008060008060006080868803121561100c57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561103957600080fd5b818801915088601f83011261104d57600080fd5b81358181111561105c57600080fd5b8960208260051b850101111561107157600080fd5b9699959850939650602001949392505050565b6001600160a01b038116811461109957600080fd5b50565b60008083601f8401126110ae57600080fd5b50813567ffffffffffffffff8111156110c657600080fd5b60208301915083602060c0830285010111156110e157600080fd5b9250929050565b60008060008060006080868803121561110057600080fd5b853561110b81611084565b9450602086013561111b81611084565b935060408601359250606086013567ffffffffffffffff81111561113e57600080fd5b61114a8882890161109c565b969995985093965092949392505050565b60006060828403121561116d57600080fd5b50919050565b6000806000806000806000610140888a03121561118f57600080fd5b611199898961115b565b96506111a88960608a0161115b565b95506101008801898111156111bc57600080fd5b60c0890195503567ffffffffffffffff808211156111d957600080fd5b6111e58b838c0161109c565b90965094506101208a01359150808211156111ff57600080fd5b818a0191508a601f83011261121357600080fd5b81358181111561122257600080fd5b8b602082850101111561123457600080fd5b60208301945080935050505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156108ea576108ea611262565b60208082528181018390526000908460408401835b868110156112e35782356112b381611084565b6001600160a01b0316825260808385018584013760a0838101359083015260c092830192909101906001016112a0565b509695505050505050565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b82815260006020604081840152835180604085015260005b818110156113585785810183015185820160600152820161133c565b506000606082860101526060601f19601f830116850101925050509392505050565b60006040828403121561138c57600080fd5b82601f83011261139b57600080fd5b6040516040810181811067ffffffffffffffff821117156113cc57634e487b7160e01b600052604160045260246000fd5b80604052508060408401858111156113e357600080fd5b845b818110156113fd5780518352602092830192016113e5565b509195945050505050565b60006001820161141a5761141a611262565b5060010190565b818103818111156108ea576108ea611262565b600181815b8085111561146f57816000190482111561145557611455611262565b8085161561146257918102915b93841c9390800290611439565b509250929050565b600082611486575060016108ea565b81611493575060006108ea565b81600181146114a957600281146114b3576114cf565b60019150506108ea565b60ff8411156114c4576114c4611262565b50506001821b6108ea565b5060208310610133831016604e8410600b84101617156114f2575081810a6108ea565b6114fc8383611434565b806000190482111561151057611510611262565b029392505050565b6000610f4d8383611477565b634e487b7160e01b600052601260045260246000fd5b60008261154957611549611524565b500690565b60008261155d5761155d611524565b500490565b80820281158282048414176108ea576108ea611262565b813561158481611084565b81546001600160a01b0319166001600160a01b0391909116178155602082810160005b60048110156115c7578135600182860181019190915591830191016115a7565b50505060a082013560058201555050565b600080600080608085870312156115ee57600080fd5b505082516020840151604085015160609095015191969095509092509050565b61010081016040858337604082018460005b600481101561163f578151835260209283019290910190600101611620565b50505060c082018360005b600281101561166957815183526020928301929091019060010161164a565b505050949350505050565b8051801515811461168457600080fd5b919050565b6000806040838503121561169c57600080fd5b6116a583611674565b91506116b360208401611674565b9050925092905056fea2646970667358221220a7bbc925b936828d67df832f2932e0f475f5fa7058472853cfff77d2f8eded9464736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806376671808116100a2578063babd4ee411610071578063babd4ee4146102c8578063d4c8e3e8146102db578063e416d677146102ee578063e9193d2b146102f7578063f896f1a51461030a57600080fd5b8063766718081461024157806395b0b0271461024a5780639a8a059214610275578063b8a242521461027e57600080fd5b806361a02208116100e957806361a022081461019b578063671b3793146101be5780636969a25c146101c7578063729e7c6e1461021957806373cb1a111461022c57600080fd5b80631d1d4f261461011b57806322fd1818146101375780633569ed931461016157806352a9674b14610174575b600080fd5b61012460035481565b6040519081526020015b60405180910390f35b61014a610145366004610fdb565b610313565b60408051921515835260208301919091520161012e565b61012461016f366004610fdb565b610364565b6101247fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe281565b6101ae6101a9366004610ff4565b610398565b604051901515815260200161012e565b61012460055481565b6101fa6101d5366004610fdb565b600960205260009081526040902080546005909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161012e565b6101ae610227366004610ff4565b610410565b61023f61023a3660046110e8565b610469565b005b61012460025481565b60065461025d906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61012460015481565b6102ad61028c366004610fdb565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012e565b61023f6102d6366004611173565b6105bb565b60075461025d906001600160a01b031681565b61012460045481565b610124610305366004610fdb565b610820565b610124600b5481565b60008080610322600a85610841565b600a54909150810361033a5750600093849350915050565b6001600a828154811061034f5761034f61124c565b90600052602060002001549250925050915091565b6000600881610374600a85610841565b61037f906001611278565b8152602001908152602001600020600201549050919050565b6000806103a487610364565b9050806103f85760405162461bcd60e51b815260206004820152601e60248201527f4e4f5f4556454e545f524f4f545f464f525f424c4f434b5f4e554d424552000060448201526064015b60405180910390fd5b61040586868387876108f0565b979650505050505050565b600085815260086020526040812060020154806103f85760405162461bcd60e51b815260206004820152601760248201527609c9ebe8aac8a9ca8bea49e9ea8be8c9ea4be8aa09e869604b1b60448201526064016103ef565b600054610100900460ff16158080156104895750600054600160ff909116105b806104a35750303b1580156104a3575060005460ff166001145b6105065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ef565b6000805460ff191660011790558015610529576000805461ff0019166101001790555b6001849055600680546001600160a01b038089166001600160a01b0319928316179092556007805492881692909116919091179055600382905561056d8383610a45565b80156105b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8660400135600b54146106105760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f56414c494441544f525f5345545f4841534800000000000060448201526064016103ef565b6000600154876020013589600001358a602001358a600001358b604001358d604001358b8b60405160200161064692919061128b565b604051602081830303815290604052805190602001206040516020016106739897969594939291906112ee565b60408051601f198184030181528282528051602091820120908301520160408051601f198184030181529082905260065463a850a90960e01b835290925061073f916001600160a01b039091169063a850a909906106f7907fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe2908690600401611324565b6040805180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610737919061137a565b878585610b4b565b60025461074c8189610e55565b8735600081815260086020908152604091829020838155908b01356001820155908a01356002909101558110156107cf57600a8054600181018255600091825260208a01357fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910155600280549091906107c690611408565b90915550610803565b600a805460208a013591906107e690600190611421565b815481106107f6576107f661124c565b6000918252602090912001555b60208801356004556108158686610a45565b505050505050505050565b600a818154811061083057600080fd5b600091825260209091200154905081565b81546000908103610854575060006108ea565b82546000905b808210156108a157600061086e8383610f32565b6000878152602090209091508590820154111561088d5780915061089b565b610898816001611278565b92505b5061085a565b6000821180156108cd5750836108ca866108bc600186611421565b600091825260209091200190565b54145b156108e6576108dd600183611421565b925050506108ea565b5090505b92915050565b6000816108fe816002611518565b86106109415760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016103ef565b8661097d5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016103ef565b8660005b82811015610a3757600086868381811061099d5761099d61124c565b9050602002013590506002896109b3919061153a565b6000036109eb576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a18565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a2360028a61154e565b98505080610a3090611408565b9050610981565b509094149695505050505050565b60038190556040518190610a5f908490839060200161128b565b60408051601f198184030181529190528051602090910120600b556000805b82811015610b42576000858583818110610a9a57610a9a61124c565b905060c0020160a00135905060008111610aea5760405162461bcd60e51b8152602060048201526011602482015270564f54494e475f504f5745525f5a45524f60781b60448201526064016103ef565b610af48184611278565b9250858583818110610b0857610b0861124c565b905060c00201600960008481526020019081526020016000208181610b2d9190611579565b9050505080610b3b90611408565b9050610a7e565b50600555505050565b600354610b56610fbd565b6000805b83811015610cda57610b6d868683610f54565b15610cd25781600003610bc1576000818152600960205260409081902081516080810190925260010160048282826020028201915b815481526020019060010190808311610ba25750505050509250610cb3565b60008181526009602052604080822081516080810190925260010160048282826020028201915b815481526020019060010190808311610be857505060075488516020808b01516040808d01516060808f01518b51958c0151848d0151928d01519451630cbe96a560e41b81529c9d506001600160a01b039098169b63cbe96a509b50610c5f9a5096985093969195939493919290916004016112ee565b608060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906115d8565b6060880152604087015260208601528452505b600081815260096020526040902060050154610ccf9083611278565b91505b600101610b5a565b5080600003610d1d5760405162461bcd60e51b815260206004820152600f60248201526e4249544d41505f49535f454d50545960881b60448201526064016103ef565b60036005546002610d2e9190611562565b610d38919061154e565b8111610d825760405162461bcd60e51b815260206004820152601960248201527824a729aaa32324a1a4a2a72a2fab27aa24a723afa827aba2a960391b60448201526064016103ef565b60065460405163ebbdac9160e01b815260009182916001600160a01b039091169063ebbdac9190610dbb908b9088908e9060040161160e565b6040805180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611689565b91509150818015610e095750805b6108155760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016103ef565b600082815260086020908152604091829020825160608101845281548082526001830154938201939093526002909101549281019290925282351480610ea757508051610ea3906001611278565b8235145b610ee35760405162461bcd60e51b815260206004820152600d60248201526c0929cac82989288be8aa09e869609b1b60448201526064016103ef565b8060200151826020013511610f2d5760405162461bcd60e51b815260206004820152601060248201526f115354151657d0d21150d2d413d2539560821b60448201526064016103ef565b505050565b6000610f41600284841861154e565b610f4d90848416611278565b9392505050565b600080610f6260088461154e565b90506000610f7160088561153a565b9050848210610f8557600092505050610f4d565b6000600160ff83161b878785818110610fa057610fa061124c565b9050013560f81c60f81b60f81c60ff161611925050509392505050565b60405180608001604052806004906020820280368337509192915050565b600060208284031215610fed57600080fd5b5035919050565b60008060008060006080868803121561100c57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561103957600080fd5b818801915088601f83011261104d57600080fd5b81358181111561105c57600080fd5b8960208260051b850101111561107157600080fd5b9699959850939650602001949392505050565b6001600160a01b038116811461109957600080fd5b50565b60008083601f8401126110ae57600080fd5b50813567ffffffffffffffff8111156110c657600080fd5b60208301915083602060c0830285010111156110e157600080fd5b9250929050565b60008060008060006080868803121561110057600080fd5b853561110b81611084565b9450602086013561111b81611084565b935060408601359250606086013567ffffffffffffffff81111561113e57600080fd5b61114a8882890161109c565b969995985093965092949392505050565b60006060828403121561116d57600080fd5b50919050565b6000806000806000806000610140888a03121561118f57600080fd5b611199898961115b565b96506111a88960608a0161115b565b95506101008801898111156111bc57600080fd5b60c0890195503567ffffffffffffffff808211156111d957600080fd5b6111e58b838c0161109c565b90965094506101208a01359150808211156111ff57600080fd5b818a0191508a601f83011261121357600080fd5b81358181111561122257600080fd5b8b602082850101111561123457600080fd5b60208301945080935050505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156108ea576108ea611262565b60208082528181018390526000908460408401835b868110156112e35782356112b381611084565b6001600160a01b0316825260808385018584013760a0838101359083015260c092830192909101906001016112a0565b509695505050505050565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b82815260006020604081840152835180604085015260005b818110156113585785810183015185820160600152820161133c565b506000606082860101526060601f19601f830116850101925050509392505050565b60006040828403121561138c57600080fd5b82601f83011261139b57600080fd5b6040516040810181811067ffffffffffffffff821117156113cc57634e487b7160e01b600052604160045260246000fd5b80604052508060408401858111156113e357600080fd5b845b818110156113fd5780518352602092830192016113e5565b509195945050505050565b60006001820161141a5761141a611262565b5060010190565b818103818111156108ea576108ea611262565b600181815b8085111561146f57816000190482111561145557611455611262565b8085161561146257918102915b93841c9390800290611439565b509250929050565b600082611486575060016108ea565b81611493575060006108ea565b81600181146114a957600281146114b3576114cf565b60019150506108ea565b60ff8411156114c4576114c4611262565b50506001821b6108ea565b5060208310610133831016604e8410600b84101617156114f2575081810a6108ea565b6114fc8383611434565b806000190482111561151057611510611262565b029392505050565b6000610f4d8383611477565b634e487b7160e01b600052601260045260246000fd5b60008261154957611549611524565b500690565b60008261155d5761155d611524565b500490565b80820281158282048414176108ea576108ea611262565b813561158481611084565b81546001600160a01b0319166001600160a01b0391909116178155602082810160005b60048110156115c7578135600182860181019190915591830191016115a7565b50505060a082013560058201555050565b600080600080608085870312156115ee57600080fd5b505082516020840151604085015160609095015191969095509092509050565b61010081016040858337604082018460005b600481101561163f578151835260209283019290910190600101611620565b50505060c082018360005b600281101561166957815183526020928301929091019060010161164a565b505050949350505050565b8051801515811461168457600080fd5b919050565b6000806040838503121561169c57600080fd5b6116a583611674565b91506116b360208401611674565b9050925092905056fea2646970667358221220a7bbc925b936828d67df832f2932e0f475f5fa7058472853cfff77d2f8eded9464736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var ExitHelperArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ExitHelper\",\n \"sourceName\": \"contracts/root/ExitHelper.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"returnData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ExitProcessed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"unhashedLeaf\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"internalType\": \"struct IExitHelper.BatchExitInput[]\",\n \"name\": \"inputs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"batchExit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"checkpointManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract ICheckpointManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"unhashedLeaf\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"exit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ICheckpointManager\",\n \"name\": \"newCheckpointManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"processedExits\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610b62806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806350607b351461005c578063aa209cc314610071578063bd88ea7914610084578063c0857ba0146100bc578063c4d66de8146100e7575b600080fd5b61006f61006a3660046106c9565b6100fa565b005b61006f61007f36600461070b565b610200565b6100a76100923660046107bc565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6002546100cf906001600160a01b031681565b6040516001600160a01b0390911681526020016100b3565b61006f6100f53660046107ed565b610240565b6002546001600160a01b031661012b5760405162461bcd60e51b815260040161012290610811565b60405180910390fd5b8060005b818110156101fa576101f284848381811061014c5761014c610848565b905060200281019061015e919061085e565b3585858481811061017157610171610848565b9050602002810190610183919061085e565b6020013586868581811061019957610199610848565b90506020028101906101ab919061085e565b6101b990604081019061087e565b8888878181106101cb576101cb610848565b90506020028101906101dd919061085e565b6101eb9060608101906108c5565b60016103d2565b60010161012f565b50505050565b6002546001600160a01b03166102285760405162461bcd60e51b815260040161012290610811565b61023886868686868660006103d2565b505050505050565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610122565b6000805460ff191660011790558015610300576000805461ff0019166101001790555b6001600160a01b0382161580159061032157506001600160a01b0382163b15155b61036d5760405162461bcd60e51b815260206004820152601b60248201527f4578697448656c7065723a20494e56414c49445f4144445245535300000000006044820152606401610122565b600280546001600160a01b0319166001600160a01b03841617905580156103ce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60008080806103e3888a018a610925565b935093509350935084156104165760008481526001602052604090205460ff16156104115750505050610674565b610480565b60008481526001602052604090205460ff16156104805760405162461bcd60e51b815260206004820152602260248201527f4578697448656c7065723a20455849545f414c52454144595f50524f43455353604482015261115160f21b6064820152608401610122565b6002546040516001600160a01b03909116906361a02208908d906104a7908d908d90610a05565b6040519081900381206001600160e01b031960e085901b1682526104d492918f908d908d90600401610a15565b602060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610a62565b61055d5760405162461bcd60e51b815260206004820152601960248201527822bc34ba2432b63832b91d1024a72b20a624a22fa82927a7a360391b6044820152606401610122565b6000848152600160208190526040808320805460ff19169092179091555181906001600160a01b0385169061059a90889088908790602401610ad4565b60408051601f198184030181529181526020820180516001600160e01b031663f43cda8b60e01b179052516105cf9190610b07565b6000604051808303816000865af19150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b509150915081610632576000868152600160205260409020805460ff191690555b811515867f8bbfa0c9bee3785c03700d2a909592286efb83fc7e7002be5764424b9842f7ec836040516106659190610b19565b60405180910390a35050505050505b50505050505050565b60008083601f84011261068f57600080fd5b50813567ffffffffffffffff8111156106a757600080fd5b6020830191508360208260051b85010111156106c257600080fd5b9250929050565b600080602083850312156106dc57600080fd5b823567ffffffffffffffff8111156106f357600080fd5b6106ff8582860161067d565b90969095509350505050565b6000806000806000806080878903121561072457600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561074a57600080fd5b818901915089601f83011261075e57600080fd5b81358181111561076d57600080fd5b8a602082850101111561077f57600080fd5b60208301965080955050606089013591508082111561079d57600080fd5b506107aa89828a0161067d565b979a9699509497509295939492505050565b6000602082840312156107ce57600080fd5b5035919050565b6001600160a01b03811681146107ea57600080fd5b50565b6000602082840312156107ff57600080fd5b813561080a816107d5565b9392505050565b6020808252601b908201527f4578697448656c7065723a204e4f545f494e495449414c495a45440000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261087457600080fd5b9190910192915050565b6000808335601e1984360301811261089557600080fd5b83018035915067ffffffffffffffff8211156108b057600080fd5b6020019150368190038213156106c257600080fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b6020019150600581901b36038213156106c257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561093b57600080fd5b84359350602085013561094d816107d5565b9250604085013561095d816107d5565b9150606085013567ffffffffffffffff8082111561097a57600080fd5b818701915087601f83011261098e57600080fd5b8135818111156109a0576109a061090f565b604051601f8201601f19908116603f011681019083821181831017156109c8576109c861090f565b816040528281528a60208487010111156109e157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b8183823760009101908152919050565b85815284602082015283604082015260806060820152816080820152600060018060fb1b03831115610a4657600080fd5b8260051b808560a08501379190910160a0019695505050505050565b600060208284031215610a7457600080fd5b8151801515811461080a57600080fd5b60005b83811015610a9f578181015183820152602001610a87565b50506000910152565b60008151808452610ac0816020860160208601610a84565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090610afe90830184610aa8565b95945050505050565b60008251610874818460208701610a84565b60208152600061080a6020830184610aa856fea264697066735822122008943fed61b7c9037d83d6de6f81699e05bf9650fa3394883bac4a072bac958b64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806350607b351461005c578063aa209cc314610071578063bd88ea7914610084578063c0857ba0146100bc578063c4d66de8146100e7575b600080fd5b61006f61006a3660046106c9565b6100fa565b005b61006f61007f36600461070b565b610200565b6100a76100923660046107bc565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6002546100cf906001600160a01b031681565b6040516001600160a01b0390911681526020016100b3565b61006f6100f53660046107ed565b610240565b6002546001600160a01b031661012b5760405162461bcd60e51b815260040161012290610811565b60405180910390fd5b8060005b818110156101fa576101f284848381811061014c5761014c610848565b905060200281019061015e919061085e565b3585858481811061017157610171610848565b9050602002810190610183919061085e565b6020013586868581811061019957610199610848565b90506020028101906101ab919061085e565b6101b990604081019061087e565b8888878181106101cb576101cb610848565b90506020028101906101dd919061085e565b6101eb9060608101906108c5565b60016103d2565b60010161012f565b50505050565b6002546001600160a01b03166102285760405162461bcd60e51b815260040161012290610811565b61023886868686868660006103d2565b505050505050565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610122565b6000805460ff191660011790558015610300576000805461ff0019166101001790555b6001600160a01b0382161580159061032157506001600160a01b0382163b15155b61036d5760405162461bcd60e51b815260206004820152601b60248201527f4578697448656c7065723a20494e56414c49445f4144445245535300000000006044820152606401610122565b600280546001600160a01b0319166001600160a01b03841617905580156103ce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60008080806103e3888a018a610925565b935093509350935084156104165760008481526001602052604090205460ff16156104115750505050610674565b610480565b60008481526001602052604090205460ff16156104805760405162461bcd60e51b815260206004820152602260248201527f4578697448656c7065723a20455849545f414c52454144595f50524f43455353604482015261115160f21b6064820152608401610122565b6002546040516001600160a01b03909116906361a02208908d906104a7908d908d90610a05565b6040519081900381206001600160e01b031960e085901b1682526104d492918f908d908d90600401610a15565b602060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610a62565b61055d5760405162461bcd60e51b815260206004820152601960248201527822bc34ba2432b63832b91d1024a72b20a624a22fa82927a7a360391b6044820152606401610122565b6000848152600160208190526040808320805460ff19169092179091555181906001600160a01b0385169061059a90889088908790602401610ad4565b60408051601f198184030181529181526020820180516001600160e01b031663f43cda8b60e01b179052516105cf9190610b07565b6000604051808303816000865af19150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b509150915081610632576000868152600160205260409020805460ff191690555b811515867f8bbfa0c9bee3785c03700d2a909592286efb83fc7e7002be5764424b9842f7ec836040516106659190610b19565b60405180910390a35050505050505b50505050505050565b60008083601f84011261068f57600080fd5b50813567ffffffffffffffff8111156106a757600080fd5b6020830191508360208260051b85010111156106c257600080fd5b9250929050565b600080602083850312156106dc57600080fd5b823567ffffffffffffffff8111156106f357600080fd5b6106ff8582860161067d565b90969095509350505050565b6000806000806000806080878903121561072457600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561074a57600080fd5b818901915089601f83011261075e57600080fd5b81358181111561076d57600080fd5b8a602082850101111561077f57600080fd5b60208301965080955050606089013591508082111561079d57600080fd5b506107aa89828a0161067d565b979a9699509497509295939492505050565b6000602082840312156107ce57600080fd5b5035919050565b6001600160a01b03811681146107ea57600080fd5b50565b6000602082840312156107ff57600080fd5b813561080a816107d5565b9392505050565b6020808252601b908201527f4578697448656c7065723a204e4f545f494e495449414c495a45440000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261087457600080fd5b9190910192915050565b6000808335601e1984360301811261089557600080fd5b83018035915067ffffffffffffffff8211156108b057600080fd5b6020019150368190038213156106c257600080fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b6020019150600581901b36038213156106c257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561093b57600080fd5b84359350602085013561094d816107d5565b9250604085013561095d816107d5565b9150606085013567ffffffffffffffff8082111561097a57600080fd5b818701915087601f83011261098e57600080fd5b8135818111156109a0576109a061090f565b604051601f8201601f19908116603f011681019083821181831017156109c8576109c861090f565b816040528281528a60208487010111156109e157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b8183823760009101908152919050565b85815284602082015283604082015260806060820152816080820152600060018060fb1b03831115610a4657600080fd5b8260051b808560a08501379190910160a0019695505050505050565b600060208284031215610a7457600080fd5b8151801515811461080a57600080fd5b60005b83811015610a9f578181015183820152602001610a87565b50506000910152565b60008151808452610ac0816020860160208601610a84565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090610afe90830184610aa8565b95945050505050565b60008251610874818460208701610a84565b60208152600061080a6020830184610aa856fea264697066735822122008943fed61b7c9037d83d6de6f81699e05bf9650fa3394883bac4a072bac958b64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var StateSenderArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"StateSender\",\n \"sourceName\": \"contracts/root/StateSender.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"StateSynced\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_LENGTH\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"counter\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"syncState\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610297806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fd1d7f6609674cc5871fdb4b0bcd4f0a214118411de9e38983866514f22659165858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122001854f5b142666bc44e5f66226d8f0a84e2c503b8ab6002552f648cf58e3336c64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fd1d7f6609674cc5871fdb4b0bcd4f0a214118411de9e38983866514f22659165858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122001854f5b142666bc44e5f66226d8f0a84e2c503b8ab6002552f648cf58e3336c64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var RootERC20PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"RootERC20Predicate\",\n \"sourceName\": \"contracts/root/RootERC20Predicate.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childERC20Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"exitHelper\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newStateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newExitHelper\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildERC20Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"nativeTokenRootAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mapToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onL2StateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506113c8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100bf5760003560e01c8063cb10f94c1161007c578063cb10f94c1461018d578063d41f1771146101a6578063d57184e4146101cd578063f213159c146101e0578063f43cda8b146101f3578063f4a120f714610206578063f64512551461021957600080fd5b80631459457a146100c457806347e7ef24146100d95780637efab4f5146100ec57806395c7041c14610132578063b176806514610145578063b68ad1e41461017a575b600080fd5b6100d76100d2366004610f4c565b610240565b005b6100d76100e7366004610fbd565b6104ae565b6101156100fa366004610fe9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610115906001600160a01b031681565b61016c7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610129565b600354610115906001600160a01b031681565b600054610115906201000090046001600160a01b031681565b61016c7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b600254610115906001600160a01b031681565b6100d76101ee36600461100d565b6104bd565b6100d761020136600461104e565b6104cd565b6100d7610214366004610fe9565b610654565b61016c7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610305576000805461ff0019166101001790555b6001600160a01b0386161580159061032557506001600160a01b03851615155b801561033957506001600160a01b03841615155b801561034d57506001600160a01b03831615155b6103a85760405162461bcd60e51b815260206004820152602660248201527f526f6f7445524332305072656469636174653a204241445f494e495449414c496044820152652d20aa24a7a760d11b60648201526084016102d9565b6000805462010000600160b01b031916620100006001600160a01b038981169190910291909117909155600180546001600160a01b03199081168884161790915560028054821687841617905560038054909116858316179055821615610460576001600160a01b03821660008181526004602052604080822080546001600160a01b03191661101090811790915590519092917f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61791a35b80156104a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6104b9823383610a0b565b5050565b6104c8838383610a0b565b505050565b6001546001600160a01b031633146105335760405162461bcd60e51b8152602060048201526024808201527f526f6f7445524332305072656469636174653a204f4e4c595f455849545f4845604482015263262822a960e11b60648201526084016102d9565b6002546001600160a01b038481169116146105a15760405162461bcd60e51b815260206004820152602860248201527f526f6f7445524332305072656469636174653a204f4e4c595f4348494c445f50604482015267524544494341544560c01b60648201526084016102d9565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696105d06020600084866110d7565b6105d991611101565b036105f8576105f36105ee82602081866110d7565b610b90565b61064e565b60405162461bcd60e51b815260206004820152602560248201527f526f6f7445524332305072656469636174653a20494e56414c49445f5349474e604482015264415455524560d81b60648201526084016102d9565b50505050565b6001600160a01b0381166106b45760405162461bcd60e51b815260206004820152602160248201527f526f6f7445524332305072656469636174653a20494e56414c49445f544f4b456044820152602760f91b60648201526084016102d9565b6001600160a01b0381811660009081526004602052604090205416156107275760405162461bcd60e51b815260206004820152602260248201527f526f6f7445524332305072656469636174653a20414c52454144595f4d415050604482015261115160f21b60648201526084016102d9565b60035460408051606084901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03838116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948a9491936306fdde03938184019390918290030181865afa15801561086d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610895919081019061115a565b876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156108d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fb919081019061115a565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fc565b60405160200161097195949392919061124b565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161099d92919061129d565b600060405180830381600087803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a35050565b6001600160a01b0383811660009081526004602052604090205416610a3357610a3383610654565b6001600160a01b038084166000908152600460205260409020541680610a5b57610a5b6112c1565b610a706001600160a01b038516333085610c48565b600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b0388811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352620100009094048416936316f1983193610b019391169160c40161129d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b0316856001600160a01b03167f8be9001bb612c7123a1861dc0d9d94e683261f6cbbd7c7438b708975bc4908a33386604051610b829291906112d7565b60405180910390a450505050565b6000808080610ba1858701876112f0565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610bd457610bd46112c1565b610be86001600160a01b0386168484610cb3565b826001600160a01b0316816001600160a01b0316866001600160a01b03167f9c4f744b2e971d7058a9d8f43977e0e17bf7d57a48659f0e18541b7ee3d022e48786604051610c379291906112d7565b60405180910390a450505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261064e9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610cd2565b6104c88363a9059cbb60e01b8484604051602401610c7c9291906112d7565b6000610d27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610da49092919063ffffffff16565b8051909150156104c85780806020019051810190610d459190611341565b6104c85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d9565b6060610db38484600085610dbb565b949350505050565b606082471015610e1c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d9565b600080866001600160a01b03168587604051610e389190611363565b60006040518083038185875af1925050503d8060008114610e75576040519150601f19603f3d011682016040523d82523d6000602084013e610e7a565b606091505b5091509150610e8b87838387610e96565b979650505050505050565b60608315610f05578251600003610efe576001600160a01b0385163b610efe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d9565b5081610db3565b610db38383815115610f1a5781518083602001fd5b8060405162461bcd60e51b81526004016102d9919061137f565b6001600160a01b0381168114610f4957600080fd5b50565b600080600080600060a08688031215610f6457600080fd5b8535610f6f81610f34565b94506020860135610f7f81610f34565b93506040860135610f8f81610f34565b92506060860135610f9f81610f34565b91506080860135610faf81610f34565b809150509295509295909350565b60008060408385031215610fd057600080fd5b8235610fdb81610f34565b946020939093013593505050565b600060208284031215610ffb57600080fd5b813561100681610f34565b9392505050565b60008060006060848603121561102257600080fd5b833561102d81610f34565b9250602084013561103d81610f34565b929592945050506040919091013590565b6000806000806060858703121561106457600080fd5b84359350602085013561107681610f34565b9250604085013567ffffffffffffffff8082111561109357600080fd5b818701915087601f8301126110a757600080fd5b8135818111156110b657600080fd5b8860208285010111156110c857600080fd5b95989497505060200194505050565b600080858511156110e757600080fd5b838611156110f457600080fd5b5050820193919092039150565b8035602083101561111a57600019602084900360031b1b165b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015611151578181015183820152602001611139565b50506000910152565b60006020828403121561116c57600080fd5b815167ffffffffffffffff8082111561118457600080fd5b818401915084601f83011261119857600080fd5b8151818111156111aa576111aa611120565b604051601f8201601f19908116603f011681019083821181831017156111d2576111d2611120565b816040528281528760208487010111156111eb57600080fd5b610e8b836020830160208801611136565b60006020828403121561120e57600080fd5b815160ff8116811461100657600080fd5b60008151808452611237816020860160208601611136565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260a0604082018190526000906112759083018661121f565b8281036060840152611287818661121f565b91505060ff831660808301529695505050505050565b6001600160a01b0383168152604060208201819052600090610db39083018461121f565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000806000806080858703121561130657600080fd5b843561131181610f34565b9350602085013561132181610f34565b9250604085013561133181610f34565b9396929550929360600135925050565b60006020828403121561135357600080fd5b8151801515811461100657600080fd5b60008251611375818460208701611136565b9190910192915050565b602081526000611006602083018461121f56fea264697066735822122071186a5f68a0e568193775380eab31143f89ff0d61291b20e262c95a735f1d7b64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100bf5760003560e01c8063cb10f94c1161007c578063cb10f94c1461018d578063d41f1771146101a6578063d57184e4146101cd578063f213159c146101e0578063f43cda8b146101f3578063f4a120f714610206578063f64512551461021957600080fd5b80631459457a146100c457806347e7ef24146100d95780637efab4f5146100ec57806395c7041c14610132578063b176806514610145578063b68ad1e41461017a575b600080fd5b6100d76100d2366004610f4c565b610240565b005b6100d76100e7366004610fbd565b6104ae565b6101156100fa366004610fe9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610115906001600160a01b031681565b61016c7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610129565b600354610115906001600160a01b031681565b600054610115906201000090046001600160a01b031681565b61016c7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b600254610115906001600160a01b031681565b6100d76101ee36600461100d565b6104bd565b6100d761020136600461104e565b6104cd565b6100d7610214366004610fe9565b610654565b61016c7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610305576000805461ff0019166101001790555b6001600160a01b0386161580159061032557506001600160a01b03851615155b801561033957506001600160a01b03841615155b801561034d57506001600160a01b03831615155b6103a85760405162461bcd60e51b815260206004820152602660248201527f526f6f7445524332305072656469636174653a204241445f494e495449414c496044820152652d20aa24a7a760d11b60648201526084016102d9565b6000805462010000600160b01b031916620100006001600160a01b038981169190910291909117909155600180546001600160a01b03199081168884161790915560028054821687841617905560038054909116858316179055821615610460576001600160a01b03821660008181526004602052604080822080546001600160a01b03191661101090811790915590519092917f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61791a35b80156104a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6104b9823383610a0b565b5050565b6104c8838383610a0b565b505050565b6001546001600160a01b031633146105335760405162461bcd60e51b8152602060048201526024808201527f526f6f7445524332305072656469636174653a204f4e4c595f455849545f4845604482015263262822a960e11b60648201526084016102d9565b6002546001600160a01b038481169116146105a15760405162461bcd60e51b815260206004820152602860248201527f526f6f7445524332305072656469636174653a204f4e4c595f4348494c445f50604482015267524544494341544560c01b60648201526084016102d9565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696105d06020600084866110d7565b6105d991611101565b036105f8576105f36105ee82602081866110d7565b610b90565b61064e565b60405162461bcd60e51b815260206004820152602560248201527f526f6f7445524332305072656469636174653a20494e56414c49445f5349474e604482015264415455524560d81b60648201526084016102d9565b50505050565b6001600160a01b0381166106b45760405162461bcd60e51b815260206004820152602160248201527f526f6f7445524332305072656469636174653a20494e56414c49445f544f4b456044820152602760f91b60648201526084016102d9565b6001600160a01b0381811660009081526004602052604090205416156107275760405162461bcd60e51b815260206004820152602260248201527f526f6f7445524332305072656469636174653a20414c52454144595f4d415050604482015261115160f21b60648201526084016102d9565b60035460408051606084901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03838116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948a9491936306fdde03938184019390918290030181865afa15801561086d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610895919081019061115a565b876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156108d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fb919081019061115a565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fc565b60405160200161097195949392919061124b565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161099d92919061129d565b600060405180830381600087803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a35050565b6001600160a01b0383811660009081526004602052604090205416610a3357610a3383610654565b6001600160a01b038084166000908152600460205260409020541680610a5b57610a5b6112c1565b610a706001600160a01b038516333085610c48565b600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b0388811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352620100009094048416936316f1983193610b019391169160c40161129d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b0316856001600160a01b03167f8be9001bb612c7123a1861dc0d9d94e683261f6cbbd7c7438b708975bc4908a33386604051610b829291906112d7565b60405180910390a450505050565b6000808080610ba1858701876112f0565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610bd457610bd46112c1565b610be86001600160a01b0386168484610cb3565b826001600160a01b0316816001600160a01b0316866001600160a01b03167f9c4f744b2e971d7058a9d8f43977e0e17bf7d57a48659f0e18541b7ee3d022e48786604051610c379291906112d7565b60405180910390a450505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261064e9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610cd2565b6104c88363a9059cbb60e01b8484604051602401610c7c9291906112d7565b6000610d27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610da49092919063ffffffff16565b8051909150156104c85780806020019051810190610d459190611341565b6104c85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d9565b6060610db38484600085610dbb565b949350505050565b606082471015610e1c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d9565b600080866001600160a01b03168587604051610e389190611363565b60006040518083038185875af1925050503d8060008114610e75576040519150601f19603f3d011682016040523d82523d6000602084013e610e7a565b606091505b5091509150610e8b87838387610e96565b979650505050505050565b60608315610f05578251600003610efe576001600160a01b0385163b610efe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d9565b5081610db3565b610db38383815115610f1a5781518083602001fd5b8060405162461bcd60e51b81526004016102d9919061137f565b6001600160a01b0381168114610f4957600080fd5b50565b600080600080600060a08688031215610f6457600080fd5b8535610f6f81610f34565b94506020860135610f7f81610f34565b93506040860135610f8f81610f34565b92506060860135610f9f81610f34565b91506080860135610faf81610f34565b809150509295509295909350565b60008060408385031215610fd057600080fd5b8235610fdb81610f34565b946020939093013593505050565b600060208284031215610ffb57600080fd5b813561100681610f34565b9392505050565b60008060006060848603121561102257600080fd5b833561102d81610f34565b9250602084013561103d81610f34565b929592945050506040919091013590565b6000806000806060858703121561106457600080fd5b84359350602085013561107681610f34565b9250604085013567ffffffffffffffff8082111561109357600080fd5b818701915087601f8301126110a757600080fd5b8135818111156110b657600080fd5b8860208285010111156110c857600080fd5b95989497505060200194505050565b600080858511156110e757600080fd5b838611156110f457600080fd5b5050820193919092039150565b8035602083101561111a57600019602084900360031b1b165b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015611151578181015183820152602001611139565b50506000910152565b60006020828403121561116c57600080fd5b815167ffffffffffffffff8082111561118457600080fd5b818401915084601f83011261119857600080fd5b8151818111156111aa576111aa611120565b604051601f8201601f19908116603f011681019083821181831017156111d2576111d2611120565b816040528281528760208487010111156111eb57600080fd5b610e8b836020830160208801611136565b60006020828403121561120e57600080fd5b815160ff8116811461100657600080fd5b60008151808452611237816020860160208601611136565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260a0604082018190526000906112759083018661121f565b8281036060840152611287818661121f565b91505060ff831660808301529695505050505050565b6001600160a01b0383168152604060208201819052600090610db39083018461121f565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000806000806080858703121561130657600080fd5b843561131181610f34565b9350602085013561132181610f34565b9250604085013561133181610f34565b9396929550929360600135925050565b60006020828403121561135357600080fd5b8151801515811461100657600080fd5b60008251611375818460208701611136565b9190910192915050565b602081526000611006602083018461121f56fea264697066735822122071186a5f68a0e568193775380eab31143f89ff0d61291b20e262c95a735f1d7b64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"
var MockERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC20\",\n \"sourceName\": \"contracts/mocks/MockERC20.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b50604080518082018252600480825263151154d560e21b60208084018290528451808601909552918452908301529081816005620000508382620002e2565b5060066200005f8282620002e2565b50506007805460ff191690555062000079600033620000d9565b620000a57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d9565b620000d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d9565b5050620003ae565b620000e58282620000e9565b5050565b6200010082826200012c60201b620008871760201c565b6000828152600160209081526040909120620001279183906200090b620001cc821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e5576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e3836001600160a01b038416620001ec565b90505b92915050565b60008181526001830160205260408120546200023557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001e6565b506000620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026957607f821691505b6020821081036200028a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012757600081815260208120601f850160051c81016020861015620002b95750805b601f850160051c820191505b81811015620002da57828155600101620002c5565b505050505050565b81516001600160401b03811115620002fe57620002fe6200023e565b62000316816200030f845462000254565b8462000290565b602080601f8311600181146200034e5760008415620003355750858301515b600019600386901b1c1916600185901b178555620002da565b600085815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117fa80620003be6000396000f3fe608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220869bafd8796afcbd2b83d9ab479f7920e24272bf48f6b43b28917d060a789e4d64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220869bafd8796afcbd2b83d9ab479f7920e24272bf48f6b43b28917d060a789e4d64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n"