ERC-20
Overview
Max Total Supply
1,000,000 BUBBLE
Holders
20
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
14,400 BUBBLEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BUBBLE
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-07 */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.17; /*** Whether we all admit it or not, we live in a bubble. While living in a bubble might not be an inherently bad thing in itself, only those who recognize that they live in one can organize their lives accordingly. Anon, do you live in a bubble? Join our private group: https://t.me/+3eDxKZDPH-UyNDlk ***/ abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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); function transferFrom(address sender, address recipient, 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Pair { function factory() external view returns (address); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BUBBLE is Context, IERC20, Ownable { using SafeMath for uint256; address payable public marketingAddress = payable(0x60d46FFdf28D1cc3AF7817341D876e7195E2a44a); mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; mapping (address => bool) private _isExemptFromTxLimit; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1_000_000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); string private _name = "Bubble Coin"; string private _symbol = "BUBBLE"; uint8 private _decimals = 18; uint256 public _marketingFee = 20; uint256 private _previousmarketingFee = _marketingFee; uint256 _sellmarketingFee = 30; uint256 public _maxTxAmount = _tTotal.div(100).mul(2); //2% uint256 private _minimumTokensBeforeSwap = 1_000 * 10**18; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[owner()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; emit Transfer(address(0), owner(), _tTotal); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[marketingAddress] = true; _isExemptFromTxLimit[owner()] = true; _isExemptFromTxLimit[address(this)] = true; _isExemptFromTxLimit[marketingAddress] = true; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return _minimumTokensBeforeSwap; } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function isExcludedFromFee(address account) external view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFromFee[account] = false; } function _approve(address owner, address spender, uint256 amount) private { 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 _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(!_isExemptFromTxLimit[from] && !_isExemptFromTxLimit[to]) { require(amount <= _maxTxAmount, "Exceeds Max Tx Amount"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap; if (!inSwapAndLiquify && swapAndLiquifyEnabled && from != uniswapV2Pair) { if (overMinimumTokenBalance) { contractTokenBalance = _minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } } if(to==uniswapV2Pair) { setSellFee(); } bool takeFee = true; if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); uint256 newBalance = address(this).balance; marketingAddress.transfer(newBalance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) { removeAllFee(); } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if(_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takemarketingFee(tLiquidity); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takemarketingFee(tLiquidity); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takemarketingFee(tLiquidity); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takemarketingFee(tLiquidity); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function excludeFromTxLimit(address account, bool _value) external onlyOwner { _isExemptFromTxLimit[account] = _value; } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tLiquidity, _getRate()); return (rAmount, rTransferAmount, tTransferAmount, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256) { uint256 tLiquidity = calculateWalletsFee(tAmount); uint256 tTransferAmount = tAmount.sub(tLiquidity); return (tTransferAmount, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rLiquidity); return (rAmount, rTransferAmount); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takemarketingFee(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) { _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } } function calculateWalletsFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingFee).div(100); } function removeAllFee() private { _marketingFee = 0; } function restoreAllFee() private { _marketingFee = _previousmarketingFee; } function setSellFee() private { _marketingFee = _sellmarketingFee; } function setAllFees(uint256 buymarketingFee, uint256 sellmarketingFee) external onlyOwner { _sellmarketingFee = sellmarketingFee; _marketingFee = buymarketingFee; _previousmarketingFee = buymarketingFee; } function setMaxTxAmount(uint256 _mount) external onlyOwner() { _maxTxAmount = _mount; } function setMinimumTokensBeforeSwap(uint256 __minimumTokensBeforeSwap) external onlyOwner() { _minimumTokensBeforeSwap = __minimumTokensBeforeSwap; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } 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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"excludeFromTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buymarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellmarketingFee","type":"uint256"}],"name":"setAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"__minimumTokensBeforeSwap","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600280546001600160a01b0319167360d46ffdf28d1cc3af7817341d876e7195e2a44a17905569d3c21bcecceda1000000600a8190556200004890600019620005bf565b6200005690600019620005ec565b600b556040518060400160405280600b81526020016a213ab13136329021b7b4b760a91b815250600c90816200008d9190620006a7565b50604080518082019091526006815265425542424c4560d01b6020820152600d90620000ba9082620006a7565b50600e8054601260ff199091161790556014600f819055601055601e601155600a546200011190600290620000fd9060646200048c602090811b62000bba17901c565b620004df60201b62000c031790919060201c565b601255683635c9adc5dea000006013556014805460ff60a81b191690553480156200013b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b5460036000620001976000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000239919062000773565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad919062000773565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000321919062000773565b601480546001600160a01b0319166001600160a01b039283161790558116608052620003556000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200039d91815260200190565b60405180910390a3600160066000620003be6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260069093528183208054851660019081179091556002549091168352908220805490931681179092556008906200042e6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155600254909116835291208054909216179055506200081f565b6000620004d683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056d60201b60201c565b90505b92915050565b600082600003620004f357506000620004d9565b60006200050183856200079e565b905082620005108583620007b8565b14620004d65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b60008183620005915760405162461bcd60e51b8152600401620005649190620007cf565b506000620005a08486620007b8565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b600082620005d157620005d1620005a9565b500690565b634e487b7160e01b600052601160045260246000fd5b81810381811115620004d957620004d9620005d6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200062d57607f821691505b6020821081036200064e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006a257600081815260208120601f850160051c810160208610156200067d5750805b601f850160051c820191505b818110156200069e5782815560010162000689565b5050505b505050565b81516001600160401b03811115620006c357620006c362000602565b620006db81620006d4845462000618565b8462000654565b602080601f831160018114620007135760008415620006fa5750858301515b600019600386901b1c1916600185901b1785556200069e565b600085815260208120601f198616915b82811015620007445788860151825594840194600190910190840162000723565b5085821015620007635787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200078657600080fd5b81516001600160a01b0381168114620004d657600080fd5b8082028115828204841417620004d957620004d9620005d6565b600082620007ca57620007ca620005a9565b500490565b600060208083528351808285015260005b81811015620007fe57858101830151858201604001528201620007e0565b506000604082860101526040601f19601f8301168501019250505092915050565b608051611f02620008506000396000818161024a015281816113950152818161144e015261148a0152611f026000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063a5ece94111610095578063dd62ed3e11610064578063dd62ed3e1461054a578063ea2f0b3714610590578063ec28438a146105b0578063f2fde38b146105d057600080fd5b8063a5ece941146104ca578063a9059cbb146104ea578063aee50b1e1461050a578063c49b9a801461052a57600080fd5b8063906e9dd0116100d1578063906e9dd01461046057806395d89b4114610480578063a073d37f14610495578063a457c2d7146104aa57600080fd5b8063715018a6146104175780637d1db4a51461042c5780638da5cb5b1461044257600080fd5b8063313ce5671161016f57806349bd5a5e1161013e57806349bd5a5e1461037d5780634a74bb021461039d5780635342acb4146103be57806370a08231146103f757600080fd5b8063313ce567146102fb578063395093511461031d578063437823ec1461033d57806349ae99671461035d57600080fd5b806318160ddd116101ab57806318160ddd1461028457806322976e0d146102a357806323b872dd146102b957806330280a71146102d957600080fd5b806306fdde03146101dd578063095ea7b3146102085780631694505e1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105f0565b6040516101ff9190611ae5565b60405180910390f35b34801561021457600080fd5b50610228610223366004611b4b565b610682565b60405190151581526020016101ff565b34801561024457600080fd5b5061026c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b34801561029057600080fd5b50600a545b6040519081526020016101ff565b3480156102af57600080fd5b50610295600f5481565b3480156102c557600080fd5b506102286102d4366004611b77565b610699565b3480156102e557600080fd5b506102f96102f4366004611bcd565b610702565b005b34801561030757600080fd5b50600e5460405160ff90911681526020016101ff565b34801561032957600080fd5b50610228610338366004611b4b565b610760565b34801561034957600080fd5b506102f9610358366004611c02565b610796565b34801561036957600080fd5b506102f9610378366004611c1f565b6107e4565b34801561038957600080fd5b5060145461026c906001600160a01b031681565b3480156103a957600080fd5b5060145461022890600160a81b900460ff1681565b3480156103ca57600080fd5b506102286103d9366004611c02565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561040357600080fd5b50610295610412366004611c02565b61081b565b34801561042357600080fd5b506102f961087a565b34801561043857600080fd5b5061029560125481565b34801561044e57600080fd5b506000546001600160a01b031661026c565b34801561046c57600080fd5b506102f961047b366004611c02565b6108ee565b34801561048c57600080fd5b506101f261093a565b3480156104a157600080fd5b50601354610295565b3480156104b657600080fd5b506102286104c5366004611b4b565b610949565b3480156104d657600080fd5b5060025461026c906001600160a01b031681565b3480156104f657600080fd5b50610228610505366004611b4b565b610998565b34801561051657600080fd5b506102f9610525366004611c41565b6109a5565b34801561053657600080fd5b506102f9610545366004611c5a565b6109d4565b34801561055657600080fd5b50610295610565366004611c75565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506102f96105ab366004611c02565b610a56565b3480156105bc57600080fd5b506102f96105cb366004611c41565b610aa1565b3480156105dc57600080fd5b506102f96105eb366004611c02565b610ad0565b6060600c80546105ff90611cae565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611cae565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b5050505050905090565b600061068f338484610c85565b5060015b92915050565b60006106a6848484610da9565b6106f884336106f385604051806060016040528060288152602001611e80602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061104d565b610c85565b5060019392505050565b6000546001600160a01b031633146107355760405162461bcd60e51b815260040161072c90611ce8565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161068f9185906106f39086611087565b6000546001600160a01b031633146107c05760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461080e5760405162461bcd60e51b815260040161072c90611ce8565b601155600f819055601055565b6001600160a01b03811660009081526007602052604081205460ff161561085857506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610693906110e6565b6000546001600160a01b031633146108a45760405162461bcd60e51b815260040161072c90611ce8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109185760405162461bcd60e51b815260040161072c90611ce8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80546105ff90611cae565b600061068f33846106f385604051806060016040528060258152602001611ea8602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061104d565b600061068f338484610da9565b6000546001600160a01b031633146109cf5760405162461bcd60e51b815260040161072c90611ce8565b601355565b6000546001600160a01b031633146109fe5760405162461bcd60e51b815260040161072c90611ce8565b60148054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610a4b90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314610acb5760405162461bcd60e51b815260040161072c90611ce8565b601255565b6000546001600160a01b03163314610afa5760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b038116610b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611163565b9392505050565b600082600003610c1557506000610693565b6000610c218385611d33565b905082610c2e8583611d4a565b14610bfc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072c565b6001600160a01b038316610ce75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072c565b6001600160a01b038216610d485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072c565b6001600160a01b038216610e6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072c565b60008111610ed15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161072c565b6001600160a01b03831660009081526008602052604090205460ff16158015610f1357506001600160a01b03821660009081526008602052604090205460ff16155b15610f6257601254811115610f625760405162461bcd60e51b8152602060048201526015602482015274115e18d959591cc813585e08151e08105b5bdd5b9d605a1b604482015260640161072c565b6000610f6d3061081b565b60135460145491925082101590600160a01b900460ff16158015610f9a5750601454600160a81b900460ff165b8015610fb457506014546001600160a01b03868116911614155b15610fcd578015610fcd576013549150610fcd82611191565b6014546001600160a01b0390811690851603610fee57610fee601154600f55565b6001600160a01b03851660009081526006602052604090205460019060ff168061103057506001600160a01b03851660009081526006602052604090205460ff165b15611039575060005b611045868686846111f9565b505050505050565b600081848411156110715760405162461bcd60e51b815260040161072c9190611ae5565b50600061107e8486611d6c565b95945050505050565b6000806110948385611d7f565b905083811015610bfc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072c565b6000600b5482111561114d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161072c565b600061115761131b565b9050610bfc8382610bba565b600081836111845760405162461bcd60e51b815260040161072c9190611ae5565b50600061107e8486611d4a565b6014805460ff60a01b1916600160a01b1790556111ad8161133e565b60025460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156111e7573d6000803e3d6000fd5b50506014805460ff60a01b1916905550565b80611208576112086000600f55565b6001600160a01b03841660009081526007602052604090205460ff16801561124957506001600160a01b03831660009081526007602052604090205460ff16155b1561125e57611259848484611537565b61130a565b6001600160a01b03841660009081526007602052604090205460ff1615801561129f57506001600160a01b03831660009081526007602052604090205460ff165b156112af57611259848484611690565b6001600160a01b03841660009081526007602052604090205460ff1680156112ef57506001600160a01b03831660009081526007602052604090205460ff165b156112ff57611259848484611731565b61130a84848461179c565b611315601054600f55565b50505050565b60008060006113286117d8565b90925090506113378282610bba565b9250505090565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061137357611373611d92565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114159190611da8565b8160018151811061142857611428611d92565b60200260200101906001600160a01b031690816001600160a01b031681525050611473307f000000000000000000000000000000000000000000000000000000000000000084610c85565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906114c8908590600090869030904290600401611e09565b600060405180830381600087803b1580156114e257600080fd5b505af11580156114f6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161152b929190611e45565b60405180910390a15050565b6000806000806115468561195a565b6001600160a01b038b16600090815260046020526040902054939750919550935091506115739086611998565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546115a29085611998565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546115d19084611087565b6001600160a01b0387166000908152600360205260409020556115f3816119da565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163891815260200190565b60405180910390a380156116875760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b60008060008061169f8561195a565b6001600160a01b038b16600090815260036020526040902054939750919550935091506116cc9085611998565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546117029083611087565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546115d19084611087565b6000806000806117408561195a565b6001600160a01b038b166000908152600460205260409020549397509195509350915061176d9086611998565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546116cc9085611998565b6000806000806117ab8561195a565b6001600160a01b038b16600090815260036020526040902054939750919550935091506115a29085611998565b600b54600a546000918291825b60095481101561192a5782600360006009848154811061180757611807611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611872575081600460006009848154811061184b5761184b611d92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561188857600b54600a54945094505050509091565b6118ce60036000600984815481106118a2576118a2611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611998565b925061191660046000600984815481106118ea576118ea611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611998565b91508061192281611e66565b9150506117e5565b50600a54600b5461193a91610bba565b82101561195157600b54600a549350935050509091565b90939092509050565b60008060008060008061196c87611a63565b91509150600080611985898461198061131b565b611a8a565b909a909950939750919550919350505050565b6000610bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061104d565b60006119e461131b565b905060006119f28383610c03565b30600090815260036020526040902054909150611a0f9082611087565b3060009081526003602090815260408083209390935560079052205460ff1615611a5e5730600090815260046020526040902054611a4d9084611087565b306000908152600460205260409020555b505050565b6000806000611a7184611ac3565b90506000611a7f8583611998565b959194509092505050565b60008080611a988685610c03565b90506000611aa68686610c03565b90506000611ab48383611998565b92989297509195505050505050565b60006106936064611adf600f5485610c0390919063ffffffff16565b90610bba565b600060208083528351808285015260005b81811015611b1257858101830151858201604001528201611af6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b4857600080fd5b50565b60008060408385031215611b5e57600080fd5b8235611b6981611b33565b946020939093013593505050565b600080600060608486031215611b8c57600080fd5b8335611b9781611b33565b92506020840135611ba781611b33565b929592945050506040919091013590565b80358015158114611bc857600080fd5b919050565b60008060408385031215611be057600080fd5b8235611beb81611b33565b9150611bf960208401611bb8565b90509250929050565b600060208284031215611c1457600080fd5b8135610bfc81611b33565b60008060408385031215611c3257600080fd5b50508035926020909101359150565b600060208284031215611c5357600080fd5b5035919050565b600060208284031215611c6c57600080fd5b610bfc82611bb8565b60008060408385031215611c8857600080fd5b8235611c9381611b33565b91506020830135611ca381611b33565b809150509250929050565b600181811c90821680611cc257607f821691505b602082108103611ce257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761069357610693611d1d565b600082611d6757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561069357610693611d1d565b8082018082111561069357610693611d1d565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dba57600080fd5b8151610bfc81611b33565b600081518084526020808501945080840160005b83811015611dfe5781516001600160a01b031687529582019590820190600101611dd9565b509495945050505050565b85815284602082015260a060408201526000611e2860a0830186611dc5565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611e5e6040830184611dc5565b949350505050565b600060018201611e7857611e78611d1d565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201541c8940222f1478a0c73a9108c8969ea134d44f5b0273ae3b109223587115964736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c8063715018a6116100f7578063a5ece94111610095578063dd62ed3e11610064578063dd62ed3e1461054a578063ea2f0b3714610590578063ec28438a146105b0578063f2fde38b146105d057600080fd5b8063a5ece941146104ca578063a9059cbb146104ea578063aee50b1e1461050a578063c49b9a801461052a57600080fd5b8063906e9dd0116100d1578063906e9dd01461046057806395d89b4114610480578063a073d37f14610495578063a457c2d7146104aa57600080fd5b8063715018a6146104175780637d1db4a51461042c5780638da5cb5b1461044257600080fd5b8063313ce5671161016f57806349bd5a5e1161013e57806349bd5a5e1461037d5780634a74bb021461039d5780635342acb4146103be57806370a08231146103f757600080fd5b8063313ce567146102fb578063395093511461031d578063437823ec1461033d57806349ae99671461035d57600080fd5b806318160ddd116101ab57806318160ddd1461028457806322976e0d146102a357806323b872dd146102b957806330280a71146102d957600080fd5b806306fdde03146101dd578063095ea7b3146102085780631694505e1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105f0565b6040516101ff9190611ae5565b60405180910390f35b34801561021457600080fd5b50610228610223366004611b4b565b610682565b60405190151581526020016101ff565b34801561024457600080fd5b5061026c7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101ff565b34801561029057600080fd5b50600a545b6040519081526020016101ff565b3480156102af57600080fd5b50610295600f5481565b3480156102c557600080fd5b506102286102d4366004611b77565b610699565b3480156102e557600080fd5b506102f96102f4366004611bcd565b610702565b005b34801561030757600080fd5b50600e5460405160ff90911681526020016101ff565b34801561032957600080fd5b50610228610338366004611b4b565b610760565b34801561034957600080fd5b506102f9610358366004611c02565b610796565b34801561036957600080fd5b506102f9610378366004611c1f565b6107e4565b34801561038957600080fd5b5060145461026c906001600160a01b031681565b3480156103a957600080fd5b5060145461022890600160a81b900460ff1681565b3480156103ca57600080fd5b506102286103d9366004611c02565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561040357600080fd5b50610295610412366004611c02565b61081b565b34801561042357600080fd5b506102f961087a565b34801561043857600080fd5b5061029560125481565b34801561044e57600080fd5b506000546001600160a01b031661026c565b34801561046c57600080fd5b506102f961047b366004611c02565b6108ee565b34801561048c57600080fd5b506101f261093a565b3480156104a157600080fd5b50601354610295565b3480156104b657600080fd5b506102286104c5366004611b4b565b610949565b3480156104d657600080fd5b5060025461026c906001600160a01b031681565b3480156104f657600080fd5b50610228610505366004611b4b565b610998565b34801561051657600080fd5b506102f9610525366004611c41565b6109a5565b34801561053657600080fd5b506102f9610545366004611c5a565b6109d4565b34801561055657600080fd5b50610295610565366004611c75565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561059c57600080fd5b506102f96105ab366004611c02565b610a56565b3480156105bc57600080fd5b506102f96105cb366004611c41565b610aa1565b3480156105dc57600080fd5b506102f96105eb366004611c02565b610ad0565b6060600c80546105ff90611cae565b80601f016020809104026020016040519081016040528092919081815260200182805461062b90611cae565b80156106785780601f1061064d57610100808354040283529160200191610678565b820191906000526020600020905b81548152906001019060200180831161065b57829003601f168201915b5050505050905090565b600061068f338484610c85565b5060015b92915050565b60006106a6848484610da9565b6106f884336106f385604051806060016040528060288152602001611e80602891396001600160a01b038a166000908152600560209081526040808320338452909152902054919061104d565b610c85565b5060019392505050565b6000546001600160a01b031633146107355760405162461bcd60e51b815260040161072c90611ce8565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360008181526005602090815260408083206001600160a01b0387168452909152812054909161068f9185906106f39086611087565b6000546001600160a01b031633146107c05760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000546001600160a01b0316331461080e5760405162461bcd60e51b815260040161072c90611ce8565b601155600f819055601055565b6001600160a01b03811660009081526007602052604081205460ff161561085857506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610693906110e6565b6000546001600160a01b031633146108a45760405162461bcd60e51b815260040161072c90611ce8565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109185760405162461bcd60e51b815260040161072c90611ce8565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600d80546105ff90611cae565b600061068f33846106f385604051806060016040528060258152602001611ea8602591393360009081526005602090815260408083206001600160a01b038d168452909152902054919061104d565b600061068f338484610da9565b6000546001600160a01b031633146109cf5760405162461bcd60e51b815260040161072c90611ce8565b601355565b6000546001600160a01b031633146109fe5760405162461bcd60e51b815260040161072c90611ce8565b60148054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610a4b90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314610acb5760405162461bcd60e51b815260040161072c90611ce8565b601255565b6000546001600160a01b03163314610afa5760405162461bcd60e51b815260040161072c90611ce8565b6001600160a01b038116610b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161072c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610bfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611163565b9392505050565b600082600003610c1557506000610693565b6000610c218385611d33565b905082610c2e8583611d4a565b14610bfc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161072c565b6001600160a01b038316610ce75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161072c565b6001600160a01b038216610d485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161072c565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161072c565b6001600160a01b038216610e6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161072c565b60008111610ed15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161072c565b6001600160a01b03831660009081526008602052604090205460ff16158015610f1357506001600160a01b03821660009081526008602052604090205460ff16155b15610f6257601254811115610f625760405162461bcd60e51b8152602060048201526015602482015274115e18d959591cc813585e08151e08105b5bdd5b9d605a1b604482015260640161072c565b6000610f6d3061081b565b60135460145491925082101590600160a01b900460ff16158015610f9a5750601454600160a81b900460ff165b8015610fb457506014546001600160a01b03868116911614155b15610fcd578015610fcd576013549150610fcd82611191565b6014546001600160a01b0390811690851603610fee57610fee601154600f55565b6001600160a01b03851660009081526006602052604090205460019060ff168061103057506001600160a01b03851660009081526006602052604090205460ff165b15611039575060005b611045868686846111f9565b505050505050565b600081848411156110715760405162461bcd60e51b815260040161072c9190611ae5565b50600061107e8486611d6c565b95945050505050565b6000806110948385611d7f565b905083811015610bfc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161072c565b6000600b5482111561114d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161072c565b600061115761131b565b9050610bfc8382610bba565b600081836111845760405162461bcd60e51b815260040161072c9190611ae5565b50600061107e8486611d4a565b6014805460ff60a01b1916600160a01b1790556111ad8161133e565b60025460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156111e7573d6000803e3d6000fd5b50506014805460ff60a01b1916905550565b80611208576112086000600f55565b6001600160a01b03841660009081526007602052604090205460ff16801561124957506001600160a01b03831660009081526007602052604090205460ff16155b1561125e57611259848484611537565b61130a565b6001600160a01b03841660009081526007602052604090205460ff1615801561129f57506001600160a01b03831660009081526007602052604090205460ff165b156112af57611259848484611690565b6001600160a01b03841660009081526007602052604090205460ff1680156112ef57506001600160a01b03831660009081526007602052604090205460ff165b156112ff57611259848484611731565b61130a84848461179c565b611315601054600f55565b50505050565b60008060006113286117d8565b90925090506113378282610bba565b9250505090565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061137357611373611d92565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114159190611da8565b8160018151811061142857611428611d92565b60200260200101906001600160a01b031690816001600160a01b031681525050611473307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610c85565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906114c8908590600090869030904290600401611e09565b600060405180830381600087803b1580156114e257600080fd5b505af11580156114f6573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161152b929190611e45565b60405180910390a15050565b6000806000806115468561195a565b6001600160a01b038b16600090815260046020526040902054939750919550935091506115739086611998565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546115a29085611998565b6001600160a01b0380891660009081526003602052604080822093909355908816815220546115d19084611087565b6001600160a01b0387166000908152600360205260409020556115f3816119da565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161163891815260200190565b60405180910390a380156116875760405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505050505050565b60008060008061169f8561195a565b6001600160a01b038b16600090815260036020526040902054939750919550935091506116cc9085611998565b6001600160a01b038089166000908152600360209081526040808320949094559189168152600490915220546117029083611087565b6001600160a01b0387166000908152600460209081526040808320939093556003905220546115d19084611087565b6000806000806117408561195a565b6001600160a01b038b166000908152600460205260409020549397509195509350915061176d9086611998565b6001600160a01b0388166000908152600460209081526040808320939093556003905220546116cc9085611998565b6000806000806117ab8561195a565b6001600160a01b038b16600090815260036020526040902054939750919550935091506115a29085611998565b600b54600a546000918291825b60095481101561192a5782600360006009848154811061180757611807611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611872575081600460006009848154811061184b5761184b611d92565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561188857600b54600a54945094505050509091565b6118ce60036000600984815481106118a2576118a2611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611998565b925061191660046000600984815481106118ea576118ea611d92565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611998565b91508061192281611e66565b9150506117e5565b50600a54600b5461193a91610bba565b82101561195157600b54600a549350935050509091565b90939092509050565b60008060008060008061196c87611a63565b91509150600080611985898461198061131b565b611a8a565b909a909950939750919550919350505050565b6000610bfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061104d565b60006119e461131b565b905060006119f28383610c03565b30600090815260036020526040902054909150611a0f9082611087565b3060009081526003602090815260408083209390935560079052205460ff1615611a5e5730600090815260046020526040902054611a4d9084611087565b306000908152600460205260409020555b505050565b6000806000611a7184611ac3565b90506000611a7f8583611998565b959194509092505050565b60008080611a988685610c03565b90506000611aa68686610c03565b90506000611ab48383611998565b92989297509195505050505050565b60006106936064611adf600f5485610c0390919063ffffffff16565b90610bba565b600060208083528351808285015260005b81811015611b1257858101830151858201604001528201611af6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b4857600080fd5b50565b60008060408385031215611b5e57600080fd5b8235611b6981611b33565b946020939093013593505050565b600080600060608486031215611b8c57600080fd5b8335611b9781611b33565b92506020840135611ba781611b33565b929592945050506040919091013590565b80358015158114611bc857600080fd5b919050565b60008060408385031215611be057600080fd5b8235611beb81611b33565b9150611bf960208401611bb8565b90509250929050565b600060208284031215611c1457600080fd5b8135610bfc81611b33565b60008060408385031215611c3257600080fd5b50508035926020909101359150565b600060208284031215611c5357600080fd5b5035919050565b600060208284031215611c6c57600080fd5b610bfc82611bb8565b60008060408385031215611c8857600080fd5b8235611c9381611b33565b91506020830135611ca381611b33565b809150509250929050565b600181811c90821680611cc257607f821691505b602082108103611ce257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761069357610693611d1d565b600082611d6757634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561069357610693611d1d565b8082018082111561069357610693611d1d565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611dba57600080fd5b8151610bfc81611b33565b600081518084526020808501945080840160005b83811015611dfe5781516001600160a01b031687529582019590820190600101611dd9565b509495945050505050565b85815284602082015260a060408201526000611e2860a0830186611dc5565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611e5e6040830184611dc5565b949350505050565b600060018201611e7857611e78611d1d565b506001019056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201541c8940222f1478a0c73a9108c8969ea134d44f5b0273ae3b109223587115964736f6c63430008110033
Deployed Bytecode Sourcemap
4913:14597:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7464:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8376:161;;;;;;;;;;-1:-1:-1;8376:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8376:161:0;1023:187:1;6056:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;6056:51:0;1215:229:1;7741:95:0;;;;;;;;;;-1:-1:-1;7821:7:0;;7741:95;;;1595:25:1;;;1583:2;1568:18;7741:95:0;1449:177:1;5777:33:0;;;;;;;;;;;;;;;;8545:313;;;;;;;;;;-1:-1:-1;8545:313:0;;;;;:::i;:::-;;:::i;15813:139::-;;;;;;;;;;-1:-1:-1;15813:139:0;;;;;:::i;:::-;;:::i;:::-;;7650:83;;;;;;;;;;-1:-1:-1;7716:9:0;;7650:83;;7716:9;;;;2719:36:1;;2707:2;2692:18;7650:83:0;2577:184:1;8866:218:0;;;;;;;;;;-1:-1:-1;8866:218:0;;;;;:::i;:::-;;:::i;9925:113::-;;;;;;;;;;-1:-1:-1;9925:113:0;;;;;:::i;:::-;;:::i;18576:242::-;;;;;;;;;;-1:-1:-1;18576:242:0;;;;;:::i;:::-;;:::i;6114:28::-;;;;;;;;;;-1:-1:-1;6114:28:0;;;;-1:-1:-1;;;;;6114:28:0;;;6183:41;;;;;;;;;;-1:-1:-1;6183:41:0;;;;-1:-1:-1;;;6183:41:0;;;;;;9788:125;;;;;;;;;;-1:-1:-1;9788:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;9878:27:0;9854:4;9878:27;;;:18;:27;;;;;;;;;9788:125;7844:198;;;;;;;;;;-1:-1:-1;7844:198:0;;;;;:::i;:::-;;:::i;3631:154::-;;;;;;;;;;;;;:::i;5922:53::-;;;;;;;;;;;;;;;;3394:85;;;;;;;;;;-1:-1:-1;3432:7:0;3465:6;-1:-1:-1;;;;;3465:6:0;3394:85;;19130:147;;;;;;;;;;-1:-1:-1;19130:147:0;;;;;:::i;:::-;;:::i;7555:87::-;;;;;;;;;;;;;:::i;9381:127::-;;;;;;;;;;-1:-1:-1;9476:24:0;;9381:127;;9092:275;;;;;;;;;;-1:-1:-1;9092:275:0;;;;;:::i;:::-;;:::i;5000:93::-;;;;;;;;;;-1:-1:-1;5000:93:0;;;;-1:-1:-1;;;;;5000:93:0;;;8050:167;;;;;;;;;;-1:-1:-1;8050:167:0;;;;;:::i;:::-;;:::i;18947:169::-;;;;;;;;;;-1:-1:-1;18947:169:0;;;;;:::i;:::-;;:::i;19289:177::-;;;;;;;;;;-1:-1:-1;19289:177:0;;;;;:::i;:::-;;:::i;8225:143::-;;;;;;;;;;-1:-1:-1;8225:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8333:18:0;;;8306:7;8333:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8225:143;10050:112;;;;;;;;;;-1:-1:-1;10050:112:0;;;;;:::i;:::-;;:::i;18826:107::-;;;;;;;;;;-1:-1:-1;18826:107:0;;;;;:::i;:::-;;:::i;3793:244::-;;;;;;;;;;-1:-1:-1;3793:244:0;;;;;:::i;:::-;;:::i;7464:83::-;7501:13;7534:5;7527:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7464:83;:::o;8376:161::-;8451:4;8468:39;531:10;8491:7;8500:6;8468:8;:39::i;:::-;-1:-1:-1;8525:4:0;8376:161;;;;;:::o;8545:313::-;8643:4;8660:36;8670:6;8678:9;8689:6;8660:9;:36::i;:::-;8707:121;8716:6;531:10;8738:89;8776:6;8738:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8738:19:0;;;;;;:11;:19;;;;;;;;531:10;8738:33;;;;;;;;;;:37;:89::i;:::-;8707:8;:121::i;:::-;-1:-1:-1;8846:4:0;8545:313;;;;;:::o;15813:139::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;15906:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:38;;-1:-1:-1;;15906:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15813:139::o;8866:218::-;531:10;8954:4;9003:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9003:34:0;;;;;;;;;;8954:4;;8971:83;;8994:7;;9003:50;;9042:10;9003:38;:50::i;9925:113::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9996:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;9996:34:0::1;10026:4;9996:34;::::0;;9925:113::o;18576:242::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;18682:17:::1;:36:::0;18729:13:::1;:31:::0;;;18771:21:::1;:39:::0;18576:242::o;7844:198::-;-1:-1:-1;;;;;7934:20:0;;7910:7;7934:20;;;:11;:20;;;;;;;;7930:49;;;-1:-1:-1;;;;;;7963:16:0;;;;;:7;:16;;;;;;;7844:198::o;7930:49::-;-1:-1:-1;;;;;8017:16:0;;;;;;:7;:16;;;;;;7997:37;;:19;:37::i;3631:154::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;3744:1:::1;3728:6:::0;;3707:40:::1;::::0;-1:-1:-1;;;;;3728:6:0;;::::1;::::0;3707:40:::1;::::0;3744:1;;3707:40:::1;3775:1;3758:19:::0;;-1:-1:-1;;;;;;3758:19:0::1;::::0;;3631:154::o;19130:147::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;19224:16:::1;:45:::0;;-1:-1:-1;;;;;;19224:45:0::1;-1:-1:-1::0;;;;;19224:45:0;;;::::1;::::0;;;::::1;::::0;;19130:147::o;7555:87::-;7594:13;7627:7;7620:14;;;;;:::i;9092:275::-;9185:4;9208:129;531:10;9231:7;9240:96;9279:15;9240:96;;;;;;;;;;;;;;;;;531:10;9240:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9240:34:0;;;;;;;;;;;;:38;:96::i;8050:167::-;8128:4;8145:42;531:10;8169:9;8180:6;8145:9;:42::i;18947:169::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;19056:24:::1;:52:::0;18947:169::o;19289:177::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;19372:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;19372:32:0::1;-1:-1:-1::0;;;;19372:32:0;;::::1;;::::0;;19420:38:::1;::::0;::::1;::::0;::::1;::::0;19396:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;19420:38:0::1;;;;;;;;19289:177:::0;:::o;10050:112::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10119:27:0::1;10149:5;10119:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10119:35:0::1;::::0;;10050:112::o;18826:107::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;18904:12:::1;:21:::0;18826:107::o;3793:244::-;3540:6;;-1:-1:-1;;;;;3540:6:0;531:10;3540:22;3532:67;;;;-1:-1:-1;;;3532:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3882:22:0;::::1;3874:73;;;::::0;-1:-1:-1;;;3874:73:0;;5414:2:1;3874:73:0::1;::::0;::::1;5396:21:1::0;5453:2;5433:18;;;5426:30;5492:34;5472:18;;;5465:62;-1:-1:-1;;;5543:18:1;;;5536:36;5589:19;;3874:73:0::1;5212:402:1::0;3874:73:0::1;3984:6;::::0;;3963:38:::1;::::0;-1:-1:-1;;;;;3963:38:0;;::::1;::::0;3984:6;::::1;::::0;3963:38:::1;::::0;::::1;4012:6;:17:::0;;-1:-1:-1;;;;;;4012:17:0::1;-1:-1:-1::0;;;;;4012:17:0;;;::::1;::::0;;;::::1;::::0;;3793:244::o;2292:132::-;2350:7;2377:39;2381:1;2384;2377:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2370:46;2292:132;-1:-1:-1;;;2292:132:0:o;2036:246::-;2094:7;2118:1;2123;2118:6;2114:47;;-1:-1:-1;2148:1:0;2141:8;;2114:47;2171:9;2183:5;2187:1;2183;:5;:::i;:::-;2171:17;-1:-1:-1;2216:1:0;2207:5;2211:1;2171:17;2207:5;:::i;:::-;:10;2199:56;;;;-1:-1:-1;;;2199:56:0;;6348:2:1;2199:56:0;;;6330:21:1;6387:2;6367:18;;;6360:30;6426:34;6406:18;;;6399:62;-1:-1:-1;;;6477:18:1;;;6470:31;6518:19;;2199:56:0;6146:397:1;10172:335:0;-1:-1:-1;;;;;10265:19:0;;10257:68;;;;-1:-1:-1;;;10257:68:0;;6750:2:1;10257:68:0;;;6732:21:1;6789:2;6769:18;;;6762:30;6828:34;6808:18;;;6801:62;-1:-1:-1;;;6879:18:1;;;6872:34;6923:19;;10257:68:0;6548:400:1;10257:68:0;-1:-1:-1;;;;;10344:21:0;;10336:68;;;;-1:-1:-1;;;10336:68:0;;7155:2:1;10336:68:0;;;7137:21:1;7194:2;7174:18;;;7167:30;7233:34;7213:18;;;7206:62;-1:-1:-1;;;7284:18:1;;;7277:32;7326:19;;10336:68:0;6953:398:1;10336:68:0;-1:-1:-1;;;;;10415:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10467:32;;1595:25:1;;;10467:32:0;;1568:18:1;10467:32:0;;;;;;;10172:335;;;:::o;10517:1185::-;-1:-1:-1;;;;;10611:18:0;;10603:68;;;;-1:-1:-1;;;10603:68:0;;7558:2:1;10603:68:0;;;7540:21:1;7597:2;7577:18;;;7570:30;7636:34;7616:18;;;7609:62;-1:-1:-1;;;7687:18:1;;;7680:35;7732:19;;10603:68:0;7356:401:1;10603:68:0;-1:-1:-1;;;;;10690:16:0;;10682:64;;;;-1:-1:-1;;;10682:64:0;;7964:2:1;10682:64:0;;;7946:21:1;8003:2;7983:18;;;7976:30;8042:34;8022:18;;;8015:62;-1:-1:-1;;;8093:18:1;;;8086:33;8136:19;;10682:64:0;7762:399:1;10682:64:0;10774:1;10765:6;:10;10757:64;;;;-1:-1:-1;;;10757:64:0;;8368:2:1;10757:64:0;;;8350:21:1;8407:2;8387:18;;;8380:30;8446:34;8426:18;;;8419:62;-1:-1:-1;;;8497:18:1;;;8490:39;8546:19;;10757:64:0;8166:405:1;10757:64:0;-1:-1:-1;;;;;10838:26:0;;;;;;:20;:26;;;;;;;;10837:27;:56;;;;-1:-1:-1;;;;;;10869:24:0;;;;;;:20;:24;;;;;;;;10868:25;10837:56;10834:154;;;10938:12;;10928:6;:22;;10920:56;;;;-1:-1:-1;;;10920:56:0;;8778:2:1;10920:56:0;;;8760:21:1;8817:2;8797:18;;;8790:30;-1:-1:-1;;;8836:18:1;;;8829:51;8897:18;;10920:56:0;8576:345:1;10920:56:0;11000:28;11031:24;11049:4;11031:9;:24::i;:::-;11121;;11171:16;;11000:55;;-1:-1:-1;11097:48:0;;;;-1:-1:-1;;;11171:16:0;;;;11170:17;:42;;;;-1:-1:-1;11191:21:0;;-1:-1:-1;;;11191:21:0;;;;11170:42;:67;;;;-1:-1:-1;11224:13:0;;-1:-1:-1;;;;;11216:21:0;;;11224:13;;11216:21;;11170:67;11166:279;;;11258:23;11254:180;;;11339:24;;11316:47;;11382:36;11397:20;11382:14;:36::i;:::-;11464:13;;-1:-1:-1;;;;;11464:13:0;;;11460:17;;;;11457:40;;11482:12;18537:17;;18521:13;:33;18474:88;11482:12;-1:-1:-1;;;;;11540:24:0;;11507:12;11540:24;;;:18;:24;;;;;;11522:4;;11540:24;;;:50;;-1:-1:-1;;;;;;11568:22:0;;;;;;:18;:22;;;;;;;;11540:50;11537:106;;;-1:-1:-1;11626:5:0;11537:106;11653:41;11668:4;11674:2;11678:6;11686:7;11653:14;:41::i;:::-;10592:1110;;;10517:1185;;;:::o;1836:192::-;1922:7;1958:12;1950:6;;;;1942:29;;;;-1:-1:-1;;;1942:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1982:9:0;1994:5;1998:1;1994;:5;:::i;:::-;1982:17;1836:192;-1:-1:-1;;;;;1836:192:0:o;1505:179::-;1563:7;;1595:5;1599:1;1595;:5;:::i;:::-;1583:17;;1624:1;1619;:6;;1611:46;;;;-1:-1:-1;;;1611:46:0;;9391:2:1;1611:46:0;;;9373:21:1;9430:2;9410:18;;;9403:30;9469:29;9449:18;;;9442:57;9516:18;;1611:46:0;9189:351:1;9518:260:0;9585:7;9630;;9619;:18;;9611:73;;;;-1:-1:-1;;;9611:73:0;;9747:2:1;9611:73:0;;;9729:21:1;9786:2;9766:18;;;9759:30;9825:34;9805:18;;;9798:62;-1:-1:-1;;;9876:18:1;;;9869:40;9926:19;;9611:73:0;9545:406:1;9611:73:0;9695:19;9718:10;:8;:10::i;:::-;9695:33;-1:-1:-1;9746:24:0;:7;9695:33;9746:11;:24::i;2432:278::-;2518:7;2553:12;2546:5;2538:28;;;;-1:-1:-1;;;2538:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2577:9:0;2589:5;2593:1;2589;:5;:::i;11712:239::-;6653:16;:23;;-1:-1:-1;;;;6653:23:0;-1:-1:-1;;;6653:23:0;;;11803:38:::1;11820:20:::0;11803:16:::1;:38::i;:::-;11906:16;::::0;:37:::1;::::0;11874:21:::1;::::0;-1:-1:-1;;;;;11906:16:0::1;::::0;:37;::::1;;;::::0;11874:21;;11853:18:::1;11906:37:::0;11853:18;11906:37;11874:21;11906:16;:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6699:16:0;:24;;-1:-1:-1;;;;6699:24:0;;;-1:-1:-1;11712:239:0:o;12635:732::-;12755:7;12751:32;;12766:14;18350:1;18334:13;:17;18278:81;12766:14;-1:-1:-1;;;;;12799:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;12823:22:0;;;;;;:11;:22;;;;;;;;12822:23;12799:46;12795:536;;;12872:48;12894:6;12902:9;12913:6;12872:21;:48::i;:::-;12795:536;;;-1:-1:-1;;;;;12953:19:0;;;;;;:11;:19;;;;;;;;12952:20;:46;;;;-1:-1:-1;;;;;;12976:22:0;;;;;;:11;:22;;;;;;;;12952:46;12948:383;;;13025:46;13045:6;13053:9;13064:6;13025:19;:46::i;12948:383::-;-1:-1:-1;;;;;13102:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;13125:22:0;;;;;;:11;:22;;;;;;;;13102:45;13099:232;;;13174:48;13196:6;13204:9;13215:6;13174:21;:48::i;13099:232::-;13275:44;13293:6;13301:9;13312:6;13275:17;:44::i;:::-;13344:15;18437:21;;18421:13;:37;18371:95;13344:15;12635:732;;;;:::o;16955:169::-;16996:7;17023:15;17040;17059:19;:17;:19::i;:::-;17022:56;;-1:-1:-1;17022:56:0;-1:-1:-1;17096:20:0;17022:56;;17096:11;:20::i;:::-;17089:27;;;;16955:169;:::o;11963:658::-;12119:16;;;12133:1;12119:16;;;;;;;;12095:21;;12119:16;;;;;;;;;;-1:-1:-1;12119:16:0;12095:40;;12164:4;12146;12151:1;12146:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;12146:23:0;;;-1:-1:-1;;;;;12146:23:0;;;;;12190:15;-1:-1:-1;;;;;12190:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12180:4;12185:1;12180:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;12180:32:0;;;-1:-1:-1;;;;;12180:32:0;;;;;12223:62;12240:4;12255:15;12273:11;12223:8;:62::i;:::-;12322:240;;-1:-1:-1;;;12322:240:0;;-1:-1:-1;;;;;12322:15:0;:66;;;;:240;;12403:11;;12429:1;;12473:4;;12500;;12536:15;;12322:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:35;12595:11;12608:4;12578:35;;;;;;;:::i;:::-;;;;;;;;12024:597;11963:658;:::o;14533:593::-;14642:15;14659:23;14684;14709:18;14731:19;14742:7;14731:10;:19::i;:::-;-1:-1:-1;;;;;14779:15:0;;;;;;:7;:15;;;;;;14641:109;;-1:-1:-1;14641:109:0;;-1:-1:-1;14641:109:0;-1:-1:-1;14641:109:0;-1:-1:-1;14779:28:0;;14799:7;14779:19;:28::i;:::-;-1:-1:-1;;;;;14761:15:0;;;;;;:7;:15;;;;;;;;:46;;;;14836:7;:15;;;;:28;;14856:7;14836:19;:28::i;:::-;-1:-1:-1;;;;;14818:15:0;;;;;;;:7;:15;;;;;;:46;;;;14896:18;;;;;;;:39;;14919:15;14896:22;:39::i;:::-;-1:-1:-1;;;;;14875:18:0;;;;;;:7;:18;;;;;:60;14949:29;14967:10;14949:17;:29::i;:::-;15011:9;-1:-1:-1;;;;;14994:44:0;15003:6;-1:-1:-1;;;;;14994:44:0;;15022:15;14994:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;14994:44:0;;;;;;;;15052:12;;15049:70;;15073:43;;1595:25:1;;;15098:4:0;;-1:-1:-1;;;;;15073:43:0;;;;;1583:2:1;1568:18;15073:43:0;;;;;;;15049:70;14630:496;;;;14533:593;;;:::o;13912:613::-;14019:15;14036:23;14061;14086:18;14108:19;14119:7;14108:10;:19::i;:::-;-1:-1:-1;;;;;14156:15:0;;;;;;:7;:15;;;;;;14018:109;;-1:-1:-1;14018:109:0;;-1:-1:-1;14018:109:0;-1:-1:-1;14018:109:0;-1:-1:-1;14156:28:0;;14018:109;14156:19;:28::i;:::-;-1:-1:-1;;;;;14138:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;14216:18;;;;;:7;:18;;;;;:39;;14239:15;14216:22;:39::i;:::-;-1:-1:-1;;;;;14195:18:0;;;;;;:7;:18;;;;;;;;:60;;;;14287:7;:18;;;;:39;;14310:15;14287:22;:39::i;15134:669::-;15243:15;15260:23;15285;15310:18;15332:19;15343:7;15332:10;:19::i;:::-;-1:-1:-1;;;;;15380:15:0;;;;;;:7;:15;;;;;;15242:109;;-1:-1:-1;15242:109:0;;-1:-1:-1;15242:109:0;-1:-1:-1;15242:109:0;-1:-1:-1;15380:28:0;;15400:7;15380:19;:28::i;:::-;-1:-1:-1;;;;;15362:15:0;;;;;;:7;:15;;;;;;;;:46;;;;15437:7;:15;;;;:28;;15457:7;15437:19;:28::i;13375:529::-;13480:15;13497:23;13522;13547:18;13569:19;13580:7;13569:10;:19::i;:::-;-1:-1:-1;;;;;13617:15:0;;;;;;:7;:15;;;;;;13479:109;;-1:-1:-1;13479:109:0;;-1:-1:-1;13479:109:0;-1:-1:-1;13479:109:0;-1:-1:-1;13617:28:0;;13479:109;13617:19;:28::i;17132:567::-;17235:7;;17271;;17182;;;;;17295:289;17319:9;:16;17315:20;;17295:289;;;17385:7;17361;:21;17369:9;17379:1;17369:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17369:12:0;17361:21;;;;;;;;;;;;;:31;;:66;;;17420:7;17396;:21;17404:9;17414:1;17404:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17404:12:0;17396:21;;;;;;;;;;;;;:31;17361:66;17357:97;;;17437:7;;17446;;17429:25;;;;;;;17132:567;;:::o;17357:97::-;17479:34;17491:7;:21;17499:9;17509:1;17499:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17499:12:0;17491:21;;;;;;;;;;;;;17479:7;;:11;:34::i;:::-;17469:44;;17538:34;17550:7;:21;17558:9;17568:1;17558:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17558:12:0;17550:21;;;;;;;;;;;;;17538:7;;:11;:34::i;:::-;17528:44;-1:-1:-1;17337:3:0;;;;:::i;:::-;;;;17295:289;;;-1:-1:-1;17620:7:0;;17608;;:20;;:11;:20::i;:::-;17598:7;:30;17594:61;;;17638:7;;17647;;17630:25;;;;;;17132:567;;:::o;17594:61::-;17674:7;;17683;;-1:-1:-1;17132:567:0;-1:-1:-1;17132:567:0:o;15962:361::-;16021:7;16030;16039;16048;16075:23;16100:18;16122:20;16134:7;16122:11;:20::i;:::-;16074:68;;;;16154:15;16171:23;16198:44;16210:7;16219:10;16231;:8;:10::i;:::-;16198:11;:44::i;:::-;16153:89;;;;-1:-1:-1;16287:15:0;;-1:-1:-1;16304:10:0;;-1:-1:-1;15962:361:0;;-1:-1:-1;;;;15962:361:0:o;1692:136::-;1750:7;1777:43;1781:1;1784;1777:43;;;;;;;;;;;;;;;;;:3;:43::i;17713:391::-;17785:19;17808:10;:8;:10::i;:::-;17785:33;-1:-1:-1;17829:18:0;17850:27;:10;17785:33;17850:14;:27::i;:::-;17929:4;17913:22;;;;:7;:22;;;;;;17829:48;;-1:-1:-1;17913:38:0;;17829:48;17913:26;:38::i;:::-;17904:4;17888:22;;;;:7;:22;;;;;;;;:63;;;;17965:11;:26;;;;;;17962:121;;;18049:4;18033:22;;;;:7;:22;;;;;;:38;;18060:10;18033:26;:38::i;:::-;18024:4;18008:22;;;;:7;:22;;;;;:63;17962:121;17774:330;;17713:391;:::o;16331:259::-;16391:7;16400;16426:18;16447:28;16467:7;16447:19;:28::i;:::-;16426:49;-1:-1:-1;16486:23:0;16512;:7;16426:49;16512:11;:23::i;:::-;16486:49;16571:10;;-1:-1:-1;16331:259:0;;-1:-1:-1;;;16331:259:0:o;16598:349::-;16699:7;;;16752:24;:7;16764:11;16752;:24::i;:::-;16734:42;-1:-1:-1;16787:18:0;16808:27;:10;16823:11;16808:14;:27::i;:::-;16787:48;-1:-1:-1;16846:23:0;16872;:7;16787:48;16872:11;:23::i;:::-;16914:7;;;;-1:-1:-1;16598:349:0;;-1:-1:-1;;;;;;16598:349:0:o;18122:144::-;18190:7;18223:35;18254:3;18223:26;18235:13;;18223:7;:11;;:26;;;;:::i;:::-;:30;;:35::i;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;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2092:160::-;2157:20;;2213:13;;2206:21;2196:32;;2186:60;;2242:1;2239;2232:12;2186:60;2092:160;;;:::o;2257:315::-;2322:6;2330;2383:2;2371:9;2362:7;2358:23;2354:32;2351:52;;;2399:1;2396;2389:12;2351:52;2438:9;2425:23;2457:31;2482:5;2457:31;:::i;:::-;2507:5;-1:-1:-1;2531:35:1;2562:2;2547:18;;2531:35;:::i;:::-;2521:45;;2257:315;;;;;:::o;2766:247::-;2825:6;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2933:9;2920:23;2952:31;2977:5;2952:31;:::i;3018:248::-;3086:6;3094;3147:2;3135:9;3126:7;3122:23;3118:32;3115:52;;;3163:1;3160;3153:12;3115:52;-1:-1:-1;;3186:23:1;;;3256:2;3241:18;;;3228:32;;-1:-1:-1;3018:248:1:o;3703:180::-;3762:6;3815:2;3803:9;3794:7;3790:23;3786:32;3783:52;;;3831:1;3828;3821:12;3783:52;-1:-1:-1;3854:23:1;;3703:180;-1:-1:-1;3703:180:1:o;3888:::-;3944:6;3997:2;3985:9;3976:7;3972:23;3968:32;3965:52;;;4013:1;4010;4003:12;3965:52;4036:26;4052:9;4036:26;:::i;4073:388::-;4141:6;4149;4202:2;4190:9;4181:7;4177:23;4173:32;4170:52;;;4218:1;4215;4208:12;4170:52;4257:9;4244:23;4276:31;4301:5;4276:31;:::i;:::-;4326:5;-1:-1:-1;4383:2:1;4368:18;;4355:32;4396:33;4355:32;4396:33;:::i;:::-;4448:7;4438:17;;;4073:388;;;;;:::o;4466:380::-;4545:1;4541:12;;;;4588;;;4609:61;;4663:4;4655:6;4651:17;4641:27;;4609:61;4716:2;4708:6;4705:14;4685:18;4682:38;4679:161;;4762:10;4757:3;4753:20;4750:1;4743:31;4797:4;4794:1;4787:15;4825:4;4822:1;4815:15;4679:161;;4466:380;;;:::o;4851:356::-;5053:2;5035:21;;;5072:18;;;5065:30;5131:34;5126:2;5111:18;;5104:62;5198:2;5183:18;;4851:356::o;5619:127::-;5680:10;5675:3;5671:20;5668:1;5661:31;5711:4;5708:1;5701:15;5735:4;5732:1;5725:15;5751:168;5824:9;;;5855;;5872:15;;;5866:22;;5852:37;5842:71;;5893:18;;:::i;5924:217::-;5964:1;5990;5980:132;;6034:10;6029:3;6025:20;6022:1;6015:31;6069:4;6066:1;6059:15;6097:4;6094:1;6087:15;5980:132;-1:-1:-1;6126:9:1;;5924:217::o;8926:128::-;8993:9;;;9014:11;;;9011:37;;;9028:18;;:::i;9059:125::-;9124:9;;;9145:10;;;9142:36;;;9158:18;;:::i;10088:127::-;10149:10;10144:3;10140:20;10137:1;10130:31;10180:4;10177:1;10170:15;10204:4;10201:1;10194:15;10220:251;10290:6;10343:2;10331:9;10322:7;10318:23;10314:32;10311:52;;;10359:1;10356;10349:12;10311:52;10391:9;10385:16;10410:31;10435:5;10410:31;:::i;10476:461::-;10529:3;10567:5;10561:12;10594:6;10589:3;10582:19;10620:4;10649:2;10644:3;10640:12;10633:19;;10686:2;10679:5;10675:14;10707:1;10717:195;10731:6;10728:1;10725:13;10717:195;;;10796:13;;-1:-1:-1;;;;;10792:39:1;10780:52;;10852:12;;;;10887:15;;;;10828:1;10746:9;10717:195;;;-1:-1:-1;10928:3:1;;10476:461;-1:-1:-1;;;;;10476:461:1:o;10942:582::-;11241:6;11230:9;11223:25;11284:6;11279:2;11268:9;11264:18;11257:34;11327:3;11322:2;11311:9;11307:18;11300:31;11204:4;11348:57;11400:3;11389:9;11385:19;11377:6;11348:57;:::i;:::-;-1:-1:-1;;;;;11441:32:1;;;;11436:2;11421:18;;11414:60;-1:-1:-1;11505:3:1;11490:19;11483:35;11340:65;10942:582;-1:-1:-1;;;10942:582:1:o;11529:332::-;11736:6;11725:9;11718:25;11779:2;11774;11763:9;11759:18;11752:30;11699:4;11799:56;11851:2;11840:9;11836:18;11828:6;11799:56;:::i;:::-;11791:64;11529:332;-1:-1:-1;;;;11529:332:1:o;11866:135::-;11905:3;11926:17;;;11923:43;;11946:18;;:::i;:::-;-1:-1:-1;11993:1:1;11982:13;;11866:135::o
Swarm Source
ipfs://1541c8940222f1478a0c73a9108c8969ea134d44f5b0273ae3b1092235871159
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.