ERC-20
Overview
Max Total Supply
1,000,000,000 ERC20 ***
Holders
31
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
15,000,000 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
EarlyBirdAIERC20
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-25 */ /** --[[ ### ## ## --]] --[[ ####### ## ###### ## ## ## ###### --]] --[[ ## ## ## ## ## ## ## --]] --[[ ## ###### ## ### ## ## ## ## ## #### ## ### ###### #### ## --]] --[[ ##### ## ## ### ## ## ## ###### ## ### ## ## ## # ## --]] --[[ ## ## ## ## ## ## ## ## ## ## ## ## ## ###### ## --]] --[[ ## ## ### ## ## ## ## ## ## ## ## ## ## ## # ## --]] --[[ ####### ### ## ## #### ##### ###### ###### ## ###### ### ## ###### --]] --[[ ## --]] --[[ #### --]]*/ /** EarlyBird AI - squawk! squawk! AI algorithms to analyze cryptocurrency market trends and data from various sources, including blockchains, forums, and project. https://t.me/EarlyBirdAI https://twitter.com/EarlyBirdAIpha http://earlybirdai.tech/ */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.22; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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 ); } 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; } } 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; return c; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract EarlyBirdAIERC20 is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = unicode"EarlyBirdAI"; string private constant _symbol = unicode"EBAi"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 25; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 35; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0x9026111a022653D13f0D9290E605eAb7c054a9d6); address payable private _marketingAddress = payable(0x9026111a022653D13f0D9290E605eAb7c054a9d6); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen = false; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 30000000 * 10**9; uint256 public _swapTokensAtAmount = 15000000 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);// uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { 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 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 taxZero() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } 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 (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled"); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); if(to != uniswapV2Pair) { require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) { takeFee = false; } else { //Set Fee for Buys if(from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _marketingAddress.transfer(amount); } function squawkOpen(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function areBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unBots(address notbot) public onlyOwner { bots[notbot] = false; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) taxZero(); _transferStandard(sender, recipient, amount); if (!takeFee) taxZero(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _redisFee, _taxFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } 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; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function changeTax(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function MinSwapTokenThresh(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function MaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function MaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeAccountFromFee(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"MaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"MaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"MinSwapTokenThresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":"bots_","type":"address[]"}],"name":"areBots","outputs":[],"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":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"changeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeAccountFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"bool","name":"_tradingOpen","type":"bool"}],"name":"squawkOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unBots","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
608060405262000019670de0b6b3a76400005f196200035b565b62000026905f196200037b565b6006555f60088190556019600955600a8190556023600b819055600c829055600d819055600e91909155600f55601280546001600160a01b0319908116739026111a022653d13f0d9290e605eab7c054a9d69081179092556013805490911690911790556015805462ffffff60a01b1916600160b01b17905566470de4df820000601655666a94d74f43000060175566354a6ba7a18000601855348015620000cc575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa15801562000186573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001ac9190620003a1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021e9190620003a1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000269573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028f9190620003a1565b601580546001600160a01b0319166001600160a01b039283161790555f80548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200034c91815260200190565b60405180910390a350620003d0565b5f826200037657634e487b7160e01b5f52601260045260245ffd5b500690565b818103818111156200039b57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003b2575f80fd5b81516001600160a01b0381168114620003c9575f80fd5b9392505050565b611cfb80620003de5f395ff3fe6080604052600436106101c8575f3560e01c80637d1db4a5116100f2578063a919a09311610092578063c3c8cd8011610062578063c3c8cd801461053b578063dd62ed3e1461054f578063e2ee677d14610593578063f2fde38b146105b2575f80fd5b8063a919a093146104b0578063ad69489e146104cf578063bcd5e2f0146104ee578063bfd792841461050d575f80fd5b80638ebc7ec6116100cd5780638ebc7ec6146104315780638f9a55c01461045057806395d89b4114610465578063a9059cbb14610491575f80fd5b80637d1db4a5146103d55780637f2feddc146103ea5780638da5cb5b14610415575f80fd5b8063355e6f90116101685780636d8aa8f8116101385780636d8aa8f81461036f5780636fc3eaec1461038e57806370a08231146103a2578063715018a6146103c1575f80fd5b8063355e6f90146102f1578063431f08bd1461031257806349bd5a5e146103315780634a3459bf14610350575f80fd5b806318160ddd116101a357806318160ddd1461027e57806323b872dd146102a25780632fd689e3146102c1578063313ce567146102d6575f80fd5b806306fdde03146101d3578063095ea7b3146102185780631694505e14610247575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600b81526a4561726c7942697264414960a81b60208201525b60405161020f919061186f565b60405180910390f35b348015610223575f80fd5b506102376102323660046118df565b6105d1565b604051901515815260200161020f565b348015610252575f80fd5b50601454610266906001600160a01b031681565b6040516001600160a01b03909116815260200161020f565b348015610289575f80fd5b50670de0b6b3a76400005b60405190815260200161020f565b3480156102ad575f80fd5b506102376102bc366004611909565b6105e7565b3480156102cc575f80fd5b5061029460185481565b3480156102e1575f80fd5b506040516009815260200161020f565b3480156102fc575f80fd5b5061031061030b366004611947565b61064e565b005b34801561031d575f80fd5b5061031061032c366004611971565b6106a0565b34801561033c575f80fd5b50601554610266906001600160a01b031681565b34801561035b575f80fd5b5061031061036a36600461198a565b6106e7565b34801561037a575f80fd5b50610310610389366004611971565b610715565b348015610399575f80fd5b5061031061075c565b3480156103ad575f80fd5b506102946103bc366004611947565b6107a6565b3480156103cc575f80fd5b506103106107c7565b3480156103e0575f80fd5b5061029460165481565b3480156103f5575f80fd5b50610294610404366004611947565b60116020525f908152604090205481565b348015610420575f80fd5b505f546001600160a01b0316610266565b34801561043c575f80fd5b5061031061044b3660046119a1565b610838565b34801561045b575f80fd5b5061029460175481565b348015610470575f80fd5b506040805180820190915260048152634542416960e01b6020820152610202565b34801561049c575f80fd5b506102376104ab3660046118df565b6108cb565b3480156104bb575f80fd5b506103106104ca366004611a1e565b6108d7565b3480156104da575f80fd5b506103106104e936600461198a565b610914565b3480156104f9575f80fd5b50610310610508366004611a61565b610942565b348015610518575f80fd5b50610237610527366004611947565b60106020525f908152604090205460ff1681565b348015610546575f80fd5b506103106109ca565b34801561055a575f80fd5b50610294610569366004611b21565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561059e575f80fd5b506103106105ad36600461198a565b610a1c565b3480156105bd575f80fd5b506103106105cc366004611947565b610a4a565b5f6105dd338484610b31565b5060015b92915050565b5f6105f3848484610c54565b610644843361063f85604051806060016040528060288152602001611c9e602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611184565b610b31565b5060019392505050565b5f546001600160a01b031633146106805760405162461bcd60e51b815260040161067790611b58565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106c95760405162461bcd60e51b815260040161067790611b58565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146107105760405162461bcd60e51b815260040161067790611b58565b601655565b5f546001600160a01b0316331461073e5760405162461bcd60e51b815260040161067790611b58565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061079157506013546001600160a01b0316336001600160a01b0316145b610799575f80fd5b476107a3816111bc565b50565b6001600160a01b0381165f908152600260205260408120546105e1906111f3565b5f546001600160a01b031633146107f05760405162461bcd60e51b815260040161067790611b58565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108615760405162461bcd60e51b815260040161067790611b58565b5f5b828110156108c5578160055f86868581811061088157610881611b8d565b90506020020160208101906108969190611947565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610863565b50505050565b5f6105dd338484610c54565b5f546001600160a01b031633146109005760405162461bcd60e51b815260040161067790611b58565b600893909355600a91909155600955600b55565b5f546001600160a01b0316331461093d5760405162461bcd60e51b815260040161067790611b58565b601755565b5f546001600160a01b0316331461096b5760405162461bcd60e51b815260040161067790611b58565b5f5b81518110156109c657600160105f84848151811061098d5761098d611b8d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161096d565b5050565b6012546001600160a01b0316336001600160a01b031614806109ff57506013546001600160a01b0316336001600160a01b0316145b610a07575f80fd5b5f610a11306107a6565b90506107a381611275565b5f546001600160a01b03163314610a455760405162461bcd60e51b815260040161067790611b58565b601855565b5f546001600160a01b03163314610a735760405162461bcd60e51b815260040161067790611b58565b6001600160a01b038116610ad85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610677565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610677565b6001600160a01b038216610bf45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610677565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cb85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610677565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610677565b5f8111610d7b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610677565b5f546001600160a01b03848116911614801590610da557505f546001600160a01b03838116911614155b1561108057601554600160a01b900460ff16610e3d575f546001600160a01b03848116911614610e3d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610677565b601654811115610e8f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610677565b6001600160a01b0383165f9081526010602052604090205460ff16158015610ecf57506001600160a01b0382165f9081526010602052604090205460ff16155b610f275760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610677565b6015546001600160a01b03838116911614610fac5760175481610f49846107a6565b610f539190611bb5565b10610fac5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610677565b5f610fb6306107a6565b601854601654919250821015908210610fcf5760165491505b808015610fe65750601554600160a81b900460ff16155b801561100057506015546001600160a01b03868116911614155b80156110155750601554600160b01b900460ff165b801561103957506001600160a01b0385165f9081526005602052604090205460ff16155b801561105d57506001600160a01b0384165f9081526005602052604090205460ff16155b1561107d5761106b82611275565b47801561107b5761107b476111bc565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110c057506001600160a01b0383165f9081526005602052604090205460ff165b806110f257506015546001600160a01b038581169116148015906110f257506015546001600160a01b03848116911614155b156110fe57505f611178565b6015546001600160a01b03858116911614801561112957506014546001600160a01b03848116911614155b1561113b57600854600c55600954600d555b6015546001600160a01b03848116911614801561116657506014546001600160a01b03858116911614155b1561117857600a54600c55600b54600d555b6108c5848484846113e5565b5f81848411156111a75760405162461bcd60e51b8152600401610677919061186f565b505f6111b38486611bc8565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156109c6573d5f803e3d5ffd5b5f6006548211156112595760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610677565b5f61126261140a565b905061126e838261142b565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112bb576112bb611b8d565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113369190611bdb565b8160018151811061134957611349611b8d565b6001600160a01b03928316602091820292909201015260145461136f9130911684610b31565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113a79085905f90869030904290600401611bf6565b5f604051808303815f87803b1580156113be575f80fd5b505af11580156113d0573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806113f2576113f261146c565b6113fd848484611499565b806108c5576108c561146c565b5f805f61141561158a565b9092509050611424828261142b565b9250505090565b5f61126e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115c9565b600c5415801561147c5750600d54155b1561148357565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114a8876115f5565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506114d9908761164a565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611507908661168b565b6001600160a01b0389165f90815260026020526040902055611528816116e9565b611532848361172f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161157791815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a76400006115a4828261142b565b8210156115c057505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836115e95760405162461bcd60e51b8152600401610677919061186f565b505f6111b38486611c67565b5f805f805f805f805f61160d8a600c54600d54611753565b9250925092505f61161c61140a565b90505f805f61162d8e8787876117a5565b919e509c509a509598509396509194505050505091939550919395565b5f61126e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611184565b5f806116978385611bb5565b90508381101561126e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610677565b5f6116f261140a565b90505f6116ff83836117f1565b305f9081526002602052604090205490915061171b908261168b565b305f90815260026020526040902055505050565b60065461173c908361164a565b60065560075461174c908261168b565b6007555050565b5f80808061176c606461176689896117f1565b9061142b565b90505f61177e60646117668a896117f1565b90505f6117958261178f8b8661164a565b9061164a565b9992985090965090945050505050565b5f8080806117b388866117f1565b90505f6117c088876117f1565b90505f6117cd88886117f1565b90505f6117de8261178f868661164a565b939b939a50919850919650505050505050565b5f825f0361180057505f6105e1565b5f61180b8385611c86565b9050826118188583611c67565b1461126e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610677565b5f602080835283518060208501525f5b8181101561189b5785810183015185820160400152820161187f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107a3575f80fd5b80356118da816118bb565b919050565b5f80604083850312156118f0575f80fd5b82356118fb816118bb565b946020939093013593505050565b5f805f6060848603121561191b575f80fd5b8335611926816118bb565b92506020840135611936816118bb565b929592945050506040919091013590565b5f60208284031215611957575f80fd5b813561126e816118bb565b803580151581146118da575f80fd5b5f60208284031215611981575f80fd5b61126e82611962565b5f6020828403121561199a575f80fd5b5035919050565b5f805f604084860312156119b3575f80fd5b833567ffffffffffffffff808211156119ca575f80fd5b818601915086601f8301126119dd575f80fd5b8135818111156119eb575f80fd5b8760208260051b85010111156119ff575f80fd5b602092830195509350611a159186019050611962565b90509250925092565b5f805f8060808587031215611a31575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611a72575f80fd5b823567ffffffffffffffff80821115611a89575f80fd5b818501915085601f830112611a9c575f80fd5b813581811115611aae57611aae611a4d565b8060051b604051601f19603f83011681018181108582111715611ad357611ad3611a4d565b604052918252848201925083810185019188831115611af0575f80fd5b938501935b82851015611b1557611b06856118cf565b84529385019392850192611af5565b98975050505050505050565b5f8060408385031215611b32575f80fd5b8235611b3d816118bb565b91506020830135611b4d816118bb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156105e1576105e1611ba1565b818103818111156105e1576105e1611ba1565b5f60208284031215611beb575f80fd5b815161126e816118bb565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c465784516001600160a01b031683529383019391830191600101611c21565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c8157634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176105e1576105e1611ba156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220941565e3c564524f4ba7abe906b26000b8466a7191c68654e468da080400da7f64736f6c63430008180033
Deployed Bytecode
0x6080604052600436106101c8575f3560e01c80637d1db4a5116100f2578063a919a09311610092578063c3c8cd8011610062578063c3c8cd801461053b578063dd62ed3e1461054f578063e2ee677d14610593578063f2fde38b146105b2575f80fd5b8063a919a093146104b0578063ad69489e146104cf578063bcd5e2f0146104ee578063bfd792841461050d575f80fd5b80638ebc7ec6116100cd5780638ebc7ec6146104315780638f9a55c01461045057806395d89b4114610465578063a9059cbb14610491575f80fd5b80637d1db4a5146103d55780637f2feddc146103ea5780638da5cb5b14610415575f80fd5b8063355e6f90116101685780636d8aa8f8116101385780636d8aa8f81461036f5780636fc3eaec1461038e57806370a08231146103a2578063715018a6146103c1575f80fd5b8063355e6f90146102f1578063431f08bd1461031257806349bd5a5e146103315780634a3459bf14610350575f80fd5b806318160ddd116101a357806318160ddd1461027e57806323b872dd146102a25780632fd689e3146102c1578063313ce567146102d6575f80fd5b806306fdde03146101d3578063095ea7b3146102185780631694505e14610247575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201909152600b81526a4561726c7942697264414960a81b60208201525b60405161020f919061186f565b60405180910390f35b348015610223575f80fd5b506102376102323660046118df565b6105d1565b604051901515815260200161020f565b348015610252575f80fd5b50601454610266906001600160a01b031681565b6040516001600160a01b03909116815260200161020f565b348015610289575f80fd5b50670de0b6b3a76400005b60405190815260200161020f565b3480156102ad575f80fd5b506102376102bc366004611909565b6105e7565b3480156102cc575f80fd5b5061029460185481565b3480156102e1575f80fd5b506040516009815260200161020f565b3480156102fc575f80fd5b5061031061030b366004611947565b61064e565b005b34801561031d575f80fd5b5061031061032c366004611971565b6106a0565b34801561033c575f80fd5b50601554610266906001600160a01b031681565b34801561035b575f80fd5b5061031061036a36600461198a565b6106e7565b34801561037a575f80fd5b50610310610389366004611971565b610715565b348015610399575f80fd5b5061031061075c565b3480156103ad575f80fd5b506102946103bc366004611947565b6107a6565b3480156103cc575f80fd5b506103106107c7565b3480156103e0575f80fd5b5061029460165481565b3480156103f5575f80fd5b50610294610404366004611947565b60116020525f908152604090205481565b348015610420575f80fd5b505f546001600160a01b0316610266565b34801561043c575f80fd5b5061031061044b3660046119a1565b610838565b34801561045b575f80fd5b5061029460175481565b348015610470575f80fd5b506040805180820190915260048152634542416960e01b6020820152610202565b34801561049c575f80fd5b506102376104ab3660046118df565b6108cb565b3480156104bb575f80fd5b506103106104ca366004611a1e565b6108d7565b3480156104da575f80fd5b506103106104e936600461198a565b610914565b3480156104f9575f80fd5b50610310610508366004611a61565b610942565b348015610518575f80fd5b50610237610527366004611947565b60106020525f908152604090205460ff1681565b348015610546575f80fd5b506103106109ca565b34801561055a575f80fd5b50610294610569366004611b21565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561059e575f80fd5b506103106105ad36600461198a565b610a1c565b3480156105bd575f80fd5b506103106105cc366004611947565b610a4a565b5f6105dd338484610b31565b5060015b92915050565b5f6105f3848484610c54565b610644843361063f85604051806060016040528060288152602001611c9e602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190611184565b610b31565b5060019392505050565b5f546001600160a01b031633146106805760405162461bcd60e51b815260040161067790611b58565b60405180910390fd5b6001600160a01b03165f908152601060205260409020805460ff19169055565b5f546001600160a01b031633146106c95760405162461bcd60e51b815260040161067790611b58565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146107105760405162461bcd60e51b815260040161067790611b58565b601655565b5f546001600160a01b0316331461073e5760405162461bcd60e51b815260040161067790611b58565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b0316148061079157506013546001600160a01b0316336001600160a01b0316145b610799575f80fd5b476107a3816111bc565b50565b6001600160a01b0381165f908152600260205260408120546105e1906111f3565b5f546001600160a01b031633146107f05760405162461bcd60e51b815260040161067790611b58565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108615760405162461bcd60e51b815260040161067790611b58565b5f5b828110156108c5578160055f86868581811061088157610881611b8d565b90506020020160208101906108969190611947565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610863565b50505050565b5f6105dd338484610c54565b5f546001600160a01b031633146109005760405162461bcd60e51b815260040161067790611b58565b600893909355600a91909155600955600b55565b5f546001600160a01b0316331461093d5760405162461bcd60e51b815260040161067790611b58565b601755565b5f546001600160a01b0316331461096b5760405162461bcd60e51b815260040161067790611b58565b5f5b81518110156109c657600160105f84848151811061098d5761098d611b8d565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161096d565b5050565b6012546001600160a01b0316336001600160a01b031614806109ff57506013546001600160a01b0316336001600160a01b0316145b610a07575f80fd5b5f610a11306107a6565b90506107a381611275565b5f546001600160a01b03163314610a455760405162461bcd60e51b815260040161067790611b58565b601855565b5f546001600160a01b03163314610a735760405162461bcd60e51b815260040161067790611b58565b6001600160a01b038116610ad85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610677565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b935760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610677565b6001600160a01b038216610bf45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610677565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cb85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610677565b6001600160a01b038216610d1a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610677565b5f8111610d7b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610677565b5f546001600160a01b03848116911614801590610da557505f546001600160a01b03838116911614155b1561108057601554600160a01b900460ff16610e3d575f546001600160a01b03848116911614610e3d5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610677565b601654811115610e8f5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610677565b6001600160a01b0383165f9081526010602052604090205460ff16158015610ecf57506001600160a01b0382165f9081526010602052604090205460ff16155b610f275760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610677565b6015546001600160a01b03838116911614610fac5760175481610f49846107a6565b610f539190611bb5565b10610fac5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610677565b5f610fb6306107a6565b601854601654919250821015908210610fcf5760165491505b808015610fe65750601554600160a81b900460ff16155b801561100057506015546001600160a01b03868116911614155b80156110155750601554600160b01b900460ff165b801561103957506001600160a01b0385165f9081526005602052604090205460ff16155b801561105d57506001600160a01b0384165f9081526005602052604090205460ff16155b1561107d5761106b82611275565b47801561107b5761107b476111bc565b505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff16806110c057506001600160a01b0383165f9081526005602052604090205460ff165b806110f257506015546001600160a01b038581169116148015906110f257506015546001600160a01b03848116911614155b156110fe57505f611178565b6015546001600160a01b03858116911614801561112957506014546001600160a01b03848116911614155b1561113b57600854600c55600954600d555b6015546001600160a01b03848116911614801561116657506014546001600160a01b03858116911614155b1561117857600a54600c55600b54600d555b6108c5848484846113e5565b5f81848411156111a75760405162461bcd60e51b8152600401610677919061186f565b505f6111b38486611bc8565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156109c6573d5f803e3d5ffd5b5f6006548211156112595760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610677565b5f61126261140a565b905061126e838261142b565b9392505050565b6015805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112bb576112bb611b8d565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611312573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113369190611bdb565b8160018151811061134957611349611b8d565b6001600160a01b03928316602091820292909201015260145461136f9130911684610b31565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac947906113a79085905f90869030904290600401611bf6565b5f604051808303815f87803b1580156113be575f80fd5b505af11580156113d0573d5f803e3d5ffd5b50506015805460ff60a81b1916905550505050565b806113f2576113f261146c565b6113fd848484611499565b806108c5576108c561146c565b5f805f61141561158a565b9092509050611424828261142b565b9250505090565b5f61126e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115c9565b600c5415801561147c5750600d54155b1561148357565b600c8054600e55600d8054600f555f9182905555565b5f805f805f806114a8876115f5565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506114d9908761164a565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611507908661168b565b6001600160a01b0389165f90815260026020526040902055611528816116e9565b611532848361172f565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161157791815260200190565b60405180910390a3505050505050505050565b6006545f908190670de0b6b3a76400006115a4828261142b565b8210156115c057505060065492670de0b6b3a764000092509050565b90939092509050565b5f81836115e95760405162461bcd60e51b8152600401610677919061186f565b505f6111b38486611c67565b5f805f805f805f805f61160d8a600c54600d54611753565b9250925092505f61161c61140a565b90505f805f61162d8e8787876117a5565b919e509c509a509598509396509194505050505091939550919395565b5f61126e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611184565b5f806116978385611bb5565b90508381101561126e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610677565b5f6116f261140a565b90505f6116ff83836117f1565b305f9081526002602052604090205490915061171b908261168b565b305f90815260026020526040902055505050565b60065461173c908361164a565b60065560075461174c908261168b565b6007555050565b5f80808061176c606461176689896117f1565b9061142b565b90505f61177e60646117668a896117f1565b90505f6117958261178f8b8661164a565b9061164a565b9992985090965090945050505050565b5f8080806117b388866117f1565b90505f6117c088876117f1565b90505f6117cd88886117f1565b90505f6117de8261178f868661164a565b939b939a50919850919650505050505050565b5f825f0361180057505f6105e1565b5f61180b8385611c86565b9050826118188583611c67565b1461126e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610677565b5f602080835283518060208501525f5b8181101561189b5785810183015185820160400152820161187f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107a3575f80fd5b80356118da816118bb565b919050565b5f80604083850312156118f0575f80fd5b82356118fb816118bb565b946020939093013593505050565b5f805f6060848603121561191b575f80fd5b8335611926816118bb565b92506020840135611936816118bb565b929592945050506040919091013590565b5f60208284031215611957575f80fd5b813561126e816118bb565b803580151581146118da575f80fd5b5f60208284031215611981575f80fd5b61126e82611962565b5f6020828403121561199a575f80fd5b5035919050565b5f805f604084860312156119b3575f80fd5b833567ffffffffffffffff808211156119ca575f80fd5b818601915086601f8301126119dd575f80fd5b8135818111156119eb575f80fd5b8760208260051b85010111156119ff575f80fd5b602092830195509350611a159186019050611962565b90509250925092565b5f805f8060808587031215611a31575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611a72575f80fd5b823567ffffffffffffffff80821115611a89575f80fd5b818501915085601f830112611a9c575f80fd5b813581811115611aae57611aae611a4d565b8060051b604051601f19603f83011681018181108582111715611ad357611ad3611a4d565b604052918252848201925083810185019188831115611af0575f80fd5b938501935b82851015611b1557611b06856118cf565b84529385019392850192611af5565b98975050505050505050565b5f8060408385031215611b32575f80fd5b8235611b3d816118bb565b91506020830135611b4d816118bb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156105e1576105e1611ba1565b818103818111156105e1576105e1611ba1565b5f60208284031215611beb575f80fd5b815161126e816118bb565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611c465784516001600160a01b031683529383019391830191600101611c21565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611c8157634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176105e1576105e1611ba156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220941565e3c564524f4ba7abe906b26000b8466a7191c68654e468da080400da7f64736f6c63430008180033
Deployed Bytecode Sourcemap
5325:13488:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7856:83;;;;;;;;;;-1:-1:-1;7926:5:0;;;;;;;;;;;;-1:-1:-1;;;7926:5:0;;;;7856:83;;;;;;;:::i;:::-;;;;;;;;8781:193;;;;;;;;;;-1:-1:-1;8781:193:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;8781:193:0;1162:187:1;6695:41:0;;;;;;;;;;-1:-1:-1;6695:41:0;;;;-1:-1:-1;;;;;6695:41:0;;;;;;-1:-1:-1;;;;;1544:32:1;;;1526:51;;1514:2;1499:18;6695:41:0;1354:229:1;8133:95:0;;;;;;;;;;-1:-1:-1;5898:18:0;8133:95;;;1734:25:1;;;1722:2;1707:18;8133:95:0;1588:177:1;8982:446:0;;;;;;;;;;-1:-1:-1;8982:446:0;;;;;:::i;:::-;;:::i;7001:53::-;;;;;;;;;;;;;;;;8042:83;;;;;;;;;;-1:-1:-1;8042:83:0;;5571:1;2373:36:1;;2361:2;2346:18;8042:83:0;2231:184:1;14198:88:0;;;;;;;;;;-1:-1:-1;14198:88:0;;;;;:::i;:::-;;:::i;:::-;;13427:101;;;;;;;;;;-1:-1:-1;13427:101:0;;;;;:::i;:::-;;:::i;6743:28::-;;;;;;;;;;-1:-1:-1;6743:28:0;;;;-1:-1:-1;;;;;6743:28:0;;;18351:105;;;;;;;;;;-1:-1:-1;18351:105:0;;;;;:::i;:::-;;:::i;18211:101::-;;;;;;;;;;-1:-1:-1;18211:101:0;;;;;:::i;:::-;;:::i;13780:235::-;;;;;;;;;;;;;:::i;8236:138::-;;;;;;;;;;-1:-1:-1;8236:138:0;;;;;:::i;:::-;;:::i;2812:148::-;;;;;;;;;;;;;:::i;6893:46::-;;;;;;;;;;;;;;;;6437:43;;;;;;;;;;-1:-1:-1;6437:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;2598:79;;;;;;;;;;-1:-1:-1;2636:7:0;2663:6;-1:-1:-1;;;;;2663:6:0;2598:79;;18584:224;;;;;;;;;;-1:-1:-1;18584:224:0;;;;;:::i;:::-;;:::i;6946:48::-;;;;;;;;;;;;;;;;7947:87;;;;;;;;;;-1:-1:-1;8019:7:0;;;;;;;;;;;;-1:-1:-1;;;8019:7:0;;;;7947:87;;8382:199;;;;;;;;;;-1:-1:-1;8382:199:0;;;;;:::i;:::-;;:::i;17681:294::-;;;;;;;;;;-1:-1:-1;17681:294:0;;;;;:::i;:::-;;:::i;18464:112::-;;;;;;;;;;-1:-1:-1;18464:112:0;;;;;:::i;:::-;;:::i;14023:167::-;;;;;;;;;;-1:-1:-1;14023:167:0;;;;;:::i;:::-;;:::i;6399:36::-;;;;;;;;;;-1:-1:-1;6399:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13536:236;;;;;;;;;;;;;:::i;8589:184::-;;;;;;;;;;-1:-1:-1;8589:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8738:18:0;;;8706:7;8738:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8589:184;18027:132;;;;;;;;;;-1:-1:-1;18027:132:0;;;;;:::i;:::-;;:::i;2968:244::-;;;;;;;;;;-1:-1:-1;2968:244:0;;;;;:::i;:::-;;:::i;8781:193::-;8883:4;8905:39;1437:10;8928:7;8937:6;8905:8;:39::i;:::-;-1:-1:-1;8962:4:0;8781:193;;;;;:::o;8982:446::-;9114:4;9131:36;9141:6;9149:9;9160:6;9131:9;:36::i;:::-;9178:220;9201:6;1437:10;9249:138;9305:6;9249:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9249:19:0;;;;;;:11;:19;;;;;;;;1437:10;9249:33;;;;;;;;;;:37;:138::i;:::-;9178:8;:220::i;:::-;-1:-1:-1;9416:4:0;8982:446;;;;;:::o;14198:88::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14258:12:0::1;14273:5;14258:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;14258:20:0::1;::::0;;14198:88::o;13427:101::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;13494:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;13494:26:0::1;-1:-1:-1::0;;;;13494:26:0;;::::1;::::0;;;::::1;::::0;;13427:101::o;18351:105::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;18422:12:::1;:26:::0;18351:105::o;18211:101::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;18278:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;18278:26:0::1;-1:-1:-1::0;;;;18278:26:0;;::::1;::::0;;;::::1;::::0;;18211:101::o;13780:235::-;13846:19;;-1:-1:-1;;;;;13846:19:0;1437:10;-1:-1:-1;;;;;13830:35:0;;:72;;;-1:-1:-1;13885:17:0;;-1:-1:-1;;;;;13885:17:0;1437:10;-1:-1:-1;;;;;13869:33:0;;13830:72;13822:81;;;;;;13943:21;13975:32;13943:21;13975:12;:32::i;:::-;13811:204;13780:235::o;8236:138::-;-1:-1:-1;;;;;8349:16:0;;8302:7;8349:16;;;:7;:16;;;;;;8329:37;;:19;:37::i;2812:148::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;2919:1:::1;2903:6:::0;;2882:40:::1;::::0;-1:-1:-1;;;;;2903:6:0;;::::1;::::0;2882:40:::1;::::0;2919:1;;2882:40:::1;2950:1;2933:19:::0;;-1:-1:-1;;;;;;2933:19:0::1;::::0;;2812:148::o;18584:224::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;18691:9:::1;18687:114;18706:19:::0;;::::1;18687:114;;;18781:8;18747:18;:31;18766:8;;18775:1;18766:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18747:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18747:31:0;:42;;-1:-1:-1;;18747:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;18727:3:0::1;18687:114;;;;18584:224:::0;;;:::o;8382:199::-;8487:4;8509:42;1437:10;8533:9;8544:6;8509:9;:42::i;17681:294::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;17818:14:::1;:30:::0;;;;17859:15:::1;:32:::0;;;;17902:12:::1;:26:::0;17939:13:::1;:28:::0;17681:294::o;18464:112::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;18538:14:::1;:30:::0;18464:112::o;14023:167::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;14097:9:::1;14092:91;14116:5;:12;14112:1;:16;14092:91;;;14167:4;14150;:14;14155:5;14161:1;14155:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14150:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14150:14:0;:21;;-1:-1:-1;;14150:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14130:3:0::1;14092:91;;;;14023:167:::0;:::o;13536:236::-;13602:19;;-1:-1:-1;;;;;13602:19:0;1437:10;-1:-1:-1;;;;;13586:35:0;;:72;;;-1:-1:-1;13641:17:0;;-1:-1:-1;;;;;13641:17:0;1437:10;-1:-1:-1;;;;;13625:33:0;;13586:72;13578:81;;;;;;13670:23;13696:24;13714:4;13696:9;:24::i;:::-;13670:50;;13731:33;13748:15;13731:16;:33::i;18027:132::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;18111:19:::1;:40:::0;18027:132::o;2968:244::-;2725:6;;-1:-1:-1;;;;;2725:6:0;1437:10;2725:22;2717:67;;;;-1:-1:-1;;;2717:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3057:22:0;::::1;3049:73;;;::::0;-1:-1:-1;;;3049:73:0;;6845:2:1;3049:73:0::1;::::0;::::1;6827:21:1::0;6884:2;6864:18;;;6857:30;6923:34;6903:18;;;6896:62;-1:-1:-1;;;6974:18:1;;;6967:36;7020:19;;3049:73:0::1;6643:402:1::0;3049:73:0::1;3159:6;::::0;;3138:38:::1;::::0;-1:-1:-1;;;;;3138:38:0;;::::1;::::0;3159:6;::::1;::::0;3138:38:::1;::::0;::::1;3187:6;:17:::0;;-1:-1:-1;;;;;;3187:17:0::1;-1:-1:-1::0;;;;;3187:17:0;;;::::1;::::0;;;::::1;::::0;;2968:244::o;10114:369::-;-1:-1:-1;;;;;10241:19:0;;10233:68;;;;-1:-1:-1;;;10233:68:0;;7252:2:1;10233:68:0;;;7234:21:1;7291:2;7271:18;;;7264:30;7330:34;7310:18;;;7303:62;-1:-1:-1;;;7381:18:1;;;7374:34;7425:19;;10233:68:0;7050:400:1;10233:68:0;-1:-1:-1;;;;;10320:21:0;;10312:68;;;;-1:-1:-1;;;10312:68:0;;7657:2:1;10312:68:0;;;7639:21:1;7696:2;7676:18;;;7669:30;7735:34;7715:18;;;7708:62;-1:-1:-1;;;7786:18:1;;;7779:32;7828:19;;10312:68:0;7455:398:1;10312:68:0;-1:-1:-1;;;;;10391:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10443:32;;1734:25:1;;;10443:32:0;;1707:18:1;10443:32:0;;;;;;;10114:369;;;:::o;10491:2330::-;-1:-1:-1;;;;;10613:18:0;;10605:68;;;;-1:-1:-1;;;10605:68:0;;8060:2:1;10605:68:0;;;8042:21:1;8099:2;8079:18;;;8072:30;8138:34;8118:18;;;8111:62;-1:-1:-1;;;8189:18:1;;;8182:35;8234:19;;10605:68:0;7858:401:1;10605:68:0;-1:-1:-1;;;;;10692:16:0;;10684:64;;;;-1:-1:-1;;;10684:64:0;;8466:2:1;10684:64:0;;;8448:21:1;8505:2;8485:18;;;8478:30;8544:34;8524:18;;;8517:62;-1:-1:-1;;;8595:18:1;;;8588:33;8638:19;;10684:64:0;8264:399:1;10684:64:0;10776:1;10767:6;:10;10759:64;;;;-1:-1:-1;;;10759:64:0;;8870:2:1;10759:64:0;;;8852:21:1;8909:2;8889:18;;;8882:30;8948:34;8928:18;;;8921:62;-1:-1:-1;;;8999:18:1;;;8992:39;9048:19;;10759:64:0;8668:405:1;10759:64:0;2636:7;2663:6;-1:-1:-1;;;;;10840:15:0;;;2663:6;;10840:15;;;;:32;;-1:-1:-1;2636:7:0;2663:6;-1:-1:-1;;;;;10859:13:0;;;2663:6;;10859:13;;10840:32;10836:1259;;;10929:11;;-1:-1:-1;;;10929:11:0;;;;10924:144;;2636:7;2663:6;-1:-1:-1;;;;;10969:15:0;;;2663:6;;10969:15;10961:91;;;;-1:-1:-1;;;10961:91:0;;9280:2:1;10961:91:0;;;9262:21:1;9319:2;9299:18;;;9292:30;9358:34;9338:18;;;9331:62;9429:33;9409:18;;;9402:61;9480:19;;10961:91:0;9078:427:1;10961:91:0;11102:12;;11092:6;:22;;11084:63;;;;-1:-1:-1;;;11084:63:0;;9712:2:1;11084:63:0;;;9694:21:1;9751:2;9731:18;;;9724:30;9790;9770:18;;;9763:58;9838:18;;11084:63:0;9510:352:1;11084:63:0;-1:-1:-1;;;;;11171:10:0;;;;;;:4;:10;;;;;;;;11170:11;:24;;;;-1:-1:-1;;;;;;11186:8:0;;;;;;:4;:8;;;;;;;;11185:9;11170:24;11162:72;;;;-1:-1:-1;;;11162:72:0;;10069:2:1;11162:72:0;;;10051:21:1;10108:2;10088:18;;;10081:30;10147:34;10127:18;;;10120:62;-1:-1:-1;;;10198:18:1;;;10191:33;10241:19;;11162:72:0;9867:399:1;11162:72:0;11260:13;;-1:-1:-1;;;;;11254:19:0;;;11260:13;;11254:19;11251:146;;11327:14;;11318:6;11302:13;11312:2;11302:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11294:87;;;;-1:-1:-1;;;11294:87:0;;10735:2:1;11294:87:0;;;10717:21:1;10774:2;10754:18;;;10747:30;10813:34;10793:18;;;10786:62;-1:-1:-1;;;10864:18:1;;;10857:33;10907:19;;11294:87:0;10533:399:1;11294:87:0;11413:28;11444:24;11462:4;11444:9;:24::i;:::-;11522:19;;11585:12;;11413:55;;-1:-1:-1;11498:43:0;;;;11561:36;;11558:124;;11654:12;;11631:35;;11558:124;11702:7;:18;;;;-1:-1:-1;11714:6:0;;-1:-1:-1;;;11714:6:0;;;;11713:7;11702:18;:43;;;;-1:-1:-1;11732:13:0;;-1:-1:-1;;;;;11724:21:0;;;11732:13;;11724:21;;11702:43;:58;;;;-1:-1:-1;11749:11:0;;-1:-1:-1;;;11749:11:0;;;;11702:58;:87;;;;-1:-1:-1;;;;;;11765:24:0;;;;;;:18;:24;;;;;;;;11764:25;11702:87;:114;;;;-1:-1:-1;;;;;;11794:22:0;;;;;;:18;:22;;;;;;;;11793:23;11702:114;11698:386;;;11837:38;11854:20;11837:16;:38::i;:::-;11923:21;11967:22;;11963:106;;12014:35;12027:21;12014:12;:35::i;:::-;11818:266;11698:386;10874:1221;;10836:1259;-1:-1:-1;;;;;12171:24:0;;12107:12;12171:24;;;:18;:24;;;;;;12122:4;;12171:24;;;:50;;-1:-1:-1;;;;;;12199:22:0;;;;;;:18;:22;;;;;;;;12171:50;12170:102;;;-1:-1:-1;12235:13:0;;-1:-1:-1;;;;;12227:21:0;;;12235:13;;12227:21;;;;:44;;-1:-1:-1;12258:13:0;;-1:-1:-1;;;;;12252:19:0;;;12258:13;;12252:19;;12227:44;12166:594;;;-1:-1:-1;12299:5:0;12166:594;;;12382:13;;-1:-1:-1;;;;;12374:21:0;;;12382:13;;12374:21;:55;;;;-1:-1:-1;12413:15:0;;-1:-1:-1;;;;;12399:30:0;;;12413:15;;12399:30;;12374:55;12371:162;;;12462:14;;12450:9;:26;12505:12;;12495:7;:22;12371:162;12592:13;;-1:-1:-1;;;;;12586:19:0;;;12592:13;;12586:19;:55;;;;-1:-1:-1;12625:15:0;;-1:-1:-1;;;;;12609:32:0;;;12625:15;;12609:32;;12586:55;12582:165;;;12674:15;;12662:9;:27;12718:13;;12708:7;:23;12582:165;12772:41;12787:4;12793:2;12797:6;12805:7;12772:14;:41::i;3576:224::-;3696:7;3732:12;3724:6;;;;3716:29;;;;-1:-1:-1;;;3716:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3756:9:0;3768:5;3772:1;3768;:5;:::i;:::-;3756:17;3576:224;-1:-1:-1;;;;;3576:224:0:o;13320:99::-;13377:17;;:34;;-1:-1:-1;;;;;13377:17:0;;;;:34;;;;;13404:6;;13377:17;:34;:17;:34;13404:6;13377:17;:34;;;;;;;;;;;;;;;;;;;9436:323;9531:7;9589;;9578;:18;;9556:110;;;;-1:-1:-1;;;9556:110:0;;11272:2:1;9556:110:0;;;11254:21:1;11311:2;11291:18;;;11284:30;11350:34;11330:18;;;11323:62;-1:-1:-1;;;11401:18:1;;;11394:40;11451:19;;9556:110:0;11070:406:1;9556:110:0;9677:19;9699:10;:8;:10::i;:::-;9677:32;-1:-1:-1;9727:24:0;:7;9677:32;9727:11;:24::i;:::-;9720:31;9436:323;-1:-1:-1;;;9436:323:0:o;12829:483::-;7148:6;:13;;-1:-1:-1;;;;7148:13:0;-1:-1:-1;;;7148:13:0;;;12931:16:::1;::::0;;12945:1:::1;12931:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12931:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12931:16:0::1;12907:40;;12976:4;12958;12963:1;12958:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12958:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13002:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13002:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12958:7;;13002:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12992:4;12997:1;12992:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12992:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13067:15:::1;::::0;13035:62:::1;::::0;13052:4:::1;::::0;13067:15:::1;13085:11:::0;13035:8:::1;:62::i;:::-;13108:15;::::0;:196:::1;::::0;-1:-1:-1;;;13108:196:0;;-1:-1:-1;;;;;13108:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13189:11;;13108:15:::1;::::0;13231:4;;13258::::1;::::0;13278:15:::1;::::0;13108:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7184:6:0;:14;;-1:-1:-1;;;;7184:14:0;;;-1:-1:-1;;;;12829:483:0:o;14294:271::-;14450:7;14445:23;;14459:9;:7;:9::i;:::-;14479:44;14497:6;14505:9;14516:6;14479:17;:44::i;:::-;14539:7;14534:23;;14548:9;:7;:9::i;17244:164::-;17286:7;17307:15;17324;17343:19;:17;:19::i;:::-;17306:56;;-1:-1:-1;17306:56:0;-1:-1:-1;17380:20:0;17306:56;;17380:11;:20::i;:::-;17373:27;;;;17244:164;:::o;4062:132::-;4120:7;4147:39;4151:1;4154;4147:39;;;;;;;;;;;;;;;;;:3;:39::i;9767:214::-;9809:9;;:14;:30;;;;-1:-1:-1;9827:7:0;;:12;9809:30;9805:43;;;9767:214::o;9805:43::-;9880:9;;;9860:17;:29;9918:7;;;9900:15;:25;-1:-1:-1;9938:13:0;;;;9962:11;9767:214::o;14573:610::-;14720:15;14750:23;14788:12;14815:23;14853:12;14880:13;14907:19;14918:7;14907:10;:19::i;:::-;-1:-1:-1;;;;;14955:15:0;;;;;;:7;:15;;;;;;14705:221;;-1:-1:-1;14705:221:0;;-1:-1:-1;14705:221:0;;-1:-1:-1;14705:221:0;-1:-1:-1;14705:221:0;-1:-1:-1;14705:221:0;-1:-1:-1;14955:28:0;;14705:221;14955:19;:28::i;:::-;-1:-1:-1;;;;;14937:15:0;;;;;;;:7;:15;;;;;;:46;;;;15015:18;;;;;;;:39;;15038:15;15015:22;:39::i;:::-;-1:-1:-1;;;;;14994:18:0;;;;;;:7;:18;;;;;:60;15065:16;15075:5;15065:9;:16::i;:::-;15092:23;15104:4;15110;15092:11;:23::i;:::-;15148:9;-1:-1:-1;;;;;15131:44:0;15140:6;-1:-1:-1;;;;;15131:44:0;;15159:15;15131:44;;;;1734:25:1;;1722:2;1707:18;;1588:177;15131:44:0;;;;;;;;14694:489;;;;;;14573:610;;;:::o;17416:257::-;17514:7;;17467;;;;5898:18;17582:20;17514:7;5898:18;17582:11;:20::i;:::-;17572:7;:30;17568:61;;;-1:-1:-1;;17612:7:0;;;5898:18;;-1:-1:-1;17416:257:0;-1:-1:-1;17416:257:0:o;17568:61::-;17648:7;;17657;;-1:-1:-1;17416:257:0;-1:-1:-1;17416:257:0:o;4202:223::-;4322:7;4357:12;4350:5;4342:28;;;;-1:-1:-1;;;4342:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4381:9:0;4393:5;4397:1;4393;:5;:::i;15602:615::-;15702:7;15724;15746;15768;15790;15812;15848:23;15873:12;15887:13;15917:40;15929:7;15938:9;;15949:7;;15917:11;:40::i;:::-;15847:110;;;;;;15968:19;15990:10;:8;:10::i;:::-;15968:32;;16012:15;16029:23;16054:12;16083:46;16095:7;16104:4;16110:5;16117:11;16083;:46::i;:::-;16011:118;;-1:-1:-1;16011:118:0;-1:-1:-1;16011:118:0;-1:-1:-1;16180:15:0;;-1:-1:-1;16197:4:0;;-1:-1:-1;16203:5:0;;-1:-1:-1;;;;;15602:615:0;;;;;;;:::o;3432:136::-;3490:7;3517:43;3521:1;3524;3517:43;;;;;;;;;;;;;;;;;:3;:43::i;3245:179::-;3303:7;;3335:5;3339:1;3335;:5;:::i;:::-;3323:17;;3364:1;3359;:6;;3351:46;;;;-1:-1:-1;;;3351:46:0;;13146:2:1;3351:46:0;;;13128:21:1;13185:2;13165:18;;;13158:30;13224:29;13204:18;;;13197:57;13271:18;;3351:46:0;12944:351:1;15191:211:0;15244:19;15266:10;:8;:10::i;:::-;15244:32;-1:-1:-1;15287:13:0;15303:22;:5;15244:32;15303:9;:22::i;:::-;15377:4;15361:22;;;;:7;:22;;;;;;15287:38;;-1:-1:-1;15361:33:0;;15287:38;15361:26;:33::i;:::-;15352:4;15336:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;15191:211:0:o;15410:147::-;15488:7;;:17;;15500:4;15488:11;:17::i;:::-;15478:7;:27;15529:10;;:20;;15544:4;15529:14;:20::i;:::-;15516:10;:33;-1:-1:-1;;15410:147:0:o;16225:469::-;16394:7;;;;16488:30;16514:3;16488:21;:7;16500:8;16488:11;:21::i;:::-;:25;;:30::i;:::-;16473:45;-1:-1:-1;16529:13:0;16545:28;16569:3;16545:19;:7;16557:6;16545:11;:19::i;:28::-;16529:44;-1:-1:-1;16584:23:0;16610:28;16529:44;16610:17;:7;16622:4;16610:11;:17::i;:::-;:21;;:28::i;:::-;16584:54;16674:4;;-1:-1:-1;16680:5:0;;-1:-1:-1;16225:469:0;;-1:-1:-1;;;;;16225:469:0:o;16702:534::-;16896:7;;;;16993:24;:7;17005:11;16993;:24::i;:::-;16975:42;-1:-1:-1;17028:12:0;17043:21;:4;17052:11;17043:8;:21::i;:::-;17028:36;-1:-1:-1;17075:13:0;17091:22;:5;17101:11;17091:9;:22::i;:::-;17075:38;-1:-1:-1;17124:23:0;17150:28;17075:38;17150:17;:7;17162:4;17150:11;:17::i;:28::-;17197:7;;;;-1:-1:-1;17223:4:0;;-1:-1:-1;16702:534:0;;-1:-1:-1;;;;;;;16702:534:0:o;3808:246::-;3866:7;3890:1;3895;3890:6;3886:47;;-1:-1:-1;3920:1:0;3913:8;;3886:47;3943:9;3955:5;3959:1;3955;:5;:::i;:::-;3943:17;-1:-1:-1;3988:1:0;3979:5;3983:1;3943:17;3979:5;:::i;:::-;:10;3971:56;;;;-1:-1:-1;;;3971:56:0;;13675:2:1;3971:56:0;;;13657:21:1;13714:2;13694:18;;;13687:30;13753:34;13733:18;;;13726:62;-1:-1:-1;;;13804:18:1;;;13797:31;13845:19;;3971:56:0;13473:397:1;14:548;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;1770:456::-;1847:6;1855;1863;1916:2;1904:9;1895:7;1891:23;1887:32;1884:52;;;1932:1;1929;1922:12;1884:52;1971:9;1958:23;1990:31;2015:5;1990:31;:::i;:::-;2040:5;-1:-1:-1;2097:2:1;2082:18;;2069:32;2110:33;2069:32;2110:33;:::i;:::-;1770:456;;2162:7;;-1:-1:-1;;;2216:2:1;2201:18;;;;2188:32;;1770:456::o;2420:247::-;2479:6;2532:2;2520:9;2511:7;2507:23;2503:32;2500:52;;;2548:1;2545;2538:12;2500:52;2587:9;2574:23;2606:31;2631:5;2606:31;:::i;2672:160::-;2737:20;;2793:13;;2786:21;2776:32;;2766:60;;2822:1;2819;2812:12;2837:180;2893:6;2946:2;2934:9;2925:7;2921:23;2917:32;2914:52;;;2962:1;2959;2952:12;2914:52;2985:26;3001:9;2985:26;:::i;3230:180::-;3289:6;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;3381:23:1;;3230:180;-1:-1:-1;3230:180:1:o;3415:689::-;3507:6;3515;3523;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3632:9;3619:23;3661:18;3702:2;3694:6;3691:14;3688:34;;;3718:1;3715;3708:12;3688:34;3756:6;3745:9;3741:22;3731:32;;3801:7;3794:4;3790:2;3786:13;3782:27;3772:55;;3823:1;3820;3813:12;3772:55;3863:2;3850:16;3889:2;3881:6;3878:14;3875:34;;;3905:1;3902;3895:12;3875:34;3960:7;3953:4;3943:6;3940:1;3936:14;3932:2;3928:23;3924:34;3921:47;3918:67;;;3981:1;3978;3971:12;3918:67;4012:4;4004:13;;;;-1:-1:-1;4036:6:1;-1:-1:-1;4061:37:1;;4077:20;;;-1:-1:-1;4061:37:1;:::i;:::-;4051:47;;3415:689;;;;;:::o;4109:385::-;4195:6;4203;4211;4219;4272:3;4260:9;4251:7;4247:23;4243:33;4240:53;;;4289:1;4286;4279:12;4240:53;-1:-1:-1;;4312:23:1;;;4382:2;4367:18;;4354:32;;-1:-1:-1;4433:2:1;4418:18;;4405:32;;4484:2;4469:18;4456:32;;-1:-1:-1;4109:385:1;-1:-1:-1;4109:385:1:o;4499:127::-;4560:10;4555:3;4551:20;4548:1;4541:31;4591:4;4588:1;4581:15;4615:4;4612:1;4605:15;4631:1121;4715:6;4746:2;4789;4777:9;4768:7;4764:23;4760:32;4757:52;;;4805:1;4802;4795:12;4757:52;4845:9;4832:23;4874:18;4915:2;4907:6;4904:14;4901:34;;;4931:1;4928;4921:12;4901:34;4969:6;4958:9;4954:22;4944:32;;5014:7;5007:4;5003:2;4999:13;4995:27;4985:55;;5036:1;5033;5026:12;4985:55;5072:2;5059:16;5094:2;5090;5087:10;5084:36;;;5100:18;;:::i;:::-;5146:2;5143:1;5139:10;5178:2;5172:9;5241:2;5237:7;5232:2;5228;5224:11;5220:25;5212:6;5208:38;5296:6;5284:10;5281:22;5276:2;5264:10;5261:18;5258:46;5255:72;;;5307:18;;:::i;:::-;5343:2;5336:22;5393:18;;;5427:15;;;;-1:-1:-1;5469:11:1;;;5465:20;;;5497:19;;;5494:39;;;5529:1;5526;5519:12;5494:39;5553:11;;;;5573:148;5589:6;5584:3;5581:15;5573:148;;;5655:23;5674:3;5655:23;:::i;:::-;5643:36;;5606:12;;;;5699;;;;5573:148;;;5740:6;4631:1121;-1:-1:-1;;;;;;;;4631:1121:1:o;5757:388::-;5825:6;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5941:9;5928:23;5960:31;5985:5;5960:31;:::i;:::-;6010:5;-1:-1:-1;6067:2:1;6052:18;;6039:32;6080:33;6039:32;6080:33;:::i;:::-;6132:7;6122:17;;;5757:388;;;;;:::o;6150:356::-;6352:2;6334:21;;;6371:18;;;6364:30;6430:34;6425:2;6410:18;;6403:62;6497:2;6482:18;;6150:356::o;6511:127::-;6572:10;6567:3;6563:20;6560:1;6553:31;6603:4;6600:1;6593:15;6627:4;6624:1;6617:15;10271:127;10332:10;10327:3;10323:20;10320:1;10313:31;10363:4;10360:1;10353:15;10387:4;10384:1;10377:15;10403:125;10468:9;;;10489:10;;;10486:36;;;10502:18;;:::i;10937:128::-;11004:9;;;11025:11;;;11022:37;;;11039:18;;:::i;11481:251::-;11551:6;11604:2;11592:9;11583:7;11579:23;11575:32;11572:52;;;11620:1;11617;11610:12;11572:52;11652:9;11646:16;11671:31;11696:5;11671:31;:::i;11737:980::-;11999:4;12047:3;12036:9;12032:19;12078:6;12067:9;12060:25;12104:2;12142:6;12137:2;12126:9;12122:18;12115:34;12185:3;12180:2;12169:9;12165:18;12158:31;12209:6;12244;12238:13;12275:6;12267;12260:22;12313:3;12302:9;12298:19;12291:26;;12352:2;12344:6;12340:15;12326:29;;12373:1;12383:195;12397:6;12394:1;12391:13;12383:195;;;12462:13;;-1:-1:-1;;;;;12458:39:1;12446:52;;12553:15;;;;12518:12;;;;12494:1;12412:9;12383:195;;;-1:-1:-1;;;;;;;12634:32:1;;;;12629:2;12614:18;;12607:60;-1:-1:-1;;;12698:3:1;12683:19;12676:35;12595:3;11737:980;-1:-1:-1;;;11737:980:1:o;12722:217::-;12762:1;12788;12778:132;;12832:10;12827:3;12823:20;12820:1;12813:31;12867:4;12864:1;12857:15;12895:4;12892:1;12885:15;12778:132;-1:-1:-1;12924:9:1;;12722:217::o;13300:168::-;13373:9;;;13404;;13421:15;;;13415:22;;13401:37;13391:71;;13442:18;;:::i
Swarm Source
ipfs://941565e3c564524f4ba7abe906b26000b8466a7191c68654e468da080400da7f
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.