Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
EthereumTokenMintable
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-24 */ // SPDX-License-Identifier: MIT // File: contracts/BaseToken/interface/ITokenFactory.sol pragma solidity ^0.8.7; interface ITokenFactory { event OwnerChanged(address indexed oldOwner, address indexed newOwner); event BridgeChanged(address indexed oldBridge, address indexed newBridge); event AdminChanged(address indexed oldAdmin, address indexed newAdmin); event TokenCreated( string name, string indexed symbol, uint256 amount, uint256 cap, address indexed token ); event TokenRemoved(address indexed token); function owner() external view returns (address); function tokens() external view returns (address[] memory); function tokenExist(address token) external view returns (bool); function bridge() external view returns (address); function admin() external view returns (address); function setBridge(address bridge) external; function setAdmin(address admin) external; function createToken( string memory name, string memory symbol, uint256 amount, uint256 cap ) external returns (address token); function removeToken(address token) external; } // File: @openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20Upgradeable { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: contracts/BaseToken/interface/ITokenMintable.sol pragma solidity ^0.8.7; interface ITokenMintable is IERC20Upgradeable { function initialize( address factory, string memory name, string memory symbol, uint256 amount, uint256 cap ) external; function factory() external view returns (address); function cap() external view returns (uint256); function mint(address to, uint256 amount) external; function burn(uint256 amount) external; function increaseCap(uint256 cap) external; } // File: @openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol // OpenZeppelin Contracts v4.4.0 (proxy/utils/Initializable.sol) pragma solidity ^0.8.0; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To initialize the implementation contract, you can either invoke the * initializer manually, or you can include a constructor to automatically mark it as initialized when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() initializer {} * ``` * ==== */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require( _initializing || !_initialized, "Initializable: contract is already initialized" ); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } } // File: contracts/BaseToken/base/TokenMintableUpgradeable.sol pragma solidity ^0.8.7; contract TokenMintableUpgradeable is Initializable, ITokenMintable { address private _factory; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint256 private _cap; function factory() public view virtual override returns (address) { return _factory; } modifier onlyBridgeOwner() { require(ITokenFactory(factory()).bridge() == msg.sender, "OAO"); _; } modifier onlyBridgeAdminOwner() { require(ITokenFactory(factory()).admin() == msg.sender, "OAO"); _; } function initialize( address factory_, string memory name_, string memory symbol_, uint256 amount, uint256 cap_ ) external override initializer { __Token_init(factory_, name_, symbol_, amount, cap_); } function __Token_init( address factory_, string memory name_, string memory symbol_, uint256 amount, uint256 cap_ ) private initializer { require(cap_ > 0, "ERC20Capped: cap is 0"); _factory = factory_; _name = name_; _symbol = symbol_; _cap = cap_; _mint(ITokenFactory(factory()).owner(), amount); } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function cap() public view virtual override returns (uint256) { return _cap; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][msg.sender]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender] + addedValue ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[msg.sender][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(msg.sender, spender, currentAllowance - subtractedValue); } return true; } function increaseCap(uint256 cap_) external override onlyBridgeAdminOwner { require(cap_ > 0, "ERC20Capped: cap is 0"); _cap += cap_; } function mint(address to, uint256 amount) external override onlyBridgeOwner { require(_cap > amount, "Daily cap limit reached"); _mint(to, amount); } function burn(uint256 amount) external override { _burn(msg.sender, amount); } function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, msg.sender); require( currentAllowance >= amount, "ERC20: burn amount exceeds allowance" ); unchecked { _approve(account, msg.sender, currentAllowance - amount); } _burn(account, amount); } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; _cap -= amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require( ITokenFactory(factory()).bridge() != address(0), "Bridge is zero address" ); require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, ITokenFactory(factory()).bridge(), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: contracts/Net-Ethereum/Token/EthereumTokenMintable.sol pragma solidity ^0.8.7; contract EthereumTokenMintable is TokenMintableUpgradeable { function initialize() public initializer {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint256","name":"cap_","type":"uint256"}],"name":"increaseCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"cap_","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]
Contract Creation Code
608060405234801561001057600080fd5b506114e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b4114610248578063a457c2d714610250578063a9059cbb14610263578063c45a015514610276578063dd62ed3e146102a057600080fd5b806342966c68146101de578063523e9551146101f157806370a082311461020457806379cc67901461022d5780638129fc1c1461024057600080fd5b806323b872dd116100f457806323b872dd1461018e578063313ce567146101a1578063355274ea146101b057806339509351146101b857806340c10f19146101cb57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd146101675780631ca2913914610179575b600080fd5b61012e6102d9565b60405161013b919061114c565b60405180910390f35b6101576101523660046111b6565b61036b565b604051901515815260200161013b565b6003545b60405190815260200161013b565b61018c610187366004611285565b610381565b005b61015761019c36600461130d565b610408565b6040516012815260200161013b565b60065461016b565b6101576101c63660046111b6565b6104b2565b61018c6101d93660046111b6565b6104ee565b61018c6101ec36600461134e565b6105fe565b61018c6101ff36600461134e565b61060b565b61016b610212366004611367565b6001600160a01b031660009081526001602052604090205490565b61018c61023b3660046111b6565b61071e565b61018c6107ba565b61012e610825565b61015761025e3660046111b6565b610834565b6101576102713660046111b6565b6108cd565b6000546201000090046001600160a01b03166040516001600160a01b03909116815260200161013b565b61016b6102ae36600461138b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6060600480546102e8906113c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610314906113c4565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b60006103783384846108da565b50600192915050565b600054610100900460ff168061039a575060005460ff16155b6103bf5760405162461bcd60e51b81526004016103b6906113fe565b60405180910390fd5b600054610100900460ff161580156103e1576000805461ffff19166101011790555b6103ee86868686866109ff565b8015610400576000805461ff00191690555b505050505050565b6000610415848484610b6a565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561049a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016103b6565b6104a785338584036108da565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103789185906104e9908690611462565b6108da565b60005433906201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561053f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610563919061147a565b6001600160a01b03161461059f5760405162461bcd60e51b81526020600482015260036024820152624f414f60e81b60448201526064016103b6565b80600654116105f05760405162461bcd60e51b815260206004820152601760248201527f4461696c7920636170206c696d6974207265616368656400000000000000000060448201526064016103b6565b6105fa8282610d39565b5050565b6106083382610e31565b50565b60005433906201000090046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610680919061147a565b6001600160a01b0316146106bc5760405162461bcd60e51b81526020600482015260036024820152624f414f60e81b60448201526064016103b6565b600081116107045760405162461bcd60e51b8152602060048201526015602482015274045524332304361707065643a20636170206973203605c1b60448201526064016103b6565b80600660008282546107169190611462565b909155505050565b6001600160a01b03821660009081526002602090815260408083203384529091529020548181101561079e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016103b6565b6107ab83338484036108da565b6107b58383610e31565b505050565b600054610100900460ff16806107d3575060005460ff16155b6107ef5760405162461bcd60e51b81526004016103b6906113fe565b600054610100900460ff16158015610811576000805461ffff19166101011790555b8015610608576000805461ff001916905550565b6060600580546102e8906113c4565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156108b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103b6565b6108c333858584036108da565b5060019392505050565b6000610378338484610b6a565b6001600160a01b03831661093c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b6565b6001600160a01b03821661099d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b6565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600054610100900460ff1680610a18575060005460ff16155b610a345760405162461bcd60e51b81526004016103b6906113fe565b600054610100900460ff16158015610a56576000805461ffff19166101011790555b60008211610a9e5760405162461bcd60e51b8152602060048201526015602482015274045524332304361707065643a20636170206973203605c1b60448201526064016103b6565b6000805462010000600160b01b031916620100006001600160a01b038916021790558451610ad39060049060208801906110b3565b508351610ae79060059060208701906110b3565b5060068290556000546103ee906201000090046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b64919061147a565b84610d39565b6001600160a01b038316610bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b6565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b6565b6001600160a01b03831660009081526001602052604090205481811015610ca85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103b6565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610cdf908490611462565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d2b91815260200190565b60405180910390a350505050565b6001600160a01b038216610d8f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b6565b8060036000828254610da19190611462565b90915550506001600160a01b03821660009081526001602052604081208054839290610dce908490611462565b925050819055508060066000828254610de79190611497565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600080546201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061147a565b6001600160a01b031603610ef45760405162461bcd60e51b8152602060048201526016602482015275427269646765206973207a65726f206164647265737360501b60448201526064016103b6565b6001600160a01b038216610f545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103b6565b6001600160a01b03821660009081526001602052604090205481811015610fc85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103b6565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ff7908490611497565b90915550506000546201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f919061147a565b6001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109f291815260200190565b8280546110bf906113c4565b90600052602060002090601f0160209004810192826110e15760008555611127565b82601f106110fa57805160ff1916838001178555611127565b82800160010185558215611127579182015b8281111561112757825182559160200191906001019061110c565b50611133929150611137565b5090565b5b808211156111335760008155600101611138565b600060208083528351808285015260005b818110156111795785810183015185820160400152820161115d565b8181111561118b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461060857600080fd5b600080604083850312156111c957600080fd5b82356111d4816111a1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120957600080fd5b813567ffffffffffffffff80821115611224576112246111e2565b604051601f8301601f19908116603f0116810190828211818310171561124c5761124c6111e2565b8160405283815286602085880101111561126557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129d57600080fd5b85356112a8816111a1565b9450602086013567ffffffffffffffff808211156112c557600080fd5b6112d189838a016111f8565b955060408801359150808211156112e757600080fd5b506112f4888289016111f8565b9598949750949560608101359550608001359392505050565b60008060006060848603121561132257600080fd5b833561132d816111a1565b9250602084013561133d816111a1565b929592945050506040919091013590565b60006020828403121561136057600080fd5b5035919050565b60006020828403121561137957600080fd5b8135611384816111a1565b9392505050565b6000806040838503121561139e57600080fd5b82356113a9816111a1565b915060208301356113b9816111a1565b809150509250929050565b600181811c908216806113d857607f821691505b6020821081036113f857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156114755761147561144c565b500190565b60006020828403121561148c57600080fd5b8151611384816111a1565b6000828210156114a9576114a961144c565b50039056fea264697066735822122014100463e853a497eb734b790a681ce2a19d04d0480c41c0c96cdf5b855841f964736f6c634300080d0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b4114610248578063a457c2d714610250578063a9059cbb14610263578063c45a015514610276578063dd62ed3e146102a057600080fd5b806342966c68146101de578063523e9551146101f157806370a082311461020457806379cc67901461022d5780638129fc1c1461024057600080fd5b806323b872dd116100f457806323b872dd1461018e578063313ce567146101a1578063355274ea146101b057806339509351146101b857806340c10f19146101cb57600080fd5b806306fdde0314610126578063095ea7b31461014457806318160ddd146101675780631ca2913914610179575b600080fd5b61012e6102d9565b60405161013b919061114c565b60405180910390f35b6101576101523660046111b6565b61036b565b604051901515815260200161013b565b6003545b60405190815260200161013b565b61018c610187366004611285565b610381565b005b61015761019c36600461130d565b610408565b6040516012815260200161013b565b60065461016b565b6101576101c63660046111b6565b6104b2565b61018c6101d93660046111b6565b6104ee565b61018c6101ec36600461134e565b6105fe565b61018c6101ff36600461134e565b61060b565b61016b610212366004611367565b6001600160a01b031660009081526001602052604090205490565b61018c61023b3660046111b6565b61071e565b61018c6107ba565b61012e610825565b61015761025e3660046111b6565b610834565b6101576102713660046111b6565b6108cd565b6000546201000090046001600160a01b03166040516001600160a01b03909116815260200161013b565b61016b6102ae36600461138b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6060600480546102e8906113c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610314906113c4565b80156103615780601f1061033657610100808354040283529160200191610361565b820191906000526020600020905b81548152906001019060200180831161034457829003601f168201915b5050505050905090565b60006103783384846108da565b50600192915050565b600054610100900460ff168061039a575060005460ff16155b6103bf5760405162461bcd60e51b81526004016103b6906113fe565b60405180910390fd5b600054610100900460ff161580156103e1576000805461ffff19166101011790555b6103ee86868686866109ff565b8015610400576000805461ff00191690555b505050505050565b6000610415848484610b6a565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561049a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016103b6565b6104a785338584036108da565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103789185906104e9908690611462565b6108da565b60005433906201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561053f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610563919061147a565b6001600160a01b03161461059f5760405162461bcd60e51b81526020600482015260036024820152624f414f60e81b60448201526064016103b6565b80600654116105f05760405162461bcd60e51b815260206004820152601760248201527f4461696c7920636170206c696d6974207265616368656400000000000000000060448201526064016103b6565b6105fa8282610d39565b5050565b6106083382610e31565b50565b60005433906201000090046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610680919061147a565b6001600160a01b0316146106bc5760405162461bcd60e51b81526020600482015260036024820152624f414f60e81b60448201526064016103b6565b600081116107045760405162461bcd60e51b8152602060048201526015602482015274045524332304361707065643a20636170206973203605c1b60448201526064016103b6565b80600660008282546107169190611462565b909155505050565b6001600160a01b03821660009081526002602090815260408083203384529091529020548181101561079e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016103b6565b6107ab83338484036108da565b6107b58383610e31565b505050565b600054610100900460ff16806107d3575060005460ff16155b6107ef5760405162461bcd60e51b81526004016103b6906113fe565b600054610100900460ff16158015610811576000805461ffff19166101011790555b8015610608576000805461ff001916905550565b6060600580546102e8906113c4565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156108b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103b6565b6108c333858584036108da565b5060019392505050565b6000610378338484610b6a565b6001600160a01b03831661093c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b6565b6001600160a01b03821661099d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b6565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600054610100900460ff1680610a18575060005460ff16155b610a345760405162461bcd60e51b81526004016103b6906113fe565b600054610100900460ff16158015610a56576000805461ffff19166101011790555b60008211610a9e5760405162461bcd60e51b8152602060048201526015602482015274045524332304361707065643a20636170206973203605c1b60448201526064016103b6565b6000805462010000600160b01b031916620100006001600160a01b038916021790558451610ad39060049060208801906110b3565b508351610ae79060059060208701906110b3565b5060068290556000546103ee906201000090046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b64919061147a565b84610d39565b6001600160a01b038316610bce5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b6565b6001600160a01b038216610c305760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b6565b6001600160a01b03831660009081526001602052604090205481811015610ca85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103b6565b6001600160a01b03808516600090815260016020526040808220858503905591851681529081208054849290610cdf908490611462565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d2b91815260200190565b60405180910390a350505050565b6001600160a01b038216610d8f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b6565b8060036000828254610da19190611462565b90915550506001600160a01b03821660009081526001602052604081208054839290610dce908490611462565b925050819055508060066000828254610de79190611497565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600080546201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061147a565b6001600160a01b031603610ef45760405162461bcd60e51b8152602060048201526016602482015275427269646765206973207a65726f206164647265737360501b60448201526064016103b6565b6001600160a01b038216610f545760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103b6565b6001600160a01b03821660009081526001602052604090205481811015610fc85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103b6565b6001600160a01b0383166000908152600160205260408120838303905560038054849290610ff7908490611497565b90915550506000546201000090046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106f919061147a565b6001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109f291815260200190565b8280546110bf906113c4565b90600052602060002090601f0160209004810192826110e15760008555611127565b82601f106110fa57805160ff1916838001178555611127565b82800160010185558215611127579182015b8281111561112757825182559160200191906001019061110c565b50611133929150611137565b5090565b5b808211156111335760008155600101611138565b600060208083528351808285015260005b818110156111795785810183015185820160400152820161115d565b8181111561118b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461060857600080fd5b600080604083850312156111c957600080fd5b82356111d4816111a1565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120957600080fd5b813567ffffffffffffffff80821115611224576112246111e2565b604051601f8301601f19908116603f0116810190828211818310171561124c5761124c6111e2565b8160405283815286602085880101111561126557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561129d57600080fd5b85356112a8816111a1565b9450602086013567ffffffffffffffff808211156112c557600080fd5b6112d189838a016111f8565b955060408801359150808211156112e757600080fd5b506112f4888289016111f8565b9598949750949560608101359550608001359392505050565b60008060006060848603121561132257600080fd5b833561132d816111a1565b9250602084013561133d816111a1565b929592945050506040919091013590565b60006020828403121561136057600080fd5b5035919050565b60006020828403121561137957600080fd5b8135611384816111a1565b9392505050565b6000806040838503121561139e57600080fd5b82356113a9816111a1565b915060208301356113b9816111a1565b809150509250929050565b600181811c908216806113d857607f821691505b6020821081036113f857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156114755761147561144c565b500190565b60006020828403121561148c57600080fd5b8151611384816111a1565b6000828210156114a9576114a961144c565b50039056fea264697066735822122014100463e853a497eb734b790a681ce2a19d04d0480c41c0c96cdf5b855841f964736f6c634300080d0033
Deployed Bytecode Sourcemap
15118:112:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8861:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9987:208;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;9987:208:0;1072:187:1;9255:108:0;9343:12;;9255:108;;;1410:25:1;;;1398:2;1383:18;9255:108:0;1264:177:1;8171:265:0;;;;;;:::i;:::-;;:::i;:::-;;10203:525;;;;;;:::i;:::-;;:::i;9063:84::-;;;9137:2;3726:36:1;;3714:2;3699:18;9063:84:0;3584:184:1;9155:92:0;9235:4;;9155:92;;10736:293;;;;;;:::i;:::-;;:::i;11689:204::-;;;;;;:::i;:::-;;:::i;11901:92::-;;;;;;:::i;:::-;;:::i;11523:158::-;;;;;;:::i;:::-;;:::i;9371:177::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9522:18:0;9490:7;9522:18;;;:9;:18;;;;;;;9371:177;12001:401;;;;;;:::i;:::-;;:::i;15184:43::-;;;:::i;8960:95::-;;;:::i;11037:478::-;;;;;;:::i;:::-;;:::i;9556:214::-;;;;;;:::i;:::-;;:::i;7801:100::-;7858:7;7885:8;;;;-1:-1:-1;;;;;7885:8:0;7801:100;;-1:-1:-1;;;;;4374:32:1;;;4356:51;;4344:2;4329:18;7801:100:0;4210:203:1;9778:201:0;;;;;;:::i;:::-;-1:-1:-1;;;;;9944:18:0;;;9912:7;9944:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9778:201;8861:91;8906:13;8939:5;8932:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8861:91;:::o;9987:208::-;10106:4;10128:37;10137:10;10149:7;10158:6;10128:8;:37::i;:::-;-1:-1:-1;10183:4:0;9987:208;;;;:::o;8171:265::-;6980:13;;;;;;;;:30;;-1:-1:-1;6998:12:0;;;;6997:13;6980:30;6958:126;;;;-1:-1:-1;;;6958:126:0;;;;;;;:::i;:::-;;;;;;;;;7097:19;7120:13;;;;;;7119:14;7144:101;;;;7179:13;:20;;-1:-1:-1;;7214:19:0;;;;;7144:101;8376:52:::1;8389:8;8399:5;8406:7;8415:6;8423:4;8376:12;:52::i;:::-;7275:14:::0;7271:68;;;7322:5;7306:21;;-1:-1:-1;;7306:21:0;;;7271:68;6947:399;8171:265;;;;;:::o;10203:525::-;10343:4;10360:36;10370:6;10378:9;10389:6;10360:9;:36::i;:::-;-1:-1:-1;;;;;10436:19:0;;10409:24;10436:19;;;:11;:19;;;;;;;;10456:10;10436:31;;;;;;;;10500:26;;;;10478:116;;;;-1:-1:-1;;;10478:116:0;;5813:2:1;10478:116:0;;;5795:21:1;5852:2;5832:18;;;5825:30;5891:34;5871:18;;;5864:62;-1:-1:-1;;;5942:18:1;;;5935:38;5990:19;;10478:116:0;5611:404:1;10478:116:0;10630:55;10639:6;10647:10;10678:6;10659:16;:25;10630:8;:55::i;:::-;-1:-1:-1;10716:4:0;;10203:525;-1:-1:-1;;;;10203:525:0:o;10736:293::-;10896:10;10851:4;10943:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10943:32:0;;;;;;;;;;10851:4;;10873:126;;10921:7;;10943:45;;10978:10;;10943:45;:::i;:::-;10873:8;:126::i;11689:204::-;7858:7;7885:8;7992:10;;7885:8;;;-1:-1:-1;;;;;7885:8:0;-1:-1:-1;;;;;7955:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7955:47:0;;7947:63;;;;-1:-1:-1;;;7947:63:0;;6743:2:1;7947:63:0;;;6725:21:1;6782:1;6762:18;;;6755:29;-1:-1:-1;;;6800:18:1;;;6793:33;6843:18;;7947:63:0;6541:326:1;7947:63:0;11823:6:::1;11816:4;;:13;11808:49;;;::::0;-1:-1:-1;;;11808:49:0;;7074:2:1;11808:49:0::1;::::0;::::1;7056:21:1::0;7113:2;7093:18;;;7086:30;7152:25;7132:18;;;7125:53;7195:18;;11808:49:0::1;6872:347:1::0;11808:49:0::1;11868:17;11874:2;11878:6;11868:5;:17::i;:::-;11689:204:::0;;:::o;11901:92::-;11960:25;11966:10;11978:6;11960:5;:25::i;:::-;11901:92;:::o;11523:158::-;7858:7;7885:8;8125:10;;7885:8;;;-1:-1:-1;;;;;7885:8:0;-1:-1:-1;;;;;8089:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8089:46:0;;8081:62;;;;-1:-1:-1;;;8081:62:0;;6743:2:1;8081:62:0;;;6725:21:1;6782:1;6762:18;;;6755:29;-1:-1:-1;;;6800:18:1;;;6793:33;6843:18;;8081:62:0;6541:326:1;8081:62:0;11623:1:::1;11616:4;:8;11608:42;;;::::0;-1:-1:-1;;;11608:42:0;;7426:2:1;11608:42:0::1;::::0;::::1;7408:21:1::0;7465:2;7445:18;;;7438:30;-1:-1:-1;;;7484:18:1;;;7477:51;7545:18;;11608:42:0::1;7224:345:1::0;11608:42:0::1;11669:4;11661;;:12;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;11523:158:0:o;12001:401::-;-1:-1:-1;;;;;9944:18:0;;12078:24;9944:18;;;:11;:18;;;;;;;;12124:10;9944:27;;;;;;;;12168:26;;;;12146:112;;;;-1:-1:-1;;;12146:112:0;;7776:2:1;12146:112:0;;;7758:21:1;7815:2;7795:18;;;7788:30;7854:34;7834:18;;;7827:62;-1:-1:-1;;;7905:18:1;;;7898:34;7949:19;;12146:112:0;7574:400:1;12146:112:0;12294:56;12303:7;12312:10;12343:6;12324:16;:25;12294:8;:56::i;:::-;12372:22;12378:7;12387:6;12372:5;:22::i;:::-;12067:335;12001:401;;:::o;15184:43::-;6980:13;;;;;;;;:30;;-1:-1:-1;6998:12:0;;;;6997:13;6980:30;6958:126;;;;-1:-1:-1;;;6958:126:0;;;;;;;:::i;:::-;7097:19;7120:13;;;;;;7119:14;7144:101;;;;7179:13;:20;;-1:-1:-1;;7214:19:0;;;;;7144:101;7275:14;7271:68;;;7322:5;7306:21;;-1:-1:-1;;7306:21:0;;;6947:399;15184:43::o;8960:95::-;9007:13;9040:7;9033:14;;;;;:::i;11037:478::-;11218:10;11157:4;11206:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11206:32:0;;;;;;;;;;11271:35;;;;11249:122;;;;-1:-1:-1;;;11249:122:0;;8181:2:1;11249:122:0;;;8163:21:1;8220:2;8200:18;;;8193:30;8259:34;8239:18;;;8232:62;-1:-1:-1;;;8310:18:1;;;8303:35;8355:19;;11249:122:0;7979:401:1;11249:122:0;11407:65;11416:10;11428:7;11456:15;11437:16;:34;11407:8;:65::i;:::-;-1:-1:-1;11503:4:0;;11037:478;-1:-1:-1;;;11037:478:0:o;9556:214::-;9678:4;9700:40;9710:10;9722:9;9733:6;9700:9;:40::i;14372:380::-;-1:-1:-1;;;;;14508:19:0;;14500:68;;;;-1:-1:-1;;;14500:68:0;;8587:2:1;14500:68:0;;;8569:21:1;8626:2;8606:18;;;8599:30;8665:34;8645:18;;;8638:62;-1:-1:-1;;;8716:18:1;;;8709:34;8760:19;;14500:68:0;8385:400:1;14500:68:0;-1:-1:-1;;;;;14587:21:0;;14579:68;;;;-1:-1:-1;;;14579:68:0;;8992:2:1;14579:68:0;;;8974:21:1;9031:2;9011:18;;;9004:30;9070:34;9050:18;;;9043:62;-1:-1:-1;;;9121:18:1;;;9114:32;9163:19;;14579:68:0;8790:398:1;14579:68:0;-1:-1:-1;;;;;14660:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14712:32;;1410:25:1;;;14712:32:0;;1383:18:1;14712:32:0;;;;;;;;14372:380;;;:::o;8444:409::-;6980:13;;;;;;;;:30;;-1:-1:-1;6998:12:0;;;;6997:13;6980:30;6958:126;;;;-1:-1:-1;;;6958:126:0;;;;;;;:::i;:::-;7097:19;7120:13;;;;;;7119:14;7144:101;;;;7179:13;:20;;-1:-1:-1;;7214:19:0;;;;;7144:101;8656:1:::1;8649:4;:8;8641:42;;;::::0;-1:-1:-1;;;8641:42:0;;7426:2:1;8641:42:0::1;::::0;::::1;7408:21:1::0;7465:2;7445:18;;;7438:30;-1:-1:-1;;;7484:18:1;;;7477:51;7545:18;;8641:42:0::1;7224:345:1::0;8641:42:0::1;8694:8;:19:::0;;-1:-1:-1;;;;;;8694:19:0::1;::::0;-1:-1:-1;;;;;8694:19:0;::::1;;;::::0;;8724:13;;::::1;::::0;:5:::1;::::0;:13:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;8748:17:0;;::::1;::::0;:7:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;8776:4:0::1;:11:::0;;;7858:7;7885:8;8798:47:::1;::::0;7885:8;;;-1:-1:-1;;;;;7885:8:0;-1:-1:-1;;;;;8804:30:0::1;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8838:6;8798:5;:47::i;12410:770::-:0;-1:-1:-1;;;;;12550:20:0;;12542:70;;;;-1:-1:-1;;;12542:70:0;;9395:2:1;12542:70:0;;;9377:21:1;9434:2;9414:18;;;9407:30;9473:34;9453:18;;;9446:62;-1:-1:-1;;;9524:18:1;;;9517:35;9569:19;;12542:70:0;9193:401:1;12542:70:0;-1:-1:-1;;;;;12631:23:0;;12623:71;;;;-1:-1:-1;;;12623:71:0;;9801:2:1;12623:71:0;;;9783:21:1;9840:2;9820:18;;;9813:30;9879:34;9859:18;;;9852:62;-1:-1:-1;;;9930:18:1;;;9923:33;9973:19;;12623:71:0;9599:399:1;12623:71:0;-1:-1:-1;;;;;12791:17:0;;12767:21;12791:17;;;:9;:17;;;;;;12841:23;;;;12819:111;;;;-1:-1:-1;;;12819:111:0;;10205:2:1;12819:111:0;;;10187:21:1;10244:2;10224:18;;;10217:30;10283:34;10263:18;;;10256:62;-1:-1:-1;;;10334:18:1;;;10327:36;10380:19;;12819:111:0;10003:402:1;12819:111:0;-1:-1:-1;;;;;12966:17:0;;;;;;;:9;:17;;;;;;12986:22;;;12966:42;;13030:20;;;;;;;;:30;;13002:6;;12966:17;13030:30;;13002:6;;13030:30;:::i;:::-;;;;;;;;13095:9;-1:-1:-1;;;;;13078:35:0;13087:6;-1:-1:-1;;;;;13078:35:0;;13106:6;13078:35;;;;1410:25:1;;1398:2;1383:18;;1264:177;13078:35:0;;;;;;;;12531:649;12410:770;;;:::o;13188:424::-;-1:-1:-1;;;;;13272:21:0;;13264:65;;;;-1:-1:-1;;;13264:65:0;;10612:2:1;13264:65:0;;;10594:21:1;10651:2;10631:18;;;10624:30;10690:33;10670:18;;;10663:61;10741:18;;13264:65:0;10410:355:1;13264:65:0;13420:6;13404:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13437:18:0;;;;;;:9;:18;;;;;:28;;13459:6;;13437:18;:28;;13459:6;;13437:28;:::i;:::-;;;;;;;;13484:6;13476:4;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;13506:37:0;;1410:25:1;;;-1:-1:-1;;;;;13506:37:0;;;13523:1;;13506:37;;1398:2:1;1383:18;13506:37:0;;;;;;;11689:204;;:::o;13620:744::-;13763:1;7885:8;;;;;-1:-1:-1;;;;;7885:8:0;-1:-1:-1;;;;;13718:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13718:47:0;;13696:119;;;;-1:-1:-1;;;13696:119:0;;11102:2:1;13696:119:0;;;11084:21:1;11141:2;11121:18;;;11114:30;-1:-1:-1;;;11160:18:1;;;11153:52;11222:18;;13696:119:0;10900:346:1;13696:119:0;-1:-1:-1;;;;;13834:21:0;;13826:67;;;;-1:-1:-1;;;13826:67:0;;11453:2:1;13826:67:0;;;11435:21:1;11492:2;11472:18;;;11465:30;11531:34;11511:18;;;11504:62;-1:-1:-1;;;11582:18:1;;;11575:31;11623:19;;13826:67:0;11251:397:1;13826:67:0;-1:-1:-1;;;;;13993:18:0;;13968:22;13993:18;;;:9;:18;;;;;;14030:24;;;;14022:71;;;;-1:-1:-1;;;14022:71:0;;11855:2:1;14022:71:0;;;11837:21:1;11894:2;11874:18;;;11867:30;11933:34;11913:18;;;11906:62;-1:-1:-1;;;11984:18:1;;;11977:32;12026:19;;14022:71:0;11653:398:1;14022:71:0;-1:-1:-1;;;;;14129:18:0;;;;;;:9;:18;;;;;14150:23;;;14129:44;;14195:12;:22;;14167:6;;14129:18;14195:22;;14167:6;;14195:22;:::i;:::-;;;;-1:-1:-1;;7858:7:0;7885:8;;;;-1:-1:-1;;;;;7885:8:0;-1:-1:-1;;;;;14253:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14235:60:0;14244:7;-1:-1:-1;;;;;14235:60:0;;14288:6;14235:60;;;;1410:25:1;;1398:2;1383:18;;1264:177;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:127::-;1507:10;1502:3;1498:20;1495:1;1488:31;1538:4;1535:1;1528:15;1562:4;1559:1;1552:15;1578:719;1621:5;1674:3;1667:4;1659:6;1655:17;1651:27;1641:55;;1692:1;1689;1682:12;1641:55;1728:6;1715:20;1754:18;1791:2;1787;1784:10;1781:36;;;1797:18;;:::i;:::-;1872:2;1866:9;1840:2;1926:13;;-1:-1:-1;;1922:22:1;;;1946:2;1918:31;1914:40;1902:53;;;1970:18;;;1990:22;;;1967:46;1964:72;;;2016:18;;:::i;:::-;2056:10;2052:2;2045:22;2091:2;2083:6;2076:18;2137:3;2130:4;2125:2;2117:6;2113:15;2109:26;2106:35;2103:55;;;2154:1;2151;2144:12;2103:55;2218:2;2211:4;2203:6;2199:17;2192:4;2184:6;2180:17;2167:54;2265:1;2258:4;2253:2;2245:6;2241:15;2237:26;2230:37;2285:6;2276:15;;;;;;1578:719;;;;:::o;2302:816::-;2417:6;2425;2433;2441;2449;2502:3;2490:9;2481:7;2477:23;2473:33;2470:53;;;2519:1;2516;2509:12;2470:53;2558:9;2545:23;2577:31;2602:5;2577:31;:::i;:::-;2627:5;-1:-1:-1;2683:2:1;2668:18;;2655:32;2706:18;2736:14;;;2733:34;;;2763:1;2760;2753:12;2733:34;2786:50;2828:7;2819:6;2808:9;2804:22;2786:50;:::i;:::-;2776:60;;2889:2;2878:9;2874:18;2861:32;2845:48;;2918:2;2908:8;2905:16;2902:36;;;2934:1;2931;2924:12;2902:36;;2957:52;3001:7;2990:8;2979:9;2975:24;2957:52;:::i;:::-;2302:816;;;;-1:-1:-1;2947:62:1;;3056:2;3041:18;;3028:32;;-1:-1:-1;3107:3:1;3092:19;3079:33;;2302:816;-1:-1:-1;;;2302:816:1:o;3123:456::-;3200:6;3208;3216;3269:2;3257:9;3248:7;3244:23;3240:32;3237:52;;;3285:1;3282;3275:12;3237:52;3324:9;3311:23;3343:31;3368:5;3343:31;:::i;:::-;3393:5;-1:-1:-1;3450:2:1;3435:18;;3422:32;3463:33;3422:32;3463:33;:::i;:::-;3123:456;;3515:7;;-1:-1:-1;;;3569:2:1;3554:18;;;;3541:32;;3123:456::o;3773:180::-;3832:6;3885:2;3873:9;3864:7;3860:23;3856:32;3853:52;;;3901:1;3898;3891:12;3853:52;-1:-1:-1;3924:23:1;;3773:180;-1:-1:-1;3773:180:1:o;3958:247::-;4017:6;4070:2;4058:9;4049:7;4045:23;4041:32;4038:52;;;4086:1;4083;4076:12;4038:52;4125:9;4112:23;4144:31;4169:5;4144:31;:::i;:::-;4194:5;3958:247;-1:-1:-1;;;3958:247:1:o;4418:388::-;4486:6;4494;4547:2;4535:9;4526:7;4522:23;4518:32;4515:52;;;4563:1;4560;4553:12;4515:52;4602:9;4589:23;4621:31;4646:5;4621:31;:::i;:::-;4671:5;-1:-1:-1;4728:2:1;4713:18;;4700:32;4741:33;4700:32;4741:33;:::i;:::-;4793:7;4783:17;;;4418:388;;;;;:::o;4811:380::-;4890:1;4886:12;;;;4933;;;4954:61;;5008:4;5000:6;4996:17;4986:27;;4954:61;5061:2;5053:6;5050:14;5030:18;5027:38;5024:161;;5107:10;5102:3;5098:20;5095:1;5088:31;5142:4;5139:1;5132:15;5170:4;5167:1;5160:15;5024:161;;4811:380;;;:::o;5196:410::-;5398:2;5380:21;;;5437:2;5417:18;;;5410:30;5476:34;5471:2;5456:18;;5449:62;-1:-1:-1;;;5542:2:1;5527:18;;5520:44;5596:3;5581:19;;5196:410::o;6020:127::-;6081:10;6076:3;6072:20;6069:1;6062:31;6112:4;6109:1;6102:15;6136:4;6133:1;6126:15;6152:128;6192:3;6223:1;6219:6;6216:1;6213:13;6210:39;;;6229:18;;:::i;:::-;-1:-1:-1;6265:9:1;;6152:128::o;6285:251::-;6355:6;6408:2;6396:9;6387:7;6383:23;6379:32;6376:52;;;6424:1;6421;6414:12;6376:52;6456:9;6450:16;6475:31;6500:5;6475:31;:::i;10770:125::-;10810:4;10838:1;10835;10832:8;10829:34;;;10843:18;;:::i;:::-;-1:-1:-1;10880:9:1;;10770:125::o
Swarm Source
ipfs://14100463e853a497eb734b790a681ce2a19d04d0480c41c0c96cdf5b855841f9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.