ERC-20
Exchange
Overview
Max Total Supply
250,000,000,000 BNS
Holders
619 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-2.49%)
Onchain Market Cap
$22,837,500.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 8 Decimals)
Balance
0.00000001 BNSValue
$0.00 ( ~0 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BNSERC
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-23 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 @openzeppelin/contracts/token/ERC20/extensions/[email protected] pragma solidity ^0.8.4; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File @openzeppelin/contracts/utils/[email protected] pragma solidity ^0.8.4; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/token/ERC20/[email protected] pragma solidity ^0.8.4; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 8; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `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); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ 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; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { 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, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] pragma solidity ^0.8.4; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } } // File @openzeppelin/contracts/token/ERC20/extensions/[email protected] pragma solidity ^0.8.4; /** * @dev Extension of {ERC20} that adds a cap to the supply of tokens. */ abstract contract ERC20Capped is ERC20 { uint256 private immutable _cap; /** * @dev Sets the value of the `cap`. This value is immutable, it can only be * set once during construction. */ constructor(uint256 cap_) { require(cap_ > 0, "ERC20Capped: cap is 0"); _cap = cap_; } /** * @dev Returns the cap on the token's total supply. */ function cap() public view virtual returns (uint256) { return _cap; } /** * @dev See {ERC20-_mint}. */ function _mint(address account, uint256 amount) internal virtual override { require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded"); super._mint(account, amount); } } // File @openzeppelin/contracts/security/[email protected] pragma solidity ^0.8.4; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File @openzeppelin/contracts/access/[email protected] pragma solidity ^0.8.4; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File contracts/BNSERC.sol pragma solidity ^0.8.4; contract BNSERC is ERC20, ERC20Capped, ERC20Burnable, Pausable, Ownable { constructor() ERC20("Bitbns Token", "BNS") ERC20Capped(250000000000*10**decimals()) { } function decimals() public view virtual override returns (uint8) { return 8; } function pause() public onlyOwner { _pause(); } function unpause() public onlyOwner { _unpause(); } function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused override { super._beforeTokenTransfer(from, to, amount); } // The following functions are overrides required by Solidity. function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20) { super._afterTokenTransfer(from, to, amount); } function _mint(address to, uint256 amount) internal override(ERC20, ERC20Capped) { super._mint(to, amount); } function _burn(address account, uint256 amount) internal override(ERC20) { super._burn(account, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","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":[{"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":"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50620000206008600a6200025f565b6200003190643a352944006200032d565b6040518060400160405280600c81526020016b2134ba313739902a37b5b2b760a11b81525060405180604001604052806003815260200162424e5360e81b81525081600390805190602001906200008a92919062000170565b508051620000a090600490602084019062000170565b50505060008111620000f85760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015260640160405180910390fd5b6080526005805460ff19169055620001103362000116565b620003a2565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200017e906200034f565b90600052602060002090601f016020900481019282620001a25760008555620001ed565b82601f10620001bd57805160ff1916838001178555620001ed565b82800160010185558215620001ed579182015b82811115620001ed578251825591602001919060010190620001d0565b50620001fb929150620001ff565b5090565b5b80821115620001fb576000815560010162000200565b600181815b80851115620002575781600019048211156200023b576200023b6200038c565b808516156200024957918102915b93841c93908002906200021b565b509250929050565b60006200027060ff84168362000277565b9392505050565b600082620002885750600162000327565b81620002975750600062000327565b8160018114620002b05760028114620002bb57620002db565b600191505062000327565b60ff841115620002cf57620002cf6200038c565b50506001821b62000327565b5060208310610133831016604e8410600b841016171562000300575081810a62000327565b6200030c838362000216565b80600019048211156200032357620003236200038c565b0290505b92915050565b60008160001904831182151516156200034a576200034a6200038c565b500290565b600181811c908216806200036457607f821691505b602082108114156200038657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b608051611132620003c5600039600081816101b30152610c3901526111326000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b85780638da5cb5b1161007c5780638da5cb5b1461027157806395d89b411461029a578063a457c2d7146102a2578063a9059cbb146102b5578063dd62ed3e146102c8578063f2fde38b1461030157600080fd5b80635c975abb1461021a57806370a0823114610225578063715018a61461024e57806379cc6790146102565780638456cb591461026957600080fd5b8063355274ea116100ff578063355274ea146101b157806339509351146101d75780633f4ba83a146101ea57806340c10f19146101f457806342966c681461020757600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f578063313ce567146101a2575b600080fd5b610144610314565b6040516101519190610ff4565b60405180910390f35b61016d610168366004610fb3565b6103a6565b6040519015158152602001610151565b6002545b604051908152602001610151565b61016d61019d366004610f78565b6103bc565b60405160088152602001610151565b7f0000000000000000000000000000000000000000000000000000000000000000610181565b61016d6101e5366004610fb3565b61046b565b6101f26104a7565b005b6101f2610202366004610fb3565b6104e1565b6101f2610215366004610fdc565b61051f565b60055460ff1661016d565b610181610233366004610f25565b6001600160a01b031660009081526020819052604090205490565b6101f261052c565b6101f2610264366004610fb3565b610566565b6101f26105ec565b60055461010090046001600160a01b03166040516001600160a01b039091168152602001610151565b610144610624565b61016d6102b0366004610fb3565b610633565b61016d6102c3366004610fb3565b6106cc565b6101816102d6366004610f46565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f261030f366004610f25565b6106d9565b606060038054610323906110ab565b80601f016020809104026020016040519081016040528092919081815260200182805461034f906110ab565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610777565b50600192915050565b60006103c984848461089b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104535760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104608533858403610777565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103b39185906104a290869061107c565b610777565b6005546001600160a01b036101009091041633146104d75760405162461bcd60e51b815260040161044a90611047565b6104df610a75565b565b6005546001600160a01b036101009091041633146105115760405162461bcd60e51b815260040161044a90611047565b61051b8282610b08565b5050565b6105293382610b12565b50565b6005546001600160a01b0361010090910416331461055c5760405162461bcd60e51b815260040161044a90611047565b6104df6000610b1c565b600061057283336102d6565b9050818110156105d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b606482015260840161044a565b6105dd8333848403610777565b6105e78383610b12565b505050565b6005546001600160a01b0361010090910416331461061c5760405162461bcd60e51b815260040161044a90611047565b6104df610b76565b606060048054610323906110ab565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156106b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161044a565b6106c23385858403610777565b5060019392505050565b60006103b333848461089b565b6005546001600160a01b036101009091041633146107095760405162461bcd60e51b815260040161044a90611047565b6001600160a01b03811661076e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044a565b61052981610b1c565b6001600160a01b0383166107d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044a565b6001600160a01b03821661083a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044a565b6001600160a01b0382166109615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044a565b61096c838383610bf1565b6001600160a01b038316600090815260208190526040902054818110156109e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044a565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a1b90849061107c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a6791815260200190565b60405180910390a350505050565b60055460ff16610abe5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161044a565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61051b8282610c37565b61051b8282610cc4565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60055460ff1615610bbc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161044a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610aeb3390565b60055460ff16156105e75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161044a565b7f000000000000000000000000000000000000000000000000000000000000000081610c6260025490565b610c6c919061107c565b1115610cba5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015260640161044a565b61051b8282610e1e565b6001600160a01b038216610d245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161044a565b610d3082600083610bf1565b6001600160a01b03821660009081526020819052604090205481811015610da45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161044a565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610dd3908490611094565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b038216610e745760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044a565b610e8060008383610bf1565b8060026000828254610e92919061107c565b90915550506001600160a01b03821660009081526020819052604081208054839290610ebf90849061107c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80356001600160a01b0381168114610f2057600080fd5b919050565b600060208284031215610f36578081fd5b610f3f82610f09565b9392505050565b60008060408385031215610f58578081fd5b610f6183610f09565b9150610f6f60208401610f09565b90509250929050565b600080600060608486031215610f8c578081fd5b610f9584610f09565b9250610fa360208501610f09565b9150604084013590509250925092565b60008060408385031215610fc5578182fd5b610fce83610f09565b946020939093013593505050565b600060208284031215610fed578081fd5b5035919050565b6000602080835283518082850152825b8181101561102057858101830151858201604001528201611004565b818111156110315783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561108f5761108f6110e6565b500190565b6000828210156110a6576110a66110e6565b500390565b600181811c908216806110bf57607f821691505b602082108114156110e057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212201bf8acbac200568e0a4f9c0e545c314d737d2131789b445112575fbf52154db164736f6c63430008040033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c80635c975abb116100b85780638da5cb5b1161007c5780638da5cb5b1461027157806395d89b411461029a578063a457c2d7146102a2578063a9059cbb146102b5578063dd62ed3e146102c8578063f2fde38b1461030157600080fd5b80635c975abb1461021a57806370a0823114610225578063715018a61461024e57806379cc6790146102565780638456cb591461026957600080fd5b8063355274ea116100ff578063355274ea146101b157806339509351146101d75780633f4ba83a146101ea57806340c10f19146101f457806342966c681461020757600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f578063313ce567146101a2575b600080fd5b610144610314565b6040516101519190610ff4565b60405180910390f35b61016d610168366004610fb3565b6103a6565b6040519015158152602001610151565b6002545b604051908152602001610151565b61016d61019d366004610f78565b6103bc565b60405160088152602001610151565b7f0000000000000000000000000000000000000000000000015af1d78b58c40000610181565b61016d6101e5366004610fb3565b61046b565b6101f26104a7565b005b6101f2610202366004610fb3565b6104e1565b6101f2610215366004610fdc565b61051f565b60055460ff1661016d565b610181610233366004610f25565b6001600160a01b031660009081526020819052604090205490565b6101f261052c565b6101f2610264366004610fb3565b610566565b6101f26105ec565b60055461010090046001600160a01b03166040516001600160a01b039091168152602001610151565b610144610624565b61016d6102b0366004610fb3565b610633565b61016d6102c3366004610fb3565b6106cc565b6101816102d6366004610f46565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101f261030f366004610f25565b6106d9565b606060038054610323906110ab565b80601f016020809104026020016040519081016040528092919081815260200182805461034f906110ab565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610777565b50600192915050565b60006103c984848461089b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104535760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104608533858403610777565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103b39185906104a290869061107c565b610777565b6005546001600160a01b036101009091041633146104d75760405162461bcd60e51b815260040161044a90611047565b6104df610a75565b565b6005546001600160a01b036101009091041633146105115760405162461bcd60e51b815260040161044a90611047565b61051b8282610b08565b5050565b6105293382610b12565b50565b6005546001600160a01b0361010090910416331461055c5760405162461bcd60e51b815260040161044a90611047565b6104df6000610b1c565b600061057283336102d6565b9050818110156105d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b606482015260840161044a565b6105dd8333848403610777565b6105e78383610b12565b505050565b6005546001600160a01b0361010090910416331461061c5760405162461bcd60e51b815260040161044a90611047565b6104df610b76565b606060048054610323906110ab565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156106b55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161044a565b6106c23385858403610777565b5060019392505050565b60006103b333848461089b565b6005546001600160a01b036101009091041633146107095760405162461bcd60e51b815260040161044a90611047565b6001600160a01b03811661076e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044a565b61052981610b1c565b6001600160a01b0383166107d95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044a565b6001600160a01b03821661083a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044a565b6001600160a01b0382166109615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044a565b61096c838383610bf1565b6001600160a01b038316600090815260208190526040902054818110156109e45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044a565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a1b90849061107c565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a6791815260200190565b60405180910390a350505050565b60055460ff16610abe5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161044a565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b61051b8282610c37565b61051b8282610cc4565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60055460ff1615610bbc5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161044a565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610aeb3390565b60055460ff16156105e75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161044a565b7f0000000000000000000000000000000000000000000000015af1d78b58c4000081610c6260025490565b610c6c919061107c565b1115610cba5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015260640161044a565b61051b8282610e1e565b6001600160a01b038216610d245760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161044a565b610d3082600083610bf1565b6001600160a01b03821660009081526020819052604090205481811015610da45760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161044a565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610dd3908490611094565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b038216610e745760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161044a565b610e8060008383610bf1565b8060026000828254610e92919061107c565b90915550506001600160a01b03821660009081526020819052604081208054839290610ebf90849061107c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80356001600160a01b0381168114610f2057600080fd5b919050565b600060208284031215610f36578081fd5b610f3f82610f09565b9392505050565b60008060408385031215610f58578081fd5b610f6183610f09565b9150610f6f60208401610f09565b90509250929050565b600080600060608486031215610f8c578081fd5b610f9584610f09565b9250610fa360208501610f09565b9150604084013590509250925092565b60008060408385031215610fc5578182fd5b610fce83610f09565b946020939093013593505050565b600060208284031215610fed578081fd5b5035919050565b6000602080835283518082850152825b8181101561102057858101830151858201604001528201611004565b818111156110315783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561108f5761108f6110e6565b500190565b6000828210156110a6576110a66110e6565b500390565b600181811c908216806110bf57607f821691505b602082108114156110e057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212201bf8acbac200568e0a4f9c0e545c314d737d2131789b445112575fbf52154db164736f6c63430008040033
Deployed Bytecode Sourcemap
23227:1302:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6398:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8564:169;;;;;;:::i;:::-;;:::i;:::-;;;1848:14:1;;1841:22;1823:41;;1811:2;1796:18;8564:169:0;1778:92:1;7517:108:0;7605:12;;7517:108;;;8855:25:1;;;8843:2;8828:18;7517:108:0;8810:76:1;9215:492:0;;;;;;:::i;:::-;;:::i;23418:92::-;;;23501:1;9033:36:1;;9021:2;9006:18;23418:92:0;8988:87:1;18251:83:0;18322:4;18251:83;;10116:215;;;;;;:::i;:::-;;:::i;23587:65::-;;;:::i;:::-;;23660:95;;;;;;:::i;:::-;;:::i;16855:91::-;;;;;;:::i;:::-;;:::i;19686:86::-;19757:7;;;;19686:86;;7688:127;;;;;;:::i;:::-;-1:-1:-1;;;;;7789:18:0;7762:7;7789:18;;;;;;;;;;;;7688:127;22527:94;;;:::i;17265:368::-;;;;;;:::i;:::-;;:::i;23518:61::-;;;:::i;21876:87::-;21949:6;;;;;-1:-1:-1;;;;;21949:6:0;21876:87;;-1:-1:-1;;;;;1639:32:1;;;1621:51;;1609:2;1594:18;21876:87:0;1576:102:1;6617:104:0;;;:::i;10834:413::-;;;;;;:::i;:::-;;:::i;8028:175::-;;;;;;:::i;:::-;;:::i;8266:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8382:18:0;;;8355:7;8382:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8266:151;22776:192;;;;;;:::i;:::-;;:::i;6398:100::-;6452:13;6485:5;6478:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6398:100;:::o;8564:169::-;8647:4;8664:39;4185:10;8687:7;8696:6;8664:8;:39::i;:::-;-1:-1:-1;8721:4:0;8564:169;;;;:::o;9215:492::-;9355:4;9372:36;9382:6;9390:9;9401:6;9372:9;:36::i;:::-;-1:-1:-1;;;;;9448:19:0;;9421:24;9448:19;;;:11;:19;;;;;;;;4185:10;9448:33;;;;;;;;9500:26;;;;9492:79;;;;-1:-1:-1;;;9492:79:0;;5403:2:1;9492:79:0;;;5385:21:1;5442:2;5422:18;;;5415:30;5481:34;5461:18;;;5454:62;-1:-1:-1;;;5532:18:1;;;5525:38;5580:19;;9492:79:0;;;;;;;;;9607:57;9616:6;4185:10;9657:6;9638:16;:25;9607:8;:57::i;:::-;-1:-1:-1;9695:4:0;;9215:492;-1:-1:-1;;;;9215:492:0:o;10116:215::-;4185:10;10204:4;10253:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10253:34:0;;;;;;;;;;10204:4;;10221:80;;10244:7;;10253:47;;10290:10;;10253:47;:::i;:::-;10221:8;:80::i;23587:65::-;21949:6;;-1:-1:-1;;;;;21949:6:0;;;;;4185:10;22096:23;22088:68;;;;-1:-1:-1;;;22088:68:0;;;;;;;:::i;:::-;23634:10:::1;:8;:10::i;:::-;23587:65::o:0;23660:95::-;21949:6;;-1:-1:-1;;;;;21949:6:0;;;;;4185:10;22096:23;22088:68;;;;-1:-1:-1;;;22088:68:0;;;;;;;:::i;:::-;23730:17:::1;23736:2;23740:6;23730:5;:17::i;:::-;23660:95:::0;;:::o;16855:91::-;16911:27;4185:10;16931:6;16911:5;:27::i;:::-;16855:91;:::o;22527:94::-;21949:6;;-1:-1:-1;;;;;21949:6:0;;;;;4185:10;22096:23;22088:68;;;;-1:-1:-1;;;22088:68:0;;;;;;;:::i;:::-;22592:21:::1;22610:1;22592:9;:21::i;17265:368::-:0;17342:24;17369:32;17379:7;4185:10;8266:151;:::i;17369:32::-;17342:59;;17440:6;17420:16;:26;;17412:75;;;;-1:-1:-1;;;17412:75:0;;6173:2:1;17412:75:0;;;6155:21:1;6212:2;6192:18;;;6185:30;6251:34;6231:18;;;6224:62;-1:-1:-1;;;6302:18:1;;;6295:34;6346:19;;17412:75:0;6145:226:1;17412:75:0;17523:58;17532:7;4185:10;17574:6;17555:16;:25;17523:8;:58::i;:::-;17603:22;17609:7;17618:6;17603:5;:22::i;:::-;17265:368;;;:::o;23518:61::-;21949:6;;-1:-1:-1;;;;;21949:6:0;;;;;4185:10;22096:23;22088:68;;;;-1:-1:-1;;;22088:68:0;;;;;;;:::i;:::-;23563:8:::1;:6;:8::i;6617:104::-:0;6673:13;6706:7;6699:14;;;;;:::i;10834:413::-;4185:10;10927:4;10971:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10971:34:0;;;;;;;;;;11024:35;;;;11016:85;;;;-1:-1:-1;;;11016:85:0;;8145:2:1;11016:85:0;;;8127:21:1;8184:2;8164:18;;;8157:30;8223:34;8203:18;;;8196:62;-1:-1:-1;;;8274:18:1;;;8267:35;8319:19;;11016:85:0;8117:227:1;11016:85:0;11137:67;4185:10;11160:7;11188:15;11169:16;:34;11137:8;:67::i;:::-;-1:-1:-1;11235:4:0;;10834:413;-1:-1:-1;;;10834:413:0:o;8028:175::-;8114:4;8131:42;4185:10;8155:9;8166:6;8131:9;:42::i;22776:192::-;21949:6;;-1:-1:-1;;;;;21949:6:0;;;;;4185:10;22096:23;22088:68;;;;-1:-1:-1;;;22088:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22865:22:0;::::1;22857:73;;;::::0;-1:-1:-1;;;22857:73:0;;3841:2:1;22857:73:0::1;::::0;::::1;3823:21:1::0;3880:2;3860:18;;;3853:30;3919:34;3899:18;;;3892:62;-1:-1:-1;;;3970:18:1;;;3963:36;4016:19;;22857:73:0::1;3813:228:1::0;22857:73:0::1;22941:19;22951:8;22941:9;:19::i;14518:380::-:0;-1:-1:-1;;;;;14654:19:0;;14646:68;;;;-1:-1:-1;;;14646:68:0;;7740:2:1;14646:68:0;;;7722:21:1;7779:2;7759:18;;;7752:30;7818:34;7798:18;;;7791:62;-1:-1:-1;;;7869:18:1;;;7862:34;7913:19;;14646:68:0;7712:226:1;14646:68:0;-1:-1:-1;;;;;14733:21:0;;14725:68;;;;-1:-1:-1;;;14725:68:0;;4248:2:1;14725:68:0;;;4230:21:1;4287:2;4267:18;;;4260:30;4326:34;4306:18;;;4299:62;-1:-1:-1;;;4377:18:1;;;4370:32;4419:19;;14725:68:0;4220:224:1;14725:68:0;-1:-1:-1;;;;;14806:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14858:32;;8855:25:1;;;14858:32:0;;8828:18:1;14858:32:0;;;;;;;14518:380;;;:::o;11737:733::-;-1:-1:-1;;;;;11877:20:0;;11869:70;;;;-1:-1:-1;;;11869:70:0;;6980:2:1;11869:70:0;;;6962:21:1;7019:2;6999:18;;;6992:30;7058:34;7038:18;;;7031:62;-1:-1:-1;;;7109:18:1;;;7102:35;7154:19;;11869:70:0;6952:227:1;11869:70:0;-1:-1:-1;;;;;11958:23:0;;11950:71;;;;-1:-1:-1;;;11950:71:0;;2685:2:1;11950:71:0;;;2667:21:1;2724:2;2704:18;;;2697:30;2763:34;2743:18;;;2736:62;-1:-1:-1;;;2814:18:1;;;2807:33;2857:19;;11950:71:0;2657:225:1;11950:71:0;12034:47;12055:6;12063:9;12074:6;12034:20;:47::i;:::-;-1:-1:-1;;;;;12118:17:0;;12094:21;12118:17;;;;;;;;;;;12154:23;;;;12146:74;;;;-1:-1:-1;;;12146:74:0;;4651:2:1;12146:74:0;;;4633:21:1;4690:2;4670:18;;;4663:30;4729:34;4709:18;;;4702:62;-1:-1:-1;;;4780:18:1;;;4773:36;4826:19;;12146:74:0;4623:228:1;12146:74:0;-1:-1:-1;;;;;12256:17:0;;;:9;:17;;;;;;;;;;;12276:22;;;12256:42;;12320:20;;;;;;;;:30;;12292:6;;12256:9;12320:30;;12292:6;;12320:30;:::i;:::-;;;;;;;;12385:9;-1:-1:-1;;;;;12368:35:0;12377:6;-1:-1:-1;;;;;12368:35:0;;12396:6;12368:35;;;;8855:25:1;;8843:2;8828:18;;8810:76;12368:35:0;;;;;;;;11737:733;;;;:::o;20745:120::-;19757:7;;;;20281:41;;;;-1:-1:-1;;;20281:41:0;;3089:2:1;20281:41:0;;;3071:21:1;3128:2;3108:18;;;3101:30;-1:-1:-1;;;3147:18:1;;;3140:50;3207:18;;20281:41:0;3061:170:1;20281:41:0;20804:7:::1;:15:::0;;-1:-1:-1;;20804:15:0::1;::::0;;20835:22:::1;4185:10:::0;20844:12:::1;20835:22;::::0;-1:-1:-1;;;;;1639:32:1;;;1621:51;;1609:2;1594:18;20835:22:0::1;;;;;;;20745:120::o:0;24229:146::-;24344:23;24356:2;24360:6;24344:11;:23::i;24383:143::-;24490:28;24502:7;24511:6;24490:11;:28::i;22976:173::-;23051:6;;;-1:-1:-1;;;;;23068:17:0;;;23051:6;23068:17;;;-1:-1:-1;;;;;;23068:17:0;;;;;;23101:40;;23051:6;;;;;;;;23101:40;;23032:16;;23101:40;22976:173;;:::o;20486:118::-;19757:7;;;;20011:9;20003:38;;;;-1:-1:-1;;;20003:38:0;;5058:2:1;20003:38:0;;;5040:21:1;5097:2;5077:18;;;5070:30;-1:-1:-1;;;5116:18:1;;;5109:46;5172:18;;20003:38:0;5030:166:1;20003:38:0;20546:7:::1;:14:::0;;-1:-1:-1;;20546:14:0::1;20556:4;20546:14;::::0;;20576:20:::1;20583:12;4185:10:::0;;4105:98;23763:199;19757:7;;;;20011:9;20003:38;;;;-1:-1:-1;;;20003:38:0;;5058:2:1;20003:38:0;;;5040:21:1;5097:2;5077:18;;;5070:30;-1:-1:-1;;;5116:18:1;;;5109:46;5172:18;;20003:38:0;5030:166:1;18392:207:0;18322:4;18507:6;18485:19;7605:12;;;7517:108;18485:19;:28;;;;:::i;:::-;:37;;18477:75;;;;-1:-1:-1;;;18477:75:0;;7386:2:1;18477:75:0;;;7368:21:1;7425:2;7405:18;;;7398:30;7464:27;7444:18;;;7437:55;7509:18;;18477:75:0;7358:175:1;18477:75:0;18563:28;18575:7;18584:6;18563:11;:28::i;13489:591::-;-1:-1:-1;;;;;13573:21:0;;13565:67;;;;-1:-1:-1;;;13565:67:0;;6578:2:1;13565:67:0;;;6560:21:1;6617:2;6597:18;;;6590:30;6656:34;6636:18;;;6629:62;-1:-1:-1;;;6707:18:1;;;6700:31;6748:19;;13565:67:0;6550:223:1;13565:67:0;13645:49;13666:7;13683:1;13687:6;13645:20;:49::i;:::-;-1:-1:-1;;;;;13732:18:0;;13707:22;13732:18;;;;;;;;;;;13769:24;;;;13761:71;;;;-1:-1:-1;;;13761:71:0;;3438:2:1;13761:71:0;;;3420:21:1;3477:2;3457:18;;;3450:30;3516:34;3496:18;;;3489:62;-1:-1:-1;;;3567:18:1;;;3560:32;3609:19;;13761:71:0;3410:224:1;13761:71:0;-1:-1:-1;;;;;13868:18:0;;:9;:18;;;;;;;;;;13889:23;;;13868:44;;13934:12;:22;;13906:6;;13868:9;13934:22;;13906:6;;13934:22;:::i;:::-;;;;-1:-1:-1;;13974:37:0;;8855:25:1;;;14000:1:0;;-1:-1:-1;;;;;13974:37:0;;;;;8843:2:1;8828:18;13974:37:0;;;;;;;17265:368;;;:::o;12757:399::-;-1:-1:-1;;;;;12841:21:0;;12833:65;;;;-1:-1:-1;;;12833:65:0;;8551:2:1;12833:65:0;;;8533:21:1;8590:2;8570:18;;;8563:30;8629:33;8609:18;;;8602:61;8680:18;;12833:65:0;8523:181:1;12833:65:0;12911:49;12940:1;12944:7;12953:6;12911:20;:49::i;:::-;12989:6;12973:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13006:18:0;;:9;:18;;;;;;;;;;:28;;13028:6;;13006:9;:28;;13028:6;;13006:28;:::i;:::-;;;;-1:-1:-1;;13050:37:0;;8855:25:1;;;-1:-1:-1;;;;;13050:37:0;;;13067:1;;13050:37;;8843:2:1;8828:18;13050:37:0;;;;;;;23660:95;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:1:o;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:264::-;1079:6;1087;1140:2;1128:9;1119:7;1115:23;1111:32;1108:2;;;1161:6;1153;1146:22;1108:2;1189:29;1208:9;1189:29;:::i;:::-;1179:39;1265:2;1250:18;;;;1237:32;;-1:-1:-1;;;1098:177:1:o;1280:190::-;1339:6;1392:2;1380:9;1371:7;1367:23;1363:32;1360:2;;;1413:6;1405;1398:22;1360:2;-1:-1:-1;1441:23:1;;1350:120;-1:-1:-1;1350:120:1:o;1875:603::-;1987:4;2016:2;2045;2034:9;2027:21;2077:6;2071:13;2120:6;2115:2;2104:9;2100:18;2093:34;2145:4;2158:140;2172:6;2169:1;2166:13;2158:140;;;2267:14;;;2263:23;;2257:30;2233:17;;;2252:2;2229:26;2222:66;2187:10;;2158:140;;;2316:6;2313:1;2310:13;2307:2;;;2386:4;2381:2;2372:6;2361:9;2357:22;2353:31;2346:45;2307:2;-1:-1:-1;2462:2:1;2441:15;-1:-1:-1;;2437:29:1;2422:45;;;;2469:2;2418:54;;1996:482;-1:-1:-1;;;1996:482:1:o;5610:356::-;5812:2;5794:21;;;5831:18;;;5824:30;5890:34;5885:2;5870:18;;5863:62;5957:2;5942:18;;5784:182::o;9080:128::-;9120:3;9151:1;9147:6;9144:1;9141:13;9138:2;;;9157:18;;:::i;:::-;-1:-1:-1;9193:9:1;;9128:80::o;9213:125::-;9253:4;9281:1;9278;9275:8;9272:2;;;9286:18;;:::i;:::-;-1:-1:-1;9323:9:1;;9262:76::o;9343:380::-;9422:1;9418:12;;;;9465;;;9486:2;;9540:4;9532:6;9528:17;9518:27;;9486:2;9593;9585:6;9582:14;9562:18;9559:38;9556:2;;;9639:10;9634:3;9630:20;9627:1;9620:31;9674:4;9671:1;9664:15;9702:4;9699:1;9692:15;9556:2;;9398:325;;;:::o;9728:127::-;9789:10;9784:3;9780:20;9777:1;9770:31;9820:4;9817:1;9810:15;9844:4;9841:1;9834:15
Swarm Source
ipfs://1bf8acbac200568e0a4f9c0e545c314d737d2131789b445112575fbf52154db1
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.