Overview ERC20
PRICE
$0.05801 @ 0.000000003269 ETH (-3.26%)

ON-CHAIN MARKET CAP $87,803.89

Total Supply:
1,985,976,784,115.82 AI

Holders:
3,490
Profile Summary
Blockchain:
Base (8453)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
InterchainToken

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1000 runs

Created At:
Mon, 18 Dec 2023 12:57:17 GMT
InterchainToken.sol
contracts
interchain-token
InterchainToken.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "interchainTokenServiceAddress",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AlreadyInitialized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InterchainTokenServiceAddressZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidAccount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fromAccount",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "toAccount",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "InvalidProposedRoles",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidS",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidSignature",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidV",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "MissingAllRoles",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "MissingAnyOfRoles",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint8",
        "name": "role",
        "type": "uint8"
      }
    ],
    "name": "MissingRole",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PermitExpired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenIdZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenNameEmpty",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenSymbolEmpty",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "RolesAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "fromAccount",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "toAccount",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "RolesProposed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "accountRoles",
        "type": "uint256"
      }
    ],
    "name": "RolesRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fromMinter",
        "type": "address"
      }
    ],
    "name": "acceptMintership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint8",
        "name": "role",
        "type": "uint8"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "addedValue",
        "type": "uint256"
      }
    ],
    "name": "increaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "tokenId_",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "minter",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "tokenName",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "tokenSymbol",
        "type": "string"
      },
      {
        "internalType": "uint8",
        "name": "tokenDecimals",
        "type": "uint8"
      }
    ],
    "name": "init",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "interchainTokenId",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "interchainTokenService",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "destinationChain",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "recipient",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "metadata",
        "type": "bytes"
      }
    ],
    "name": "interchainTransfer",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "destinationChain",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "recipient",
        "type": "bytes"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "metadata",
        "type": "bytes"
      }
    ],
    "name": "interchainTransferFrom",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "addr",
        "type": "address"
      }
    ],
    "name": "isMinter",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nameHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "issuer",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter_",
        "type": "address"
      }
    ],
    "name": "proposeMintership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "minter_",
        "type": "address"
      }
    ],
    "name": "transferMintership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60a060405234801561001057600080fd5b5060405162001d3b38038062001d3b83398101604081905261003191610092565b61005a60017fc778385ecb3e8cecb82223fa1f343ec6865b2d64c65b0c15c7e8aef225d9e21455565b6001600160a01b0381166100815760405163a76361c360e01b815260040160405180910390fd5b6001600160a01b03166080526100c2565b6000602082840312156100a457600080fd5b81516001600160a01b03811681146100bb57600080fd5b9392505050565b608051611c48620000f360003960008181610226015281816108cc01528181610a030152610b040152611c486000f3fe6080604052600436106101ac5760003560e01c806395a8c58d116100ec578063aa271e1a1161008a578063cf86a95a11610064578063cf86a95a14610550578063d505accf14610570578063dd62ed3e14610590578063f172a4ce146105c857600080fd5b8063aa271e1a146104fd578063b5ef694d1461051d578063bc0ba3c51461053d57600080fd5b80639dc29fac116100c65780639dc29fac1461048a578063a457c2d7146104aa578063a60fee37146104ca578063a9059cbb146104dd57600080fd5b806395a8c58d1461043557806395d89b41146104555780639c1766771461046a57600080fd5b8063313ce5671161015957806340c10f191161013357806340c10f191461039957806370a08231146103bb5780637ecebe00146103e85780638626698f1461041557600080fd5b8063313ce567146102a55780633644e515146102d1578063395093511461037957600080fd5b8063129d81881161018a578063129d81881461025057806318160ddd1461026f57806323b872dd1461028557600080fd5b806306fdde03146101b1578063095ea7b3146101dc57806309c6bed91461020c575b600080fd5b3480156101bd57600080fd5b506101c66105de565b6040516101d391906115c3565b60405180910390f35b3480156101e857600080fd5b506101fc6101f7366004611612565b61066c565b60405190151581526020016101d3565b34801561021857600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016101d3565b34801561025c57600080fd5b506008545b6040519081526020016101d3565b34801561027b57600080fd5b5061026160025481565b34801561029157600080fd5b506101fc6102a036600461163c565b610683565b3480156102b157600080fd5b506007546102bf9060ff1681565b60405160ff90911681526020016101d3565b3480156102dd57600080fd5b5060035460408051808201825260018152603160f81b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81830152808301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401524660808401523060a0808501919091528251808503909101815260c09093019091528151910120610261565b34801561038557600080fd5b506101fc610394366004611612565b6106da565b3480156103a557600080fd5b506103b96103b4366004611612565b610711565b005b3480156103c757600080fd5b506102616103d6366004611678565b60006020819052908152604090205481565b3480156103f457600080fd5b50610261610403366004611678565b60046020526000908152604090205481565b34801561042157600080fd5b506103b96104303660046116ed565b610768565b34801561044157600080fd5b506101fc610450366004611788565b610941565b34801561046157600080fd5b506101c6610963565b34801561047657600080fd5b506103b9610485366004611678565b610970565b34801561049657600080fd5b506103b96104a5366004611612565b61097f565b3480156104b657600080fd5b506101fc6104c5366004611612565b6109bf565b6103b96104d83660046117bb565b6109f6565b3480156104e957600080fd5b506101fc6104f8366004611612565b610aa2565b34801561050957600080fd5b506101fc610518366004611678565b610aaf565b34801561052957600080fd5b506103b9610538366004611678565b610abb565b6103b961054b36600461186f565b610b01565b34801561055c57600080fd5b506103b961056b366004611678565b610b67565b34801561057c57600080fd5b506103b961058b366004611913565b610ba9565b34801561059c57600080fd5b506102616105ab36600461197d565b600160209081526000928352604080842090915290825290205481565b3480156105d457600080fd5b5061026160035481565b600580546105eb906119a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610617906119a7565b80156106645780601f1061063957610100808354040283529160200191610664565b820191906000526020600020905b81548152906001019060200180831161064757829003601f168201915b505050505081565b6000610679338484610eea565b5060015b92915050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146106c4576106c485336106bf86856119f7565b610eea565b6106cf858585610f87565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106799185906106bf908690611a0a565b600061072c61071f33611063565b600160ff84161b16151590565b6107595760405163bb6c163960e01b815233600482015260ff821660248201526044015b60405180910390fd5b6107638383611077565b505050565b7fc778385ecb3e8cecb82223fa1f343ec6865b2d64c65b0c15c7e8aef225d9e21454156107c1576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ea60017fc778385ecb3e8cecb82223fa1f343ec6865b2d64c65b0c15c7e8aef225d9e21455565b86610821576040517f248fd78f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084900361085c576040517f0d7673b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829003610897576040517ff09ce01300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056108a4858783611a81565b5060066108b2838583611a81565b506007805460ff191660ff831617905560088790556108f07f0000000000000000000000000000000000000000000000000000000000000000611128565b6108f986611128565b61093885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061113392505050565b50505050505050565b600061095c61094f84611063565b600160ff85161b16151590565b9392505050565b600680546105eb906119a7565b61097c81336000611140565b50565b600061098d61071f33611063565b6109b55760405163bb6c163960e01b815233600482015260ff82166024820152604401610750565b6107638383611151565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916106799185906106bf9086906119f7565b610a018833856111fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370756cde34610a3a60085490565b8b8b8b8b8b8b8b8b6040518b63ffffffff1660e01b8152600401610a6699989796959493929190611b6b565b6000604051808303818588803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b50505050505050505050505050565b6000610679338484610f87565b600061067d8282610941565b6000610ac961071f33611063565b610af15760405163bb6c163960e01b815233600482015260ff82166024820152604401610750565b610afd33836000611240565b5050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370756cde34610b3b60085490565b848c8c8c8c8c8c8c6040518b63ffffffff1660e01b8152600401610a6699989796959493929190611b6b565b6000610b7561071f33611063565b610b9d5760405163bb6c163960e01b815233600482015260ff82166024820152604401610750565b610afd33836000611251565b83421115610be3576040517f1a15a3cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0811115610c3d576040517f40c1e74800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ff16601b14158015610c5557508260ff16601c14155b15610c8c576040517f119bce3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060400160405280600281526020017f1901000000000000000000000000000000000000000000000000000000000000815250610d6060035460408051808201825260018152603160f81b60209182015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81830152808301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401524660808401523060a0808501919091528251808503909101815260c0909301909152815191012090565b6001600160a01b038a16600090815260046020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92909190610dae83611bd2565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e00160405160208183030381529060405280519060200120604051602001610e1293929190611beb565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610e7d573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b031614610ed4576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610edf898989610eea565b505050505050505050565b6001600160a01b0383161580610f0757506001600160a01b038216155b15610f2557604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383161580610fa457506001600160a01b038216155b15610fc257604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b03831660009081526020819052604081208054839290610fea9084906119f7565b90915550506001600160a01b03821660009081526020819052604081208054839290611017908490611a0a565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f7a91815260200190565b60008061106f83611262565b549392505050565b6001600160a01b03821661109e57604051630da30f6560e31b815260040160405180910390fd5b80600260008282546110b09190611a0a565b90915550506001600160a01b038216600090815260208190526040812080548392906110dd908490611a0a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b61097c8160006112cf565b8051602090910120600355565b6107638383600160ff85161b6112df565b6001600160a01b03821661117857604051630da30f6560e31b815260040160405180910390fd5b6001600160a01b038216600090815260208190526040812080548392906111a09084906119f7565b9250508190555080600260008282546111b991906119f7565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161111c565b6001600160a01b03808416600090815260016020908152604080832093861683529290522054600019811461123a5761123a84846106bf85856119f7565b50505050565b6107638383600160ff85161b611352565b6107638383600160ff85161b6113e4565b60007fde9bdca322e1a848f72215bc15cf2c87fe7749145789a9ee281a2a6290af26ab826040516020016112b292919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b604051602081830303815290604052805190602001209050919050565b610afd82600160ff84161b61142f565b806112ea8484611490565b1461133b576040517f6004fe400000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610750565b611347838360006114a6565b6107638383836113e4565b61136561135e84611063565b8216821490565b61139457604051631fe9beed60e21b81526001600160a01b038416600482015260248101829052604401610750565b61139f8383836114a6565b816001600160a01b0316836001600160a01b03167ff7158d1591c2cf17c0e6b9459d86365c47fe0969c79f40ef49e0c437d8f3991483604051610f7a91815260200190565b6113f061135e84611063565b61141f57604051631fe9beed60e21b81526001600160a01b038416600482015260248101829052604401610750565b61142983826114bb565b61076382825b60008161143b84611063565b1790506114488382611510565b826001600160a01b03167f34e73c57659d4b6809b53db4feee9b007b892e978114eda420d2991aba1501438360405161148391815260200190565b60405180910390a2505050565b60008061149d8484611523565b54949350505050565b60006114b28484611523565b91909155505050565b600081196114c884611063565b1690506114d58382611510565b826001600160a01b03167fccf920c8facee98a9c2a6c6124f2857b87b17e9f3a819bfcc6945196ee77366b8360405161148391815260200190565b600061151b83611262565b919091555050565b60007ff96e07b2f4fbb81c31567d2b261589af429e98f0958d53f7e6ad5d63aea0ab7c838360405160200161158193929190928352606091821b6bffffffffffffffffffffffff199081166020850152911b16603482015260480190565b60405160208183030381529060405280519060200120905092915050565b60005b838110156115ba5781810151838201526020016115a2565b50506000910152565b60208152600082518060208401526115e281604085016020870161159f565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461160d57600080fd5b919050565b6000806040838503121561162557600080fd5b61162e836115f6565b946020939093013593505050565b60008060006060848603121561165157600080fd5b61165a846115f6565b9250611668602085016115f6565b9150604084013590509250925092565b60006020828403121561168a57600080fd5b61095c826115f6565b60008083601f8401126116a557600080fd5b50813567ffffffffffffffff8111156116bd57600080fd5b6020830191508360208285010111156116d557600080fd5b9250929050565b803560ff8116811461160d57600080fd5b600080600080600080600060a0888a03121561170857600080fd5b87359650611718602089016115f6565b9550604088013567ffffffffffffffff8082111561173557600080fd5b6117418b838c01611693565b909750955060608a013591508082111561175a57600080fd5b506117678a828b01611693565b909450925061177a9050608089016116dc565b905092959891949750929550565b6000806040838503121561179b57600080fd5b6117a4836115f6565b91506117b2602084016116dc565b90509250929050565b60008060008060008060008060a0898b0312156117d757600080fd5b6117e0896115f6565b9750602089013567ffffffffffffffff808211156117fd57600080fd5b6118098c838d01611693565b909950975060408b013591508082111561182257600080fd5b61182e8c838d01611693565b909750955060608b0135945060808b013591508082111561184e57600080fd5b5061185b8b828c01611693565b999c989b5096995094979396929594505050565b60008060008060008060006080888a03121561188a57600080fd5b873567ffffffffffffffff808211156118a257600080fd5b6118ae8b838c01611693565b909950975060208a01359150808211156118c757600080fd5b6118d38b838c01611693565b909750955060408a0135945060608a01359150808211156118f357600080fd5b506119008a828b01611693565b989b979a50959850939692959293505050565b600080600080600080600060e0888a03121561192e57600080fd5b611937886115f6565b9650611945602089016115f6565b95506040880135945060608801359350611961608089016116dc565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561199057600080fd5b611999836115f6565b91506117b2602084016115f6565b600181811c908216806119bb57607f821691505b6020821081036119db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561067d5761067d6119e1565b8082018082111561067d5761067d6119e1565b634e487b7160e01b600052604160045260246000fd5b601f82111561076357600081815260208120601f850160051c81016020861015611a5a5750805b601f850160051c820191505b81811015611a7957828155600101611a66565b505050505050565b67ffffffffffffffff831115611a9957611a99611a1d565b611aad83611aa783546119a7565b83611a33565b6000601f841160018114611ae15760008515611ac95750838201355b600019600387901b1c1916600186901b178355611b3b565b600083815260209020601f19861690835b82811015611b125786850135825560209485019460019092019101611af2565b5086821015611b2f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8981526001600160a01b038916602082015260c060408201526000611b9460c08301898b611b42565b8281036060840152611ba781888a611b42565b905085608084015282810360a0840152611bc2818587611b42565b9c9b505050505050505050505050565b600060018201611be457611be46119e1565b5060010190565b60008451611bfd81846020890161159f565b9190910192835250602082015260400191905056fea26469706673582212203daee882a83c8072ebb1f4308392c6f302a1c043ed2eda3bf4b01322f3ef9bcf64736f6c63430008150033000000000000000000000000b5fb4be02232b1bba4dc8f81dc24c26980de9e3c