0 txs
4 calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
getImplementation
viewfunction getImplementation() view returns (address)
iconTokenAddress
viewfunction iconTokenAddress() view returns (string)
name
viewfunction name() view returns (string)
nid
viewfunction nid() view returns (string)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
xCall
viewfunction xCall() view returns (address)
xCallManager
viewfunction xCallManager() view returns (address)
xCallNetworkAddress
viewfunction xCallNetworkAddress() view returns (string)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
crossTransfer
payablefunction crossTransfer(string to, uint256 value, bytes data) payable
crossTransfer
payablefunction crossTransfer(string to, uint256 value) payable
handleCallMessage
nonpayablefunction handleCallMessage(string from, bytes data, string[] protocols)
initialize_token
nonpayablefunction initialize_token(address _xCall, string _iconTokenAddress, address _xCallManager)
initialize
nonpayablefunction initialize(string name, string symbol, address _xCall, string _iconTokenAddress, address _xCallManager)
renounceOwnership
nonpayablefunction renounceOwnership()
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801561001457600080fd5b5061001d61002a565b61002561002a565b6100dc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561007a5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d95780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614051610105600039600081816114030152818161142c015261156d01526140516000f3fe6080604052600436106101815760003560e01c80638da5cb5b116100d1578063b87045931161008a578063de8aa96711610064578063de8aa96714610484578063e754f58714610499578063e8bfdc53146104ae578063f2fde38b146104ce57600080fd5b8063b870459314610424578063d6f340a914610444578063dd62ed3e1461046457600080fd5b80638da5cb5b1461034557806395d89b4114610396578063a9059cbb146103ab578063aaf10f42146103cb578063ad3cb1cc146103e0578063b16c1ced1461041157600080fd5b80634096bf051161013e57806352d1902d1161011857806352d1902d146102b85780635d6a16f5146102cd57806370a08231146102ed578063715018a61461033057600080fd5b80634096bf051461027d5780634bed2551146102925780634f1ef286146102a557600080fd5b806306fdde0314610186578063095ea7b3146101b157806318160ddd146101e157806323b872dd1461021f57806328ccf8441461023f578063313ce56714610261575b600080fd5b34801561019257600080fd5b5061019b6104ee565b6040516101a89190613257565b60405180910390f35b3480156101bd57600080fd5b506101d16101cc366004613286565b6105b1565b60405190151581526020016101a8565b3480156101ed57600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b6040519081526020016101a8565b34801561022b57600080fd5b506101d161023a3660046132b0565b6105cb565b34801561024b57600080fd5b5061025f61025a3660046133b3565b6105f1565b005b34801561026d57600080fd5b50604051601281526020016101a8565b34801561028957600080fd5b5061019b6108d0565b61025f6102a0366004613466565b61095e565b61025f6102b33660046134aa565b61097c565b3480156102c457600080fd5b50610211610997565b3480156102d957600080fd5b5061025f6102e836600461353f565b6109b4565b3480156102f957600080fd5b50610211610308366004613615565b6001600160a01b03166000908152600080516020613fdc833981519152602052604090205490565b34801561033c57600080fd5b5061025f610e12565b34801561035157600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b3480156103a257600080fd5b5061019b610e26565b3480156103b757600080fd5b506101d16103c6366004613286565b610e65565b3480156103d757600080fd5b5061037e610e73565b3480156103ec57600080fd5b5061019b604051806040016040528060058152602001640352e302e360dc1b81525081565b61025f61041f366004613630565b610e99565b34801561043057600080fd5b5061025f61043f3660046136a0565b610ea9565b34801561045057600080fd5b5060045461037e906001600160a01b031681565b34801561047057600080fd5b5061021161047f3660046136fd565b610fff565b34801561049057600080fd5b5061019b611049565b3480156104a557600080fd5b5061019b611056565b3480156104ba57600080fd5b5060005461037e906001600160a01b031681565b3480156104da57600080fd5b5061025f6104e9366004613615565b611063565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020613fdc8339815191529161052d90613730565b80601f016020809104026020016040519081016040528092919081815260200182805461055990613730565b80156105a65780601f1061057b576101008083540402835291602001916105a6565b820191906000526020600020905b81548152906001019060200180831161058957829003601f168201915b505050505091505090565b6000336105bf8185856110a1565b60019150505b92915050565b6000336105d98582856110ae565b6105e4858585611114565b60019150505b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156106365750825b90506000826001600160401b031660011480156106525750303b155b905081158015610660575080155b1561067e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106a857845460ff60401b1916600160401b1785555b6001600160a01b0388161515806106c757506001600160a01b03861615155b6107185760405162461bcd60e51b815260206004820152601860248201527f5a65726f2061646472657373206e6f7420616c6c6f776564000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b038a16908117825560408051636bf459cb60e01b815290519192636bf459cb926004808401938290030181865afa15801561076c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079491908101906137a9565b6001906107a19082613824565b50610835600180546107b290613730565b80601f01602080910402602001604051908101604052809291908181526020018280546107de90613730565b801561082b5780601f106108005761010080835404028352916020019161082b565b820191906000526020600020905b81548152906001019060200180831161080e57829003601f168201915b5050505050611173565b6002906108429082613824565b50600361084f8882613824565b50600480546001600160a01b0319166001600160a01b0388161790556108758a8a611189565b61087e3361119b565b83156108c457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b600180546108dd90613730565b80601f016020809104026020016040519081016040528092919081815260200182805461090990613730565b80156109565780601f1061092b57610100808354040283529160200191610956565b820191906000526020600020905b81548152906001019060200180831161093957829003601f168201915b505050505081565b6109788282604051806020016040528060008152506111ac565b5050565b6109846113f8565b61098d8261149d565b61097882826114a5565b60006109a1611562565b50600080516020613ffc83398151915290565b6000546001600160a01b03163314610a005760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7943616c6c5365727669636560881b604482015260640161070f565b600480546040516377ef816560e11b81526001600160a01b039091169163efdf02ca91610a3191869186910161390b565b602060405180830381865afa158015610a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7291906139ad565b610ab25760405162461bcd60e51b81526020600482015260116024820152700a0e4dee8dec6ded8409ad2e6dac2e8c6d607b1b604482015260640161070f565b6000610af385858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ab92505050565b9050610b2e6040518060400160405280600e81526020016d3c21b937b9b9aa3930b739b332b960911b8152508261160d90919063ffffffff16565b15610ce657610c0060038054610b4390613730565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6f90613730565b8015610bbc5780601f10610b9157610100808354040283529160200191610bbc565b820191906000526020600020905b815481529060010190602001808311610b9f57829003601f168201915b505050505088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061160d9050565b610c435760405162461bcd60e51b81526020600482015260146024820152736f6e6c7949636f6e546f6b656e4164647265737360601b604482015260640161070f565b6000610c8486868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061167392505050565b90506000610c95826020015161175e565b915050610cdf610cd56040518060400160405280600f81526020016e496e76616c6964206164647265737360881b8152508361179a90919063ffffffff16565b8360400151611a6c565b5050610e09565b6040805180820190915260148152731e10dc9bdcdcd51c985b9cd9995c94995d995c9d60621b6020820152610d1c90829061160d565b15610dca57610d3160018054610b4390613730565b610d6f5760405162461bcd60e51b815260206004820152600f60248201526e6f6e6c7943616c6c5365727669636560881b604482015260640161070f565b6000610db086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa292505050565b9050610dc481600001518260200151611a6c565b50610e09565b60405162461bcd60e51b8152602060048201526014602482015273556e6b6e6f776e206d657373616765207479706560601b604482015260640161070f565b50505050505050565b610e1a611b39565b610e246000611b94565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020613fdc8339815191529161052d90613730565b6000336105bf818585611114565b6000610e94600080516020613ffc833981519152546001600160a01b031690565b905090565b610ea48383836111ac565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610eee5750825b90506000826001600160401b03166001148015610f0a5750303b155b905081158015610f18575080155b15610f365760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f6057845460ff60401b1916600160401b1785555b610faf6040518060400160405280600e81526020016d2130b630b731b2b2102a37b5b2b760911b815250604051806040016040528060048152602001632120a62760e11b8152508a8a8a6105f1565b8315610ff557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b600280546108dd90613730565b600380546108dd90613730565b61106b611b39565b6001600160a01b03811661109557604051631e4fbdf760e01b81526000600482015260240161070f565b61109e81611b94565b50565b610ea48383836001611c05565b60006110ba8484610fff565b9050600019811461110e57818110156110ff57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161070f565b61110e84848484036000611c05565b50505050565b6001600160a01b03831661113e57604051634b637e8f60e11b81526000600482015260240161070f565b6001600160a01b0382166111685760405163ec442f0560e01b81526000600482015260240161070f565b610ea4838383611ced565b60606105c582600061118485611e2b565b611f37565b611191611ffc565b6109788282612045565b6111a3611ffc565b61109e81612096565b600082116111fc5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206c657373207468616e206d696e696d756d20616d6f756e7400604482015260640161070f565b611206338361209e565b60006112ad611214336120d4565b6002805461122190613730565b80601f016020809104026020016040519081016040528092919081815260200182805461124d90613730565b801561129a5780601f1061126f5761010080835404028352916020019161129a565b820191906000526020600020905b81548152906001019060200180831161127d57829003601f168201915b50505050506120df90919063ffffffff16565b90506112b88461175e565b50506040805160808101825282815260208082018790528183018690526060820185905282518084018452338152908101869052600480548451631e86976d60e31b81529451939492936000936001600160a01b039092169263f434bb689280820192869290918290030181865afa158015611338573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113609190810190613a75565b6000549091506001600160a01b031663edc6afff34600361138087612126565b611389876121b9565b865160208801516040516001600160e01b031960e089901b1681526113b5959493929190600401613b7c565b60206040518083038185885af11580156113d3573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ff59190613c5a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061147f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611473600080516020613ffc833981519152546001600160a01b031690565b6001600160a01b031614155b15610e245760405163703e46dd60e11b815260040160405180910390fd5b61109e611b39565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156114ff575060408051601f3d908101601f191682019092526114fc91810190613c5a565b60015b61152757604051634c9c8ce360e01b81526001600160a01b038316600482015260240161070f565b600080516020613ffc833981519152811461155857604051632a87526960e21b81526004810182905260240161070f565b610ea48383612225565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e245760405163703e46dd60e11b815260040160405180910390fd5b606060006115e86115e38460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b61227b565b90506105ea8160008151811061160057611600613c73565b60200260200101516123ba565b6000816040516020016116209190613c89565b60405160208183030381529060405280519060200120836040516020016116479190613c89565b604051602081830303815290604052805190602001200361166a575060016105c5565b50600092915050565b61169e6040518060800160405280606081526020016060815260200160008152602001606081525090565b60006116d46115e38460408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b905060405180608001604052806116f78360018151811061160057611600613c73565b81526020016117128360028151811061160057611600613c73565b815260200161173a8360038151811061172d5761172d613c73565b6020026020010151612493565b81526020016117558360048151811061160057611600613c73565b90529392505050565b606080600061176c84611e2b565b905061177a84600083611f37565b61179085611789846001613cbb565b8751611f37565b9250925050915091565b81516000908390602a1480156117de5750600360fc1b6001600160f81b031916816000815181106117cd576117cd613c73565b01602001516001600160f81b031916145b80156118185750600f60fb1b6001600160f81b0319168160018151811061180757611807613c73565b01602001516001600160f81b031916145b83906118375760405162461bcd60e51b815260040161070f9190613257565b5060408051601480825281830190925260009160208201818036833701905050905060008080805b60288110156119c75785611874826002613cbb565b8151811061188457611884613c73565b016020015160f81c93506001603085101561189d575060005b8460ff1660391080156118b3575060418560ff16105b156118bc575060005b8460ff1660461080156118d2575060618560ff16105b156118db575060005b8460ff16606610156118eb575060005b8061190a578860405162461bcd60e51b815260040161070f9190613257565b60418560ff16101561191f5760309250611939565b8460ff16604610156119345760579250611939565b603792505b611944600283613ce4565b60000361195c576119558386613cf8565b93506119be565b6119668386613cf8565b611971856010613d11565b61197b9190613d2d565b60f81b86600261198c600186613d46565b6119969190613d59565b815181106119a6576119a6613c73565b60200101906001600160f81b031916908160001a9053505b5060010161185f565b506000846040516020016119db9190613c89565b60408051601f198184030181529190526014810151975090506001600160a01b038716611a605760025b8651811015611a5e57868181518110611a2057611a20613c73565b60209101015189906001600160f81b031916600360fc1b14611a555760405162461bcd60e51b815260040161070f9190613257565b50600101611a05565b505b50505050505092915050565b6001600160a01b038216611a965760405163ec442f0560e01b81526000600482015260240161070f565b61097860008383611ced565b60408051808201825260008082526020808301829052835180850185528281528101829052835180850190945284518452848101908401529091611ae59061227b565b90506040518060400160405280611b1583600181518110611b0857611b08613c73565b6020026020010151612545565b6001600160a01b031681526020016117558360028151811061172d5761172d613c73565b33611b6b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610e245760405163118cdaa760e01b815233600482015260240161070f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080516020613fdc8339815191526001600160a01b038516611c3e5760405163e602df0560e01b81526000600482015260240161070f565b6001600160a01b038416611c6857604051634a1406b160e11b81526000600482015260240161070f565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115611ce657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611cdd91815260200190565b60405180910390a35b5050505050565b600080516020613fdc8339815191526001600160a01b038416611d295781816002016000828254611d1e9190613cbb565b90915550611d9b9050565b6001600160a01b03841660009081526020829052604090205482811015611d7c5760405163391434e360e21b81526001600160a01b0386166004820152602481018290526044810184905260640161070f565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316611db9576002810180548390039055611dd8565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e1d91815260200190565b60405180910390a350505050565b600081815b8151811015611ef4576040805180820190915260018152602f60f81b60209091018190528251839083908110611e6857611e68613c73565b01602001516001600160f81b03191603611eec57600681118015611e98575060018251611e959190613d46565b81105b60405180604001604052806015815260200174696e76616c69644e6574776f726b4164647265737360581b81525090611ee45760405162461bcd60e51b815260040161070f9190613257565b509392505050565b600101611e30565b6040805180820182526015815274696e76616c69644e6574776f726b4164647265737360581b6020820152905162461bcd60e51b815261070f9190600401613257565b6060836000611f468585613d46565b6001600160401b03811115611f5d57611f5d6132ed565b6040519080825280601f01601f191660200182016040528015611f87576020820181803683370190505b5090508460005b8251811015611ff0578382611fa281613d6d565b935081518110611fb457611fb4613c73565b602001015160f81c60f81b838281518110611fd157611fd1613c73565b60200101906001600160f81b031916908160001a905350600101611f8e565b50909695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610e2457604051631afcd79f60e31b815260040160405180910390fd5b61204d611ffc565b600080516020613fdc8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036120878482613824565b506004810161110e8382613824565b61106b611ffc565b6001600160a01b0382166120c857604051634b637e8f60e11b81526000600482015260240161070f565b61097882600083611ced565b60606105c582612598565b606082604051806040016040528060018152602001602f60f81b8152508360405160200161210f93929190613d86565b604051602081830303815290604052905092915050565b606060006121596040518060400160405280600e81526020016d3c21b937b9b9aa3930b739b332b960911b815250612763565b835161216490612763565b6121718560200151612763565b61217e866040015161276e565b61218b876060015161277c565b60405160200161219f959493929190613dc9565b60405160208183030381529060405290506105ea816127d4565b606060006121f2604051806040016040528060148152602001731e10dc9bdcdcd51c985b9cd9995c94995d995c9d60621b815250612763565b8351612206906001600160a01b031661280a565b612213856020015161276e565b60405160200161219f93929190613d86565b61222e8261282d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561227357610ea48282612892565b610978612908565b606061228682612927565b6122c35760405162461bcd60e51b815260206004820152600e60248201526d135d5cdd0818994818481b1a5cdd60921b604482015260640161070f565b60006122ce83612962565b90506000816001600160401b038111156122ea576122ea6132ed565b60405190808252806020026020018201604052801561232f57816020015b60408051808201909152600080825260208201528152602001906001900390816123085790505b509050600061234185602001516129e7565b85602001516123509190613cbb565b90506000805b848110156123af5761236783612a68565b915060405180604001604052808381526020018481525084828151811061239057612390613c73565b60209081029190910101526123a58284613cbb565b9250600101612356565b509195945050505050565b80516060906123fc5760405162461bcd60e51b815260206004820152600e60248201526d092dcecc2d8d2c840d8cadccee8d60931b604482015260640161070f565b600061240b83602001516129e7565b9050600081846000015161241f9190613d46565b90506000816001600160401b0381111561243b5761243b6132ed565b6040519080825280601f01601f191660200182016040528015612465576020820181803683370190505b509050600081602001905061248a8487602001516124839190613cbb565b8285612b11565b50949350505050565b8051600090158015906124a857508151602110155b6124ea5760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103ab4b73a10373ab6b132b960691b604482015260640161070f565b60006124f983602001516129e7565b9050600081846000015161250d9190613d46565b90506000808386602001516125229190613cbb565b905080519150602083101561248a57506020919091036101000a90049392505050565b805160009060151461258f5760405162461bcd60e51b81526020600482015260136024820152724d7573742068617665206c656e67746820323160681b604482015260640161070f565b6105c582612493565b604080516028808252606082810190935283831b9160009160208201818036833701905050905060008060008060008060006125d38b612b93565b905060005b6014811015612732576125ec816013613d46565b6125f7906008613e34565b612602906002613f32565b6126109060608c901c613d59565b975061261d601089613f3e565b965061262a876010613d11565b6126349089613cf8565b955081612642826002613e34565b6028811061265257612652613c73565b6020020151945081612665826002613e34565b612670906001613cbb565b6028811061268057612680613c73565b602002015193506126918786612d1a565b925061269d8388613d2d565b60f81b896126ac836002613e34565b815181106126bc576126bc613c73565b60200101906001600160f81b031916908160001a9053506126dd8685612d1a565b92506126e98387613d2d565b60f81b896126f8836002613e34565b612703906001613cbb565b8151811061271357612713613c73565b60200101906001600160f81b031916908160001a9053506001016125d8565b50876040516020016127449190613f60565b6040516020818303038152906040529950505050505050505050919050565b60606105c58261277c565b60606105c561277c83612d47565b606080825160011480156127aa57506080836000815181106127a0576127a0613c73565b016020015160f81c105b156127b65750816105c5565b6127c283516080612df1565b8360405160200161210f929190613f8a565b60606127e2825160c0612df1565b826040516020016127f4929190613f8a565b6040516020818303038152906040529050919050565b60408051600560a21b83186014820152603481019091526060906105ea8161277c565b806001600160a01b03163b60000361286357604051634c9c8ce360e01b81526001600160a01b038216600482015260240161070f565b600080516020613ffc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516128af9190613c89565b600060405180830381855af49150503d80600081146128ea576040519150601f19603f3d011682016040523d82523d6000602084013e6128ef565b606091505b50915091506128ff858383612fa7565b95945050505050565b3415610e245760405163b398979f60e01b815260040160405180910390fd5b8051600090810361293a57506000919050565b6020820151805160001a9060c0821015612958575060009392505050565b5060019392505050565b8051600090810361297557506000919050565b60008061298584602001516129e7565b84602001516129949190613cbb565b90506000846000015185602001516129ac9190613cbb565b90505b808210156129de576129c082612a68565b6129ca9083613cbb565b9150826129d681613d6d565b9350506129af565b50909392505050565b8051600090811a6080811015612a005750600092915050565b60b8811080612a1b575060c08110801590612a1b575060f881105b15612a295750600192915050565b60c0811015612a5657612a3e600160b8613cf8565b612a4b9060ff1682613d46565b6105ea906001613cbb565b612a3e600160f8613cf8565b50919050565b80516000908190811a6080811015612a835760019150612b0a565b60b8811015612aa957612a97608082613d46565b612aa2906001613cbb565b9150612b0a565b60c0811015612ad65760b78103600185019450806020036101000a85510460018201810193505050612b0a565b60f8811015612aea57612a9760c082613d46565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b80600003612b1e57505050565b60208110612b565782518252612b35602084613cbb565b9250612b42602083613cbb565b9150612b4f602082613d46565b9050612b1e565b8015610ea45760006001612b6b836020613d46565b612b7790610100613f32565b612b819190613d46565b84518451821691191617835250505050565b612b9b6131e8565b606082901b6000612bab82613003565b604051602001612bbb9190613c89565b60405160208183030381529060405280519060200120905060008060008060005b6014811015612d0e576010878260148110612bf957612bf9613c73565b612c059291901a613fb9565b9350601084888360148110612c1c57612c1c613c73565b612c289291901a613cf8565b612c329190613f3e565b94506010868260208110612c4857612c48613c73565b612c549291901a613fb9565b9150601082878360208110612c6b57612c6b613c73565b612c779291901a613cf8565b612c819190613f3e565b925060098560ff16118015612c99575060078360ff16115b88612ca5836002613e34565b60288110612cb557612cb5613c73565b91151560209092020152600960ff8516118015612cd5575060078260ff16115b88612ce1836002613e34565b612cec906001613cbb565b60288110612cfc57612cfc613c73565b91151560209092020152600101612bdc565b50505050505050919050565b6000600a8360ff161015612d30575060306105c5565b8115612d3e575060376105c5565b50605792915050565b606081600003612d7457604080516001808252818301909252906020820181803683370190505092915050565b608060015b6020811015612dab5781841015612d9c57612d948482613153565b949350505050565b60089190911b90600101612d79565b5080831015612dd8576040805160208101859052015b604051602081830303815290604052915050919050565b6040516000602082015260218101849052604101612dc1565b6060806038841015612e5b5760408051600180825281830190925290602082018180368337019050509050612e268385613cbb565b601f1a60f81b81600081518110612e3f57612e3f613c73565b60200101906001600160f81b031916908160001a9053506105ea565b600060015b612e6a8187613d59565b15612e905781612e7981613d6d565b9250612e89905061010082613e34565b9050612e60565b612e9b826001613cbb565b6001600160401b03811115612eb257612eb26132ed565b6040519080825280601f01601f191660200182016040528015612edc576020820181803683370190505b509250612ee98583613cbb565b612ef4906037613cbb565b601f1a60f81b83600081518110612f0d57612f0d613c73565b60200101906001600160f81b031916908160001a905350600190505b818111612f9e57610100612f3d8284613d46565b612f4990610100613f32565b612f539088613d59565b612f5d9190613ce4565b601f1a60f81b838281518110612f7557612f75613c73565b60200101906001600160f81b031916908160001a90535080612f9681613d6d565b915050612f29565b50509392505050565b606082612fbc57612fb7826131bf565b6105ea565b8151158015612fd357506001600160a01b0384163b155b15612ffc57604051639996b31560e01b81526001600160a01b038516600482015260240161070f565b50806105ea565b60408051602880825260608281019093526000919060208201818036833701905050905060008080805b601481101561314857613041816013613d46565b61304c906008613e34565b613057906002613f32565b61306590606089901c613d59565b9350613072601085613f3e565b925061307f836010613d11565b6130899085613cf8565b9150600a8360ff161061309d5760576130a0565b60305b6130aa9084613d2d565b60f81b856130b9836002613e34565b815181106130c9576130c9613c73565b60200101906001600160f81b031916908160001a905350600a8260ff16106130f25760576130f5565b60305b6130ff9083613d2d565b60f81b8561310e836002613e34565b613119906001613cbb565b8151811061312957613129613c73565b60200101906001600160f81b031916908160001a90535060010161302d565b509295945050505050565b60606000826001600160401b0381111561316f5761316f6132ed565b6040519080825280601f01601f191660200182016040528015613199576020820181803683370190505b50905060208101836020035b6020811015612f9e5785811a8253600191820191016131a5565b8051156131cf5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518061050001604052806028906020820280368337509192915050565b60005b8381101561322257818101518382015260200161320a565b50506000910152565b60008151808452613243816020860160208601613207565b601f01601f19169290920160200192915050565b6020815260006105ea602083018461322b565b80356001600160a01b038116811461328157600080fd5b919050565b6000806040838503121561329957600080fd5b6132a28361326a565b946020939093013593505050565b6000806000606084860312156132c557600080fd5b6132ce8461326a565b92506132dc6020850161326a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561332b5761332b6132ed565b604052919050565b60006001600160401b0382111561334c5761334c6132ed565b50601f01601f191660200190565b600082601f83011261336b57600080fd5b813560208301600061338461337f84613333565b613303565b905082815285838301111561339857600080fd5b82826020830137600092810160200192909252509392505050565b600080600080600060a086880312156133cb57600080fd5b85356001600160401b038111156133e157600080fd5b6133ed8882890161335a565b95505060208601356001600160401b0381111561340957600080fd5b6134158882890161335a565b9450506134246040870161326a565b925060608601356001600160401b0381111561343f57600080fd5b61344b8882890161335a565b92505061345a6080870161326a565b90509295509295909350565b6000806040838503121561347957600080fd5b82356001600160401b0381111561348f57600080fd5b61349b8582860161335a565b95602094909401359450505050565b600080604083850312156134bd57600080fd5b6134c68361326a565b915060208301356001600160401b038111156134e157600080fd5b6134ed8582860161335a565b9150509250929050565b60008083601f84011261350957600080fd5b5081356001600160401b0381111561352057600080fd5b60208301915083602082850101111561353857600080fd5b9250929050565b6000806000806000806060878903121561355857600080fd5b86356001600160401b0381111561356e57600080fd5b61357a89828a016134f7565b90975095505060208701356001600160401b0381111561359957600080fd5b6135a589828a016134f7565b90955093505060408701356001600160401b038111156135c457600080fd5b8701601f810189136135d557600080fd5b80356001600160401b038111156135eb57600080fd5b8960208260051b840101111561360057600080fd5b60208201935080925050509295509295509295565b60006020828403121561362757600080fd5b6105ea8261326a565b60008060006060848603121561364557600080fd5b83356001600160401b0381111561365b57600080fd5b6136678682870161335a565b9350506020840135915060408401356001600160401b0381111561368a57600080fd5b6136968682870161335a565b9150509250925092565b6000806000606084860312156136b557600080fd5b6136be8461326a565b925060208401356001600160401b038111156136d957600080fd5b6136e58682870161335a565b9250506136f46040850161326a565b90509250925092565b6000806040838503121561371057600080fd5b6137198361326a565b91506137276020840161326a565b90509250929050565b600181811c9082168061374457607f821691505b602082108103612a6257634e487b7160e01b600052602260045260246000fd5b600082601f83011261377557600080fd5b815161378361337f82613333565b81815284602083860101111561379857600080fd5b612d94826020830160208701613207565b6000602082840312156137bb57600080fd5b81516001600160401b038111156137d157600080fd5b612d9484828501613764565b601f821115610ea457806000526020600020601f840160051c810160208510156138045750805b601f840160051c820191505b81811015611ce65760008155600101613810565b81516001600160401b0381111561383d5761383d6132ed565b6138518161384b8454613730565b846137dd565b6020601f821160018114613885576000831561386d5750848201515b600019600385901b1c1916600184901b178455611ce6565b600084815260208120601f198516915b828110156138b55787850151825560209485019460019092019101613895565b50848210156138d35786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020808252810182905260006040600584901b830181019083018583601e1936839003015b878210156139a057868503603f19018452823581811261394f57600080fd5b89016020810190356001600160401b0381111561396b57600080fd5b80360382131561397a57600080fd5b6139858782846138e2565b96505050602083019250602084019350600182019150613930565b5092979650505050505050565b6000602082840312156139bf57600080fd5b815180151581146105ea57600080fd5b600082601f8301126139e057600080fd5b81516001600160401b038111156139f9576139f96132ed565b8060051b613a0960208201613303565b91825260208185018101929081019086841115613a2557600080fd5b6020860192505b83831015613a6b5782516001600160401b03811115613a4a57600080fd5b613a59886020838a0101613764565b83525060209283019290910190613a2c565b9695505050505050565b600060208284031215613a8757600080fd5b81516001600160401b03811115613a9d57600080fd5b820160408185031215613aaf57600080fd5b604080519081016001600160401b0381118282101715613ad157613ad16132ed565b60405281516001600160401b03811115613aea57600080fd5b613af6868285016139cf565b82525060208201516001600160401b03811115613b1257600080fd5b613b1e868285016139cf565b602083015250949350505050565b600082825180855260208501945060208160051b8301016020850160005b83811015611ff057601f19858403018852613b6683835161322b565b6020988901989093509190910190600101613b4a565b60a081526000808754613b8e81613730565b8060a08601526001821660008114613bad5760018114613bc957613bfd565b60ff19831660c087015260c082151560051b8701019350613bfd565b8a600052602060002060005b83811015613bf457815488820160c00152600190910190602001613bd5565b870160c0019450505b5050508281036020840152613c12818861322b565b90508281036040840152613c26818761322b565b90508281036060840152613c3a8186613b2c565b90508281036080840152613c4e8185613b2c565b98975050505050505050565b600060208284031215613c6c57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008251613c9b818460208701613207565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105c5576105c5613ca5565b634e487b7160e01b600052601260045260246000fd5b600082613cf357613cf3613cce565b500690565b60ff82811682821603908111156105c5576105c5613ca5565b60ff8181168382160290811690818114612b0a57612b0a613ca5565b60ff81811683821601908111156105c5576105c5613ca5565b818103818111156105c5576105c5613ca5565b600082613d6857613d68613cce565b500490565b600060018201613d7f57613d7f613ca5565b5060010190565b60008451613d98818460208901613207565b845190830190613dac818360208901613207565b8451910190613dbf818360208801613207565b0195945050505050565b60008651613ddb818460208b01613207565b865190830190613def818360208b01613207565b8651910190613e02818360208a01613207565b8551910190613e15818360208901613207565b8451910190613e28818360208801613207565b01979650505050505050565b80820281158282048414176105c5576105c5613ca5565b6001815b6001841115613e8657808504811115613e6a57613e6a613ca5565b6001841615613e7857908102905b60019390931c928002613e4f565b935093915050565b600082613e9d575060016105c5565b81613eaa575060006105c5565b8160018114613ec05760028114613eca57613ee6565b60019150506105c5565b60ff841115613edb57613edb613ca5565b50506001821b6105c5565b5060208310610133831016604e8410600b8410161715613f09575081810a6105c5565b613f166000198484613e4b565b8060001904821115613f2a57613f2a613ca5565b029392505050565b60006105ea8383613e8e565b600060ff831680613f5157613f51613cce565b8060ff84160491505092915050565b61060f60f31b815260008251613f7d816002850160208701613207565b9190910160020192915050565b60008351613f9c818460208801613207565b835190830190613fb0818360208801613207565b01949350505050565b600060ff831680613fcc57613fcc613cce565b8060ff8416069150509291505056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220de2a95154f5ce97638ffc86445a5d2ac5bcb60ef96eab76c78857e6544d6386664736f6c634300081c0033