ERC-20
Overview
Max Total Supply
1,000,000,000,000 KATOKI
Holders
56
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
9,306,000,000 KATOKIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KatokiSaito
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-24 */ // SPDX-License-Identifier: NOLICENSE // Website: https://www.katokisaito.com // Telegram: https://t.me/katokisaito // Twitter: https://www.twitter.com/katokisaito pragma solidity ^0.8.16; 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract KatokiSaito is Context, IERC20, Ownable { 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 _isBot; address[] private _excluded; bool public swapEnabled; bool private swapping; IRouter public router; address public pair; uint8 private constant _decimals = 9; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000 * 10**_decimals; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 public swapTokensAtAmount = 10000000000 * 10**_decimals; uint256 public maxTxAmount = 10000000000 * 10**_decimals; bool private _isTradingState = true; // Anti Dump // mapping (address => uint256) public _lastTrade; bool public coolDownEnabled = true; uint256 public coolDownTime = 69 seconds; address public constant deadAddress = 0x000000000000000000000000000000000000dEaD; address public marketingAddress = 0x0f115416A073507015B81e6D23b82D69c301B505; address public buybackAddress = 0x0f2D63747facdE82f1e1289a857fe8Ac7F44e6Cb; address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //uniswap v2 string private constant _name = "Katoki Saito"; string private constant _symbol = "KATOKI"; struct Taxes { uint256 rfi; uint256 burn; uint256 liquidity; uint256 buyback; uint256 marketing; } Taxes public taxes = Taxes(0,0,1,1,4); struct TotFeesPaidStruct{ uint256 rfi; uint256 burn; uint256 liquidity; uint256 buyback; uint256 marketing; } TotFeesPaidStruct public totFeesPaid; struct valuesFromGetValues{ uint256 rAmount; uint256 rTransferAmount; uint256 rRfi; uint256 rBurn; uint256 rLiquidity; uint256 rBuyback; uint256 rMarketing; uint256 tTransferAmount; uint256 tRfi; uint256 tBurn; uint256 tLiquidity; uint256 tBuyback; uint256 tMarketing; } event FeesChanged(); event UpdatedRouter(address oldRouter, address newRouter); modifier lockTheSwap { swapping = true; _; swapping = false; } constructor () { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; excludeFromReward(pair); excludeFromReward(deadAddress); _rOwned[owner()] = _rTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[buybackAddress]=true; _isExcludedFromFee[marketingAddress]=true; _isExcludedFromFee[deadAddress] = true; _isTradingState = true; swapEnabled = true; emit Transfer(address(0), owner(), _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 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) { require(_isTradingState == true, "Trading is currently disabled."); _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function tradingEnabled() public view returns (bool) { return _isTradingState; } 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 virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferRfi) { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rAmount; } else { valuesFromGetValues memory s = _getValues(tAmount, true); return s.rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount/currentRate; } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setTaxes(uint256 _rfi, uint256 _buyback, uint256 _marketing, uint256 _liquidity, uint256 _burn) public onlyOwner { taxes.rfi = _rfi; taxes.buyback = _buyback; taxes.marketing = _marketing; taxes.liquidity = _liquidity; taxes.burn = _burn; emit FeesChanged(); } function _reflectRfi(uint256 rRfi, uint256 tRfi) private { _rTotal -=rRfi; totFeesPaid.rfi +=tRfi; } function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private { totFeesPaid.liquidity +=tLiquidity; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tLiquidity; } _rOwned[address(this)] +=rLiquidity; } function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private { totFeesPaid.marketing +=tMarketing; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tMarketing; } _rOwned[address(this)] +=rMarketing; } function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private { totFeesPaid.buyback +=tBuyback; if(_isExcluded[address(this)]) { _tOwned[address(this)]+=tBuyback; } _rOwned[address(this)] +=rBuyback; } function _takeBurn(uint256 rBurn, uint256 tBurn) private{ totFeesPaid.burn +=tBurn; if(_isExcluded[deadAddress]) { _tOwned[deadAddress]+=tBurn; } _rOwned[deadAddress] +=rBurn; } function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) { to_return = _getTValues(tAmount, takeFee); (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rBuyback, to_return.rMarketing, to_return.rLiquidity, to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate()); return to_return; } function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) { if(!takeFee) { s.tTransferAmount = tAmount; return s; } s.tRfi = tAmount*taxes.rfi/100; s.tBuyback = tAmount*taxes.buyback/100; s.tMarketing = tAmount*taxes.marketing/100; s.tLiquidity = tAmount*taxes.liquidity/100; s.tBurn = tAmount*taxes.burn/100; s.tTransferAmount = tAmount-s.tRfi-s.tBuyback-s.tMarketing-s.tLiquidity-s.tBurn; return s; } function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rBuyback, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) { rAmount = tAmount*currentRate; if(!takeFee) { return(rAmount, rAmount, 0,0,0,0,0); } rRfi = s.tRfi*currentRate; rBuyback = s.tBuyback*currentRate; rMarketing = s.tMarketing*currentRate; rLiquidity = s.tLiquidity*currentRate; rBurn = s.rBurn*currentRate; rTransferAmount = rAmount-rRfi-rBuyback-rMarketing-rLiquidity-rBurn; return (rAmount, rTransferAmount, rRfi, rBuyback, rMarketing, rLiquidity, rBurn); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply/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-_rOwned[_excluded[i]]; tSupply = tSupply-_tOwned[_excluded[i]]; } if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } 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"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); require(!_isBot[from] && !_isBot[to], "You are a bot"); if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && !swapping){ require(amount <= maxTxAmount ,"Amount is exceeding maxTxAmount"); if(from != pair && coolDownEnabled){ uint256 timePassed = block.timestamp - _lastTrade[from]; require(timePassed > coolDownTime, "You must wait coolDownTime"); _lastTrade[from] = block.timestamp; } if(to != pair && coolDownEnabled){ uint256 timePassed2 = block.timestamp - _lastTrade[to]; require(timePassed2 > coolDownTime, "You must wait coolDownTime"); _lastTrade[to] = block.timestamp; } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ swapAndLiquify(swapTokensAtAmount); } _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to])); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private { valuesFromGetValues memory s = _getValues(tAmount, takeFee); if (_isExcluded[sender] ) { //from excluded _tOwned[sender] = _tOwned[sender]-tAmount; } if (_isExcluded[recipient]) { //to excluded _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount; } _rOwned[sender] = _rOwned[sender]-s.rAmount; _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount; _reflectRfi(s.rRfi, s.tRfi); _takeLiquidity(s.rLiquidity,s.tLiquidity); _takeMarketing(s.rMarketing, s.tMarketing); _takeBuyback(s.rBuyback, s.tBuyback); _takeBurn(s.rBurn, s.tBurn); emit Transfer(sender, deadAddress, s.tBurn); emit Transfer(sender, recipient, s.tTransferAmount); emit Transfer(sender, address(this), s.tLiquidity + s.tBuyback + s.tMarketing); } function swapAndLiquify(uint256 tokens) private lockTheSwap{ // Split the contract balance into halves uint256 denominator = (taxes.liquidity + taxes.buyback + taxes.marketing ) * 2; uint256 tokensToAddLiquidityWith = tokens * taxes.liquidity / denominator; uint256 toSwap = tokens - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance= deltaBalance / (denominator - taxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * taxes.liquidity; if(ethToAddLiquidityWith > 0){ // Add liquidity to uniswap addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 buybackAmt = unitBalance * 2 * taxes.buyback; if(buybackAmt > 0){ payable(buybackAddress).transfer(buybackAmt); } uint256 marketingAmt = unitBalance * 2 * taxes.marketing; if(marketingAmt > 0){ payable(marketingAddress).transfer(marketingAmt); } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } 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] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function updatebuybackWallet(address newWallet) external onlyOwner{ require(buybackAddress != newWallet ,'Wallet already set'); buybackAddress = newWallet; _isExcludedFromFee[buybackAddress]; } function updatemarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet ,'Wallet already set'); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress]; } function updatMaxTxAmt(uint256 amount) external onlyOwner{ maxTxAmount = amount * 10 **_decimals; } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10 **_decimals; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function updateCoolDownSettings(bool _enabled, uint256 _timeInSeconds) external onlyOwner{ coolDownEnabled = _enabled; coolDownTime = _timeInSeconds * 1 seconds; } function setAntibot(address account, bool state) external onlyOwner{ require(_isBot[account] != state, 'Value already set'); _isBot[account] = state; } function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i = 0; i < accounts.length; i++){ _isBot[accounts[i]] = state; } } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ router = IRouter(newRouter); pair = newPair; } function isBot(address account) public view returns(bool){ return _isBot[account]; } //Use this in case ETH are sent to the contract by mistake function rescueETH(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient ETH balance"); payable(msg.sender).transfer(weiAmount); } // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake) // Owner cannot transfer out cakecoin from this smart contract function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount); } function setTradingState(bool _state) external onlyOwner{ _isTradingState = _state; } 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":[],"name":"FeesChanged","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastTrade","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setTradingState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updatMaxTxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_timeInSeconds","type":"uint256"}],"name":"updateCoolDownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatebuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatemarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a620009e5565b620000239064e8d4a51000620009f6565b600a819055620000369060001962000a2e565b620000449060001962000a45565b600b55620000556009600a620009e5565b62000066906402540be400620009f6565b600c55620000776009600a620009e5565b62000088906402540be400620009f6565b600d55600e805460ff19908116600190811790925560108054909116821790556045601155601280546001600160a01b0319908116730f115416a073507015b81e6d23b82d69c301b50517909155601380548216730f2d63747facde82f1e1289a857fe8ac7f44e6cb17905560148054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556040805160a0810182526000808252602082018190529181018390526060810183905260046080909101819052601582905560169190915560178290556018919091556019553480156200016657600080fd5b50620001723362000497565b6014546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a0155916004808201926020929091908290030181865afa158015620001c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000a5b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a5b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d0919062000a5b565b600880546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600980549183166001600160a01b0319909216821790559091506200031e90620004e7565b6200032b61dead620004e7565b600b5460016000620003456000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200037f6200067560201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260049093528183208054851660019081179091556013548216845282842080548616821790556012549091168352908220805484168217905561dead9091527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd8054831682179055600e8054831682179055600880549092161790556200043f6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200048791815260200190565b60405180910390a3505062000acf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005475760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620005b25760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016200053e565b6001600160a01b038116600090815260016020526040902054156200060f576001600160a01b038116600090815260016020526040902054620005f59062000684565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600b54821115620006ed5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016200053e565b6000620006f96200070e565b905062000707818462000a86565b9392505050565b600080806200071c62000734565b90925090506200072d818362000a86565b9250505090565b600b54600a546000918291825b6007548110156200089c5782600160006007848154811062000767576200076762000a9d565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620007d65750816002600060078481548110620007af57620007af62000a9d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007ed57600b54600a54945094505050509091565b600160006007838154811062000807576200080762000a9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000838908462000a45565b9250600260006007838154811062000854576200085462000a9d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000885908362000a45565b915080620008938162000ab3565b91505062000741565b50600a54600b54620008af919062000a86565b821015620008c757600b54600a549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009275781600019048211156200090b576200090b620008d0565b808516156200091957918102915b93841c9390800290620008eb565b509250929050565b6000826200094057506001620009df565b816200094f57506000620009df565b8160018114620009685760028114620009735762000993565b6001915050620009df565b60ff841115620009875762000987620008d0565b50506001821b620009df565b5060208310610133831016604e8410600b8410161715620009b8575081810a620009df565b620009c48383620008e6565b8060001904821115620009db57620009db620008d0565b0290505b92915050565b60006200070760ff8416836200092f565b600081600019048311821515161562000a135762000a13620008d0565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000a405762000a4062000a18565b500690565b81810381811115620009df57620009df620008d0565b60006020828403121562000a6e57600080fd5b81516001600160a01b03811681146200070757600080fd5b60008262000a985762000a9862000a18565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000ac85762000ac8620008d0565b5060010190565b6131308062000adf6000396000f3fe6080604052600436106102cd5760003560e01c80638c0b5e2211610175578063bff78169116100dc578063e116554511610095578063ee36e3591161006f578063ee36e35914610965578063f2fde38b1461097f578063f887ea401461099f578063f965aa1d146109c557600080fd5b8063e11655451461090f578063e2f456051461092f578063ea2f0b371461094557600080fd5b8063bff7816914610833578063cc2fbd6614610853578063d257b34f14610873578063d2ce0db214610893578063d5ccb8ee146108a9578063dd62ed3e146108c957600080fd5b8063a457c2d71161012e578063a457c2d714610766578063a5ece94114610786578063a87859f6146107a6578063a8aa1b31146107d3578063a9059cbb146107f3578063b31470a41461081357600080fd5b80638c0b5e221461069c5780638da5cb5b146106b2578063924de9b7146106d057806395d89b41146106f05780639ba5e4d51461071f5780639e252f001461074657600080fd5b806340b28c2f116102345780635fcefa42116101ed578063715018a6116101c7578063715018a6146105df578063728f8eea146105f457806388f82020146106435780638c0ae3df1461067c57600080fd5b80635fcefa42146105855780636ddd1713146105a557806370a08231146105bf57600080fd5b806340b28c2f146104b4578063437823ec146104d45780634549b039146104f45780634ada218b1461051457806352390c021461052c5780635342acb41461054c57600080fd5b80632d838119116102865780632d838119146103df578063313ce567146103ff5780633685d4191461041b578063395093511461043b5780633bbac5791461045b5780633c2a46a21461049457600080fd5b806306fdde03146102d9578063095ea7b3146103205780630d65df9b1461035057806318160ddd1461037257806323b872dd1461039157806327c8f835146103b157600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b5060408051808201909152600c81526b4b61746f6b6920536169746f60a01b60208201525b6040516103179190612b19565b60405180910390f35b34801561032c57600080fd5b5061034061033b366004612b8c565b6109e5565b6040519015158152602001610317565b34801561035c57600080fd5b5061037061036b366004612bb8565b6109fc565b005b34801561037e57600080fd5b50600a545b604051908152602001610317565b34801561039d57600080fd5b506103406103ac366004612bb8565b610aa8565b3480156103bd57600080fd5b506103c761dead81565b6040516001600160a01b039091168152602001610317565b3480156103eb57600080fd5b506103836103fa366004612bf9565b610b59565b34801561040b57600080fd5b5060405160098152602001610317565b34801561042757600080fd5b50610370610436366004612c12565b610bdd565b34801561044757600080fd5b50610340610456366004612b8c565b610d93565b34801561046757600080fd5b50610340610476366004612c12565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104a057600080fd5b506103706104af366004612c12565b610dca565b3480156104c057600080fd5b506103706104cf366004612c2f565b610e6f565b3480156104e057600080fd5b506103706104ef366004612c12565b610ed3565b34801561050057600080fd5b5061038361050f366004612c81565b610f21565b34801561052057600080fd5b50600e5460ff16610340565b34801561053857600080fd5b50610370610547366004612c12565b610fab565b34801561055857600080fd5b50610340610567366004612c12565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561059157600080fd5b506103706105a0366004612ca6565b6110fe565b3480156105b157600080fd5b506008546103409060ff1681565b3480156105cb57600080fd5b506103836105da366004612c12565b611171565b3480156105eb57600080fd5b506103706111d0565b34801561060057600080fd5b5060155460165460175460185460195461061b949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610317565b34801561064f57600080fd5b5061034061065e366004612c12565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561068857600080fd5b50610370610697366004612ce1565b611206565b3480156106a857600080fd5b50610383600d5481565b3480156106be57600080fd5b506000546001600160a01b03166103c7565b3480156106dc57600080fd5b506103706106eb366004612cff565b611250565b3480156106fc57600080fd5b506040805180820190915260068152654b41544f4b4960d01b602082015261030a565b34801561072b57600080fd5b50601a54601b54601c54601d54601e5461061b949392919085565b34801561075257600080fd5b50610370610761366004612bf9565b61128d565b34801561077257600080fd5b50610340610781366004612b8c565b611334565b34801561079257600080fd5b506012546103c7906001600160a01b031681565b3480156107b257600080fd5b506103836107c1366004612c12565b600f6020526000908152604090205481565b3480156107df57600080fd5b506009546103c7906001600160a01b031681565b3480156107ff57600080fd5b5061034061080e366004612b8c565b6113cf565b34801561081f57600080fd5b5061037061082e366004612d32565b611434565b34801561083f57600080fd5b5061037061084e366004612c12565b6114ca565b34801561085f57600080fd5b506013546103c7906001600160a01b031681565b34801561087f57600080fd5b5061037061088e366004612bf9565b61156f565b34801561089f57600080fd5b5061038360115481565b3480156108b557600080fd5b506103706108c4366004612cff565b6115b5565b3480156108d557600080fd5b506103836108e4366004612c2f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561091b57600080fd5b5061037061092a366004612e09565b6115f2565b34801561093b57600080fd5b50610383600c5481565b34801561095157600080fd5b50610370610960366004612c12565b6116ab565b34801561097157600080fd5b506010546103409060ff1681565b34801561098b57600080fd5b5061037061099a366004612c12565b6116f6565b3480156109ab57600080fd5b506008546103c7906201000090046001600160a01b031681565b3480156109d157600080fd5b506103706109e0366004612bf9565b611791565b60006109f23384846117d7565b5060015b92915050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b8152600401610a2690612e37565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190612e6c565b50505050565b6000610ab58484846118fb565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610b3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a26565b610b4e8533610b498685612e9f565b6117d7565b506001949350505050565b6000600b54821115610bc05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a26565b6000610bca611e29565b9050610bd68184612eb2565b9392505050565b6000546001600160a01b03163314610c075760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03811660009081526005602052604090205460ff16610c6f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a26565b60005b600754811015610d8f57816001600160a01b031660078281548110610c9957610c99612ed4565b6000918252602090912001546001600160a01b031603610d7d5760078054610cc390600190612e9f565b81548110610cd357610cd3612ed4565b600091825260209091200154600780546001600160a01b039092169183908110610cff57610cff612ed4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d5757610d57612eea565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d8781612f00565b915050610c72565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109f2918590610b49908690612f19565b6000546001600160a01b03163314610df45760405162461bcd60e51b8152600401610a2690612e37565b6013546001600160a01b03808316911603610e465760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610a26565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610e995760405162461bcd60e51b8152600401610a2690612e37565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610f755760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a26565b81610f91576000610f87846001611e4c565b5191506109f69050565b6000610f9e846001611e4c565b6020015191506109f69050565b6000546001600160a01b03163314610fd55760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03811660009081526005602052604090205460ff161561103e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a26565b6001600160a01b03811660009081526001602052604090205415611098576001600160a01b03811660009081526001602052604090205461107e90610b59565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146111285760405162461bcd60e51b8152600401610a2690612e37565b601585905560188490556019839055601782905560168190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156111ae57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109f690610b59565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610a2690612e37565b6112046000611e99565b565b6000546001600160a01b031633146112305760405162461bcd60e51b8152600401610a2690612e37565b6010805460ff1916831515179055611249816001612f2c565b6011555050565b6000546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610a2690612e37565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146112b75760405162461bcd60e51b8152600401610a2690612e37565b804710156113075760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610a26565b604051339082156108fc029083906000818181858888f19350505050158015610d8f573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a26565b6113c53385610b498685612e9f565b5060019392505050565b600e5460009060ff1615156001146114295760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610a26565b6109f23384846118fb565b6000546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610a2690612e37565b60005b82518110156114c557816006600085848151811061148157611481612ed4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806114bd81612f00565b915050611461565b505050565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610a2690612e37565b6012546001600160a01b038083169116036115465760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610a26565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146115995760405162461bcd60e51b8152600401610a2690612e37565b6115a56009600a61302f565b6115af9082612f2c565b600c5550565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610a2690612e37565b600e805460ff1916911515919091179055565b6000546001600160a01b0316331461161c5760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03821660009081526006602052604090205481151560ff9091161515036116805760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a26565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116d55760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b0381166117855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a26565b61178e81611e99565b50565b6000546001600160a01b031633146117bb5760405162461bcd60e51b8152600401610a2690612e37565b6117c76009600a61302f565b6117d19082612f2c565b600d5550565b6001600160a01b0383166118395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a26565b6001600160a01b03821661189a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a26565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661195f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a26565b6001600160a01b0382166119c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a26565b60008111611a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a26565b611a2c83611171565b811115611a955760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a26565b6001600160a01b03831660009081526006602052604090205460ff16158015611ad757506001600160a01b03821660009081526006602052604090205460ff16155b611b135760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610a26565b6001600160a01b03831660009081526004602052604090205460ff16158015611b5557506001600160a01b03821660009081526004602052604090205460ff16155b8015611b695750600854610100900460ff16155b15611d3057600d54811115611bc05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420697320657863656564696e67206d61785478416d6f756e74006044820152606401610a26565b6009546001600160a01b03848116911614801590611be0575060105460ff165b15611c78576001600160a01b0383166000908152600f6020526040812054611c089042612e9f565b90506011548111611c5b5760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a26565b506001600160a01b0383166000908152600f602052604090204290555b6009546001600160a01b03838116911614801590611c98575060105460ff165b15611d30576001600160a01b0382166000908152600f6020526040812054611cc09042612e9f565b90506011548111611d135760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a26565b506001600160a01b0382166000908152600f602052604090204290555b6000600c54611d3e30611171565b6008549111159150610100900460ff16158015611d5d575060085460ff165b8015611d665750805b8015611d8057506009546001600160a01b03858116911614155b8015611da557506001600160a01b03841660009081526004602052604090205460ff16155b8015611dca57506001600160a01b03831660009081526004602052604090205460ff16155b15611dda57611dda600c54611ee9565b6001600160a01b038416600090815260046020526040902054610aa29085908590859060ff1680611e2357506001600160a01b03871660009081526004602052604090205460ff165b15612080565b6000806000611e36612342565b9092509050611e458183612eb2565b9250505090565b611e54612ab1565b611e5e83836124c5565b9050611e73818484611e6e611e29565b6125d5565b6060880152608087015260c086015260a085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560195460185460175460009291611f0e91612f19565b611f189190612f19565b611f23906002612f2c565b905060008160156002015484611f399190612f2c565b611f439190612eb2565b90506000611f518285612e9f565b905047611f5d826126aa565b6000611f698247612e9f565b601754909150600090611f7c9087612e9f565b611f869083612eb2565b601754909150600090611f999083612f2c565b90508015611fab57611fab8682612829565b601854600090611fbc846002612f2c565b611fc69190612f2c565b9050801561200a576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612008573d6000803e3d6000fd5b505b60195460009061201b856002612f2c565b6120259190612f2c565b90508015612069576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612067573d6000803e3d6000fd5b505b50506008805461ff00191690555050505050505050565b600061208c8383611e4c565b6001600160a01b03861660009081526005602052604090205490915060ff16156120ee576001600160a01b0385166000908152600260205260409020546120d4908490612e9f565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff16156121515760e08101516001600160a01b0385166000908152600260205260409020546121379190612f19565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546121769190612e9f565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546121ad9190612f19565b6001600160a01b03851660009081526001602052604090819020919091558101516101008201516121de919061290b565b6121f18160800151826101400151612940565b6122048160c001518261018001516129b6565b6122178160a001518261016001516129cb565b61222a81606001518261012001516129e0565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610120015160405161227691815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516122c791815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561014001516123209190612f19565b61232a9190612f19565b60405190815260200160405180910390a35050505050565b600b54600a546000918291825b6007548110156124945782600160006007848154811061237157612371612ed4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123dc57508160026000600784815481106123b5576123b5612ed4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123f257600b54600a54945094505050509091565b600160006007838154811061240957612409612ed4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124389084612e9f565b9250600260006007838154811061245157612451612ed4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124809083612e9f565b91508061248c81612f00565b91505061234f565b50600a54600b546124a59190612eb2565b8210156124bc57600b54600a549350935050509091565b90939092509050565b6124cd612ab1565b816124de5760e081018390526109f6565b6015546064906124ee9085612f2c565b6124f89190612eb2565b61010082015260185460649061250e9085612f2c565b6125189190612eb2565b61016082015260195460649061252e9085612f2c565b6125389190612eb2565b61018082015260175460649061254e9085612f2c565b6125589190612eb2565b61014082015260165460649061256e9085612f2c565b6125789190612eb2565b61012082018190526101408201516101808301516101608401516101008501516125a29088612e9f565b6125ac9190612e9f565b6125b69190612e9f565b6125c09190612e9f565b6125ca9190612e9f565b60e082015292915050565b60008080808080806125e7888b612f2c565b9650886126055750859450600093508392508291508190508061269c565b878b61010001516126169190612f2c565b9450878b61016001516126299190612f2c565b9350878b610180015161263c9190612f2c565b9250878b610140015161264f9190612f2c565b9150878b606001516126619190612f2c565b905080828486612671898c612e9f565b61267b9190612e9f565b6126859190612e9f565b61268f9190612e9f565b6126999190612e9f565b95505b949950949992975094509450565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126df576126df612ed4565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612752573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612776919061303e565b8160018151811061278957612789612ed4565b6001600160a01b0392831660209182029290920101526008546127b591309162010000900416846117d7565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906127f390859060009086903090429060040161305b565b600060405180830381600087803b15801561280d57600080fd5b505af1158015612821573d6000803e3d6000fd5b505050505050565b6008546128479030906201000090046001600160a01b0316846117d7565b6008546001600160a01b03620100009091041663f305d7198230856000806128776000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128df573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061290491906130cc565b5050505050565b81600b600082825461291d9190612e9f565b9091555050601a8054829190600090612937908490612f19565b90915550505050565b80601a60020160008282546129559190612f19565b90915550503060009081526005602052604090205460ff1615612997573060009081526002602052604081208054839290612991908490612f19565b90915550505b3060009081526001602052604081208054849290612937908490612f19565b80601a60040160008282546129559190612f19565b80601a60030160008282546129559190612f19565b80601a60010160008282546129f59190612f19565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff1615612a735761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290612a6d908490612f19565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290612937908490612f19565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612b4657858101830151858201604001528201612b2a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461178e57600080fd5b8035612b8781612b67565b919050565b60008060408385031215612b9f57600080fd5b8235612baa81612b67565b946020939093013593505050565b600080600060608486031215612bcd57600080fd5b8335612bd881612b67565b92506020840135612be881612b67565b929592945050506040919091013590565b600060208284031215612c0b57600080fd5b5035919050565b600060208284031215612c2457600080fd5b8135610bd681612b67565b60008060408385031215612c4257600080fd5b8235612c4d81612b67565b91506020830135612c5d81612b67565b809150509250929050565b801515811461178e57600080fd5b8035612b8781612c68565b60008060408385031215612c9457600080fd5b823591506020830135612c5d81612c68565b600080600080600060a08688031215612cbe57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cf457600080fd5b8235612baa81612c68565b600060208284031215612d1157600080fd5b8135610bd681612c68565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612d4557600080fd5b823567ffffffffffffffff80821115612d5d57600080fd5b818501915085601f830112612d7157600080fd5b8135602082821115612d8557612d85612d1c565b8160051b604051601f19603f83011681018181108682111715612daa57612daa612d1c565b604052928352818301935084810182019289841115612dc857600080fd5b948201945b83861015612ded57612dde86612b7c565b85529482019493820193612dcd565b9650612dfc9050878201612c76565b9450505050509250929050565b60008060408385031215612e1c57600080fd5b8235612e2781612b67565b91506020830135612c5d81612c68565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612e7e57600080fd5b8151610bd681612c68565b634e487b7160e01b600052601160045260246000fd5b818103818111156109f6576109f6612e89565b600082612ecf57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201612f1257612f12612e89565b5060010190565b808201808211156109f6576109f6612e89565b6000816000190483118215151615612f4657612f46612e89565b500290565b600181815b80851115612f86578160001904821115612f6c57612f6c612e89565b80851615612f7957918102915b93841c9390800290612f50565b509250929050565b600082612f9d575060016109f6565b81612faa575060006109f6565b8160018114612fc05760028114612fca57612fe6565b60019150506109f6565b60ff841115612fdb57612fdb612e89565b50506001821b6109f6565b5060208310610133831016604e8410600b8410161715613009575081810a6109f6565b6130138383612f4b565b806000190482111561302757613027612e89565b029392505050565b6000610bd660ff841683612f8e565b60006020828403121561305057600080fd5b8151610bd681612b67565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130ab5784516001600160a01b031683529383019391830191600101613086565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156130e157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122014ba7824deb89857d456b126f9139d7d87405118de96c7ee7f95635d86c9357764736f6c63430008100033
Deployed Bytecode
0x6080604052600436106102cd5760003560e01c80638c0b5e2211610175578063bff78169116100dc578063e116554511610095578063ee36e3591161006f578063ee36e35914610965578063f2fde38b1461097f578063f887ea401461099f578063f965aa1d146109c557600080fd5b8063e11655451461090f578063e2f456051461092f578063ea2f0b371461094557600080fd5b8063bff7816914610833578063cc2fbd6614610853578063d257b34f14610873578063d2ce0db214610893578063d5ccb8ee146108a9578063dd62ed3e146108c957600080fd5b8063a457c2d71161012e578063a457c2d714610766578063a5ece94114610786578063a87859f6146107a6578063a8aa1b31146107d3578063a9059cbb146107f3578063b31470a41461081357600080fd5b80638c0b5e221461069c5780638da5cb5b146106b2578063924de9b7146106d057806395d89b41146106f05780639ba5e4d51461071f5780639e252f001461074657600080fd5b806340b28c2f116102345780635fcefa42116101ed578063715018a6116101c7578063715018a6146105df578063728f8eea146105f457806388f82020146106435780638c0ae3df1461067c57600080fd5b80635fcefa42146105855780636ddd1713146105a557806370a08231146105bf57600080fd5b806340b28c2f146104b4578063437823ec146104d45780634549b039146104f45780634ada218b1461051457806352390c021461052c5780635342acb41461054c57600080fd5b80632d838119116102865780632d838119146103df578063313ce567146103ff5780633685d4191461041b578063395093511461043b5780633bbac5791461045b5780633c2a46a21461049457600080fd5b806306fdde03146102d9578063095ea7b3146103205780630d65df9b1461035057806318160ddd1461037257806323b872dd1461039157806327c8f835146103b157600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b5060408051808201909152600c81526b4b61746f6b6920536169746f60a01b60208201525b6040516103179190612b19565b60405180910390f35b34801561032c57600080fd5b5061034061033b366004612b8c565b6109e5565b6040519015158152602001610317565b34801561035c57600080fd5b5061037061036b366004612bb8565b6109fc565b005b34801561037e57600080fd5b50600a545b604051908152602001610317565b34801561039d57600080fd5b506103406103ac366004612bb8565b610aa8565b3480156103bd57600080fd5b506103c761dead81565b6040516001600160a01b039091168152602001610317565b3480156103eb57600080fd5b506103836103fa366004612bf9565b610b59565b34801561040b57600080fd5b5060405160098152602001610317565b34801561042757600080fd5b50610370610436366004612c12565b610bdd565b34801561044757600080fd5b50610340610456366004612b8c565b610d93565b34801561046757600080fd5b50610340610476366004612c12565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104a057600080fd5b506103706104af366004612c12565b610dca565b3480156104c057600080fd5b506103706104cf366004612c2f565b610e6f565b3480156104e057600080fd5b506103706104ef366004612c12565b610ed3565b34801561050057600080fd5b5061038361050f366004612c81565b610f21565b34801561052057600080fd5b50600e5460ff16610340565b34801561053857600080fd5b50610370610547366004612c12565b610fab565b34801561055857600080fd5b50610340610567366004612c12565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561059157600080fd5b506103706105a0366004612ca6565b6110fe565b3480156105b157600080fd5b506008546103409060ff1681565b3480156105cb57600080fd5b506103836105da366004612c12565b611171565b3480156105eb57600080fd5b506103706111d0565b34801561060057600080fd5b5060155460165460175460185460195461061b949392919085565b604080519586526020860194909452928401919091526060830152608082015260a001610317565b34801561064f57600080fd5b5061034061065e366004612c12565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561068857600080fd5b50610370610697366004612ce1565b611206565b3480156106a857600080fd5b50610383600d5481565b3480156106be57600080fd5b506000546001600160a01b03166103c7565b3480156106dc57600080fd5b506103706106eb366004612cff565b611250565b3480156106fc57600080fd5b506040805180820190915260068152654b41544f4b4960d01b602082015261030a565b34801561072b57600080fd5b50601a54601b54601c54601d54601e5461061b949392919085565b34801561075257600080fd5b50610370610761366004612bf9565b61128d565b34801561077257600080fd5b50610340610781366004612b8c565b611334565b34801561079257600080fd5b506012546103c7906001600160a01b031681565b3480156107b257600080fd5b506103836107c1366004612c12565b600f6020526000908152604090205481565b3480156107df57600080fd5b506009546103c7906001600160a01b031681565b3480156107ff57600080fd5b5061034061080e366004612b8c565b6113cf565b34801561081f57600080fd5b5061037061082e366004612d32565b611434565b34801561083f57600080fd5b5061037061084e366004612c12565b6114ca565b34801561085f57600080fd5b506013546103c7906001600160a01b031681565b34801561087f57600080fd5b5061037061088e366004612bf9565b61156f565b34801561089f57600080fd5b5061038360115481565b3480156108b557600080fd5b506103706108c4366004612cff565b6115b5565b3480156108d557600080fd5b506103836108e4366004612c2f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561091b57600080fd5b5061037061092a366004612e09565b6115f2565b34801561093b57600080fd5b50610383600c5481565b34801561095157600080fd5b50610370610960366004612c12565b6116ab565b34801561097157600080fd5b506010546103409060ff1681565b34801561098b57600080fd5b5061037061099a366004612c12565b6116f6565b3480156109ab57600080fd5b506008546103c7906201000090046001600160a01b031681565b3480156109d157600080fd5b506103706109e0366004612bf9565b611791565b60006109f23384846117d7565b5060015b92915050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b8152600401610a2690612e37565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190612e6c565b50505050565b6000610ab58484846118fb565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610b3a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a26565b610b4e8533610b498685612e9f565b6117d7565b506001949350505050565b6000600b54821115610bc05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a26565b6000610bca611e29565b9050610bd68184612eb2565b9392505050565b6000546001600160a01b03163314610c075760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03811660009081526005602052604090205460ff16610c6f5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a26565b60005b600754811015610d8f57816001600160a01b031660078281548110610c9957610c99612ed4565b6000918252602090912001546001600160a01b031603610d7d5760078054610cc390600190612e9f565b81548110610cd357610cd3612ed4565b600091825260209091200154600780546001600160a01b039092169183908110610cff57610cff612ed4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610d5757610d57612eea565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d8781612f00565b915050610c72565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916109f2918590610b49908690612f19565b6000546001600160a01b03163314610df45760405162461bcd60e51b8152600401610a2690612e37565b6013546001600160a01b03808316911603610e465760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610a26565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314610e995760405162461bcd60e51b8152600401610a2690612e37565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610efd5760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610f755760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a26565b81610f91576000610f87846001611e4c565b5191506109f69050565b6000610f9e846001611e4c565b6020015191506109f69050565b6000546001600160a01b03163314610fd55760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03811660009081526005602052604090205460ff161561103e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a26565b6001600160a01b03811660009081526001602052604090205415611098576001600160a01b03811660009081526001602052604090205461107e90610b59565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146111285760405162461bcd60e51b8152600401610a2690612e37565b601585905560188490556019839055601782905560168190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156111ae57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546109f690610b59565b6000546001600160a01b031633146111fa5760405162461bcd60e51b8152600401610a2690612e37565b6112046000611e99565b565b6000546001600160a01b031633146112305760405162461bcd60e51b8152600401610a2690612e37565b6010805460ff1916831515179055611249816001612f2c565b6011555050565b6000546001600160a01b0316331461127a5760405162461bcd60e51b8152600401610a2690612e37565b6008805460ff1916911515919091179055565b6000546001600160a01b031633146112b75760405162461bcd60e51b8152600401610a2690612e37565b804710156113075760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610a26565b604051339082156108fc029083906000818181858888f19350505050158015610d8f573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156113b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a26565b6113c53385610b498685612e9f565b5060019392505050565b600e5460009060ff1615156001146114295760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610a26565b6109f23384846118fb565b6000546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610a2690612e37565b60005b82518110156114c557816006600085848151811061148157611481612ed4565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806114bd81612f00565b915050611461565b505050565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610a2690612e37565b6012546001600160a01b038083169116036115465760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610a26565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146115995760405162461bcd60e51b8152600401610a2690612e37565b6115a56009600a61302f565b6115af9082612f2c565b600c5550565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610a2690612e37565b600e805460ff1916911515919091179055565b6000546001600160a01b0316331461161c5760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03821660009081526006602052604090205481151560ff9091161515036116805760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a26565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116d55760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610a2690612e37565b6001600160a01b0381166117855760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a26565b61178e81611e99565b50565b6000546001600160a01b031633146117bb5760405162461bcd60e51b8152600401610a2690612e37565b6117c76009600a61302f565b6117d19082612f2c565b600d5550565b6001600160a01b0383166118395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a26565b6001600160a01b03821661189a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a26565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661195f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a26565b6001600160a01b0382166119c15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a26565b60008111611a235760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a26565b611a2c83611171565b811115611a955760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a26565b6001600160a01b03831660009081526006602052604090205460ff16158015611ad757506001600160a01b03821660009081526006602052604090205460ff16155b611b135760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610a26565b6001600160a01b03831660009081526004602052604090205460ff16158015611b5557506001600160a01b03821660009081526004602052604090205460ff16155b8015611b695750600854610100900460ff16155b15611d3057600d54811115611bc05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420697320657863656564696e67206d61785478416d6f756e74006044820152606401610a26565b6009546001600160a01b03848116911614801590611be0575060105460ff165b15611c78576001600160a01b0383166000908152600f6020526040812054611c089042612e9f565b90506011548111611c5b5760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a26565b506001600160a01b0383166000908152600f602052604090204290555b6009546001600160a01b03838116911614801590611c98575060105460ff165b15611d30576001600160a01b0382166000908152600f6020526040812054611cc09042612e9f565b90506011548111611d135760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a26565b506001600160a01b0382166000908152600f602052604090204290555b6000600c54611d3e30611171565b6008549111159150610100900460ff16158015611d5d575060085460ff165b8015611d665750805b8015611d8057506009546001600160a01b03858116911614155b8015611da557506001600160a01b03841660009081526004602052604090205460ff16155b8015611dca57506001600160a01b03831660009081526004602052604090205460ff16155b15611dda57611dda600c54611ee9565b6001600160a01b038416600090815260046020526040902054610aa29085908590859060ff1680611e2357506001600160a01b03871660009081526004602052604090205460ff165b15612080565b6000806000611e36612342565b9092509050611e458183612eb2565b9250505090565b611e54612ab1565b611e5e83836124c5565b9050611e73818484611e6e611e29565b6125d5565b6060880152608087015260c086015260a085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff00191661010017905560195460185460175460009291611f0e91612f19565b611f189190612f19565b611f23906002612f2c565b905060008160156002015484611f399190612f2c565b611f439190612eb2565b90506000611f518285612e9f565b905047611f5d826126aa565b6000611f698247612e9f565b601754909150600090611f7c9087612e9f565b611f869083612eb2565b601754909150600090611f999083612f2c565b90508015611fab57611fab8682612829565b601854600090611fbc846002612f2c565b611fc69190612f2c565b9050801561200a576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612008573d6000803e3d6000fd5b505b60195460009061201b856002612f2c565b6120259190612f2c565b90508015612069576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612067573d6000803e3d6000fd5b505b50506008805461ff00191690555050505050505050565b600061208c8383611e4c565b6001600160a01b03861660009081526005602052604090205490915060ff16156120ee576001600160a01b0385166000908152600260205260409020546120d4908490612e9f565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff16156121515760e08101516001600160a01b0385166000908152600260205260409020546121379190612f19565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546121769190612e9f565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546121ad9190612f19565b6001600160a01b03851660009081526001602052604090819020919091558101516101008201516121de919061290b565b6121f18160800151826101400151612940565b6122048160c001518261018001516129b6565b6122178160a001518261016001516129cb565b61222a81606001518261012001516129e0565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610120015160405161227691815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516122c791815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561014001516123209190612f19565b61232a9190612f19565b60405190815260200160405180910390a35050505050565b600b54600a546000918291825b6007548110156124945782600160006007848154811061237157612371612ed4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806123dc57508160026000600784815481106123b5576123b5612ed4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156123f257600b54600a54945094505050509091565b600160006007838154811061240957612409612ed4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124389084612e9f565b9250600260006007838154811061245157612451612ed4565b60009182526020808320909101546001600160a01b031683528201929092526040019020546124809083612e9f565b91508061248c81612f00565b91505061234f565b50600a54600b546124a59190612eb2565b8210156124bc57600b54600a549350935050509091565b90939092509050565b6124cd612ab1565b816124de5760e081018390526109f6565b6015546064906124ee9085612f2c565b6124f89190612eb2565b61010082015260185460649061250e9085612f2c565b6125189190612eb2565b61016082015260195460649061252e9085612f2c565b6125389190612eb2565b61018082015260175460649061254e9085612f2c565b6125589190612eb2565b61014082015260165460649061256e9085612f2c565b6125789190612eb2565b61012082018190526101408201516101808301516101608401516101008501516125a29088612e9f565b6125ac9190612e9f565b6125b69190612e9f565b6125c09190612e9f565b6125ca9190612e9f565b60e082015292915050565b60008080808080806125e7888b612f2c565b9650886126055750859450600093508392508291508190508061269c565b878b61010001516126169190612f2c565b9450878b61016001516126299190612f2c565b9350878b610180015161263c9190612f2c565b9250878b610140015161264f9190612f2c565b9150878b606001516126619190612f2c565b905080828486612671898c612e9f565b61267b9190612e9f565b6126859190612e9f565b61268f9190612e9f565b6126999190612e9f565b95505b949950949992975094509450565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126df576126df612ed4565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612752573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612776919061303e565b8160018151811061278957612789612ed4565b6001600160a01b0392831660209182029290920101526008546127b591309162010000900416846117d7565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906127f390859060009086903090429060040161305b565b600060405180830381600087803b15801561280d57600080fd5b505af1158015612821573d6000803e3d6000fd5b505050505050565b6008546128479030906201000090046001600160a01b0316846117d7565b6008546001600160a01b03620100009091041663f305d7198230856000806128776000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128df573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061290491906130cc565b5050505050565b81600b600082825461291d9190612e9f565b9091555050601a8054829190600090612937908490612f19565b90915550505050565b80601a60020160008282546129559190612f19565b90915550503060009081526005602052604090205460ff1615612997573060009081526002602052604081208054839290612991908490612f19565b90915550505b3060009081526001602052604081208054849290612937908490612f19565b80601a60040160008282546129559190612f19565b80601a60030160008282546129559190612f19565b80601a60010160008282546129f59190612f19565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff1615612a735761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290612a6d908490612f19565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290612937908490612f19565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b81811015612b4657858101830151858201604001528201612b2a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461178e57600080fd5b8035612b8781612b67565b919050565b60008060408385031215612b9f57600080fd5b8235612baa81612b67565b946020939093013593505050565b600080600060608486031215612bcd57600080fd5b8335612bd881612b67565b92506020840135612be881612b67565b929592945050506040919091013590565b600060208284031215612c0b57600080fd5b5035919050565b600060208284031215612c2457600080fd5b8135610bd681612b67565b60008060408385031215612c4257600080fd5b8235612c4d81612b67565b91506020830135612c5d81612b67565b809150509250929050565b801515811461178e57600080fd5b8035612b8781612c68565b60008060408385031215612c9457600080fd5b823591506020830135612c5d81612c68565b600080600080600060a08688031215612cbe57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cf457600080fd5b8235612baa81612c68565b600060208284031215612d1157600080fd5b8135610bd681612c68565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612d4557600080fd5b823567ffffffffffffffff80821115612d5d57600080fd5b818501915085601f830112612d7157600080fd5b8135602082821115612d8557612d85612d1c565b8160051b604051601f19603f83011681018181108682111715612daa57612daa612d1c565b604052928352818301935084810182019289841115612dc857600080fd5b948201945b83861015612ded57612dde86612b7c565b85529482019493820193612dcd565b9650612dfc9050878201612c76565b9450505050509250929050565b60008060408385031215612e1c57600080fd5b8235612e2781612b67565b91506020830135612c5d81612c68565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612e7e57600080fd5b8151610bd681612c68565b634e487b7160e01b600052601160045260246000fd5b818103818111156109f6576109f6612e89565b600082612ecf57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060018201612f1257612f12612e89565b5060010190565b808201808211156109f6576109f6612e89565b6000816000190483118215151615612f4657612f46612e89565b500290565b600181815b80851115612f86578160001904821115612f6c57612f6c612e89565b80851615612f7957918102915b93841c9390800290612f50565b509250929050565b600082612f9d575060016109f6565b81612faa575060006109f6565b8160018114612fc05760028114612fca57612fe6565b60019150506109f6565b60ff841115612fdb57612fdb612e89565b50506001821b6109f6565b5060208310610133831016604e8410600b8410161715613009575081810a6109f6565b6130138383612f4b565b806000190482111561302757613027612e89565b029392505050565b6000610bd660ff841683612f8e565b60006020828403121561305057600080fd5b8151610bd681612b67565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156130ab5784516001600160a01b031683529383019391830191600101613086565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156130e157600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122014ba7824deb89857d456b126f9139d7d87405118de96c7ee7f95635d86c9357764736f6c63430008100033
Deployed Bytecode Sourcemap
2989:19447:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6298:83;;;;;;;;;;-1:-1:-1;6368:5:0;;;;;;;;;;;;-1:-1:-1;;;6368:5:0;;;;6298:83;;;;;;;:::i;:::-;;;;;;;;7385:161;;;;;;;;;;-1:-1:-1;7385:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;7385:161:0;1162:187:1;22130:154:0;;;;;;;;;;-1:-1:-1;22130:154:0;;;;;:::i;:::-;;:::i;:::-;;6571:95;;;;;;;;;;-1:-1:-1;6651:7:0;;6571:95;;;1961:25:1;;;1949:2;1934:18;6571:95:0;1815:177:1;7554:422:0;;;;;;;;;;-1:-1:-1;7554:422:0;;;;;:::i;:::-;;:::i;4108:80::-;;;;;;;;;;;;4146:42;4108:80;;;;;-1:-1:-1;;;;;2161:32:1;;;2143:51;;2131:2;2116:18;4108:80:0;1997:203:1;9184:248:0;;;;;;;;;;-1:-1:-1;9184:248:0;;;;;:::i;:::-;;:::i;6480:83::-;;;;;;;;;;-1:-1:-1;6480:83:0;;3576:1;2532:36:1;;2520:2;2505:18;6480:83:0;2390:184:1;9781:475:0;;;;;;;;;;-1:-1:-1;9781:475:0;;;;;:::i;:::-;;:::i;7984:215::-;;;;;;;;;;-1:-1:-1;7984:215:0;;;;;:::i;:::-;;:::i;21581:98::-;;;;;;;;;;-1:-1:-1;21581:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;21656:15:0;21633:4;21656:15;;;:6;:15;;;;;;;;;21581:98;19986:225;;;;;;;;;;-1:-1:-1;19986:225:0;;;;;:::i;:::-;;:::i;21415:154::-;;;;;;;;;;-1:-1:-1;21415:154:0;;;;;:::i;:::-;;:::i;10266:111::-;;;;;;;;;;-1:-1:-1;10266:111:0;;;;;:::i;:::-;;:::i;8720:456::-;;;;;;;;;;-1:-1:-1;8720:456:0;;;;;:::i;:::-;;:::i;7283:94::-;;;;;;;;;;-1:-1:-1;7354:15:0;;;;7283:94;;9440:333;;;;;;;;;;-1:-1:-1;9440:333:0;;;;;:::i;:::-;;:::i;10503:123::-;;;;;;;;;;-1:-1:-1;10503:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10591:27:0;10567:4;10591:27;;;:18;:27;;;;;;;;;10503:123;10634:328;;;;;;;;;;-1:-1:-1;10634:328:0;;;;;:::i;:::-;;:::i;3425:23::-;;;;;;;;;;-1:-1:-1;3425:23:0;;;;;;;;6674:198;;;;;;;;;;-1:-1:-1;6674:198:0;;;;;:::i;:::-;;:::i;1766:94::-;;;;;;;;;;;;;:::i;4713:37::-;;;;;;;;;;-1:-1:-1;4713:37:0;;;;;;;;;;;;;;;;;;;;;;4512:25:1;;;4568:2;4553:18;;4546:34;;;;4596:18;;;4589:34;;;;4654:2;4639:18;;4632:34;4697:3;4682:19;;4675:35;4499:3;4484:19;4713:37:0;4253:463:1;8592:120:0;;;;;;;;;;-1:-1:-1;8592:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;8684:20:0;8660:4;8684:20;;;:11;:20;;;;;;;;;8592:120;20829:186;;;;;;;;;;-1:-1:-1;20829:186:0;;;;;:::i;:::-;;:::i;3831:56::-;;;;;;;;;;;;;;;;1543:87;;;;;;;;;;-1:-1:-1;1589:7:0;1616:6;-1:-1:-1;;;;;1616:6:0;1543:87;;20720:101;;;;;;;;;;-1:-1:-1;20720:101:0;;;;;:::i;:::-;;:::i;6387:87::-;;;;;;;;;;-1:-1:-1;6459:7:0;;;;;;;;;;;;-1:-1:-1;;;6459:7:0;;;;6387:87;;4924:36;;;;;;;;;;-1:-1:-1;4924:36:0;;;;;;;;;;;;;;;;;;21757:196;;;;;;;;;;-1:-1:-1;21757:196:0;;;;;:::i;:::-;;:::i;8207:377::-;;;;;;;;;;-1:-1:-1;8207:377:0;;;;;:::i;:::-;;:::i;4195:76::-;;;;;;;;;;-1:-1:-1;4195:76:0;;;;-1:-1:-1;;;;;4195:76:0;;;3965:46;;;;;;;;;;-1:-1:-1;3965:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;3513:19;;;;;;;;;;-1:-1:-1;3513:19:0;;;;-1:-1:-1;;;;;3513:19:0;;;6880:244;;;;;;;;;;-1:-1:-1;6880:244:0;;;;;:::i;:::-;;:::i;21209:194::-;;;;;;;;;;-1:-1:-1;21209:194:0;;;;;:::i;:::-;;:::i;20219:233::-;;;;;;;;;;-1:-1:-1;20219:233:0;;;;;:::i;:::-;;:::i;4278:74::-;;;;;;;;;;-1:-1:-1;4278:74:0;;;;-1:-1:-1;;;;;4278:74:0;;;20581:131;;;;;;;;;;-1:-1:-1;20581:131:0;;;;;:::i;:::-;;:::i;4059:40::-;;;;;;;;;;;;;;;;22292:99;;;;;;;;;;-1:-1:-1;22292:99:0;;;;;:::i;:::-;;:::i;7132:143::-;;;;;;;;;;-1:-1:-1;7132:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7240:18:0;;;7213:7;7240:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7132:143;21023:174;;;;;;;;;;-1:-1:-1;21023:174:0;;;;;:::i;:::-;;:::i;3761:63::-;;;;;;;;;;;;;;;;10385:110;;;;;;;;;;-1:-1:-1;10385:110:0;;;;;:::i;:::-;;:::i;4018:34::-;;;;;;;;;;-1:-1:-1;4018:34:0;;;;;;;;1868:192;;;;;;;;;;-1:-1:-1;1868:192:0;;;;;:::i;:::-;;:::i;3485:21::-;;;;;;;;;;-1:-1:-1;3485:21:0;;;;;;;-1:-1:-1;;;;;3485:21:0;;;20460:113;;;;;;;;;;-1:-1:-1;20460:113:0;;;;;:::i;:::-;;:::i;7385:161::-;7460:4;7477:39;1044:10;7500:7;7509:6;7477:8;:39::i;:::-;-1:-1:-1;7534:4:0;7385:161;;;;;:::o;22130:154::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;;;;;;;;;22235:41:::1;::::0;-1:-1:-1;;;22235:41:0;;-1:-1:-1;;;;;7772:32:1;;;22235:41:0::1;::::0;::::1;7754:51:1::0;7821:18;;;7814:34;;;22235:27:0;::::1;::::0;::::1;::::0;7727:18:1;;22235:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22130:154:::0;;;:::o;7554:422::-;7660:4;7677:36;7687:6;7695:9;7706:6;7677:9;:36::i;:::-;-1:-1:-1;;;;;7753:19:0;;7726:24;7753:19;;;:11;:19;;;;;;;;1044:10;7753:33;;;;;;;;7805:26;;;;7797:79;;;;-1:-1:-1;;;7797:79:0;;8311:2:1;7797:79:0;;;8293:21:1;8350:2;8330:18;;;8323:30;8389:34;8369:18;;;8362:62;-1:-1:-1;;;8440:18:1;;;8433:38;8488:19;;7797:79:0;8109:404:1;7797:79:0;7887:57;7896:6;1044:10;7918:25;7937:6;7918:16;:25;:::i;:::-;7887:8;:57::i;:::-;-1:-1:-1;7964:4:0;;7554:422;-1:-1:-1;;;;7554:422:0:o;9184:248::-;9250:7;9289;;9278;:18;;9270:73;;;;-1:-1:-1;;;9270:73:0;;8985:2:1;9270:73:0;;;8967:21:1;9024:2;9004:18;;;8997:30;9063:34;9043:18;;;9036:62;-1:-1:-1;;;9114:18:1;;;9107:40;9164:19;;9270:73:0;8783:406:1;9270:73:0;9354:19;9377:10;:8;:10::i;:::-;9354:33;-1:-1:-1;9405:19:0;9354:33;9405:7;:19;:::i;:::-;9398:26;9184:248;-1:-1:-1;;;9184:248:0:o;9781:475::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9863:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9855:56;;;::::0;-1:-1:-1;;;9855:56:0;;9618:2:1;9855:56:0::1;::::0;::::1;9600:21:1::0;9657:2;9637:18;;;9630:30;9696:25;9676:18;;;9669:53;9739:18;;9855:56:0::1;9416:347:1::0;9855:56:0::1;9927:9;9922:327;9946:9;:16:::0;9942:20;::::1;9922:327;;;10004:7;-1:-1:-1::0;;;;;9988:23:0::1;:9;9998:1;9988:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;9988:12:0::1;:23:::0;9984:254:::1;;10047:9;10057:16:::0;;:20:::1;::::0;10076:1:::1;::::0;10057:20:::1;:::i;:::-;10047:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10032:9:::1;:12:::0;;-1:-1:-1;;;;;10047:31:0;;::::1;::::0;10042:1;;10032:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10032:46:0::1;-1:-1:-1::0;;;;;10032:46:0;;::::1;;::::0;;10097:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;10136:11:::1;:20:::0;;;;:28;;-1:-1:-1;;10136:28:0::1;::::0;;10183:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;10183:15:0;;;;;-1:-1:-1;;;;;;10183:15:0::1;::::0;;;;;9922:327:::1;9781:475:::0;:::o;9984:254::-:1;9964:3:::0;::::1;::::0;::::1;:::i;:::-;;;;9922:327;;;;9781:475:::0;:::o;7984:215::-;1044:10;8072:4;8121:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8121:34:0;;;;;;;;;;8072:4;;8089:80;;8112:7;;8121:47;;8158:10;;8121:47;:::i;19986:225::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20071:14:::1;::::0;-1:-1:-1;;;;;20071:27:0;;::::1;:14:::0;::::1;:27:::0;20063:58:::1;;;::::0;-1:-1:-1;;;20063:58:0;;10504:2:1;20063:58:0::1;::::0;::::1;10486:21:1::0;10543:2;10523:18;;;10516:30;-1:-1:-1;;;10562:18:1;;;10555:48;10620:18;;20063:58:0::1;10302:342:1::0;20063:58:0::1;20132:14;:26:::0;;-1:-1:-1;;;;;20132:26:0;;::::1;-1:-1:-1::0;;;;;;20132:26:0;;::::1;::::0;::::1;::::0;;:14:::1;20169:34:::0;:18:::1;:34;::::0;19986:225::o;21415:154::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;21509:6:::1;:27:::0;;-1:-1:-1;;;;;;21509:27:0::1;::::0;-1:-1:-1;;;;;21509:27:0;;::::1;;;::::0;;21547:4:::1;:14:::0;;-1:-1:-1;;;;;;21547:14:0::1;::::0;;;::::1;;::::0;;21415:154::o;10266:111::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10335:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;10335:34:0::1;10365:4;10335:34;::::0;;10266:111::o;8720:456::-;8810:7;8849;;8838;:18;;8830:62;;;;-1:-1:-1;;;8830:62:0;;10851:2:1;8830:62:0;;;10833:21:1;10890:2;10870:18;;;10863:30;10929:33;10909:18;;;10902:61;10980:18;;8830:62:0;10649:355:1;8830:62:0;8908:17;8903:266;;8942:28;8973:25;8984:7;8993:4;8973:10;:25::i;:::-;9020:9;;-1:-1:-1;9013:16:0;;-1:-1:-1;9013:16:0;8903:266;9062:28;9093:25;9104:7;9113:4;9093:10;:25::i;:::-;9140:17;;;;-1:-1:-1;9133:24:0;;-1:-1:-1;9133:24:0;9440:333;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9523:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;9522:21;9514:61;;;::::0;-1:-1:-1;;;9514:61:0;;11211:2:1;9514:61:0::1;::::0;::::1;11193:21:1::0;11250:2;11230:18;;;11223:30;11289:29;11269:18;;;11262:57;11336:18;;9514:61:0::1;11009:351:1::0;9514:61:0::1;-1:-1:-1::0;;;;;9589:16:0;::::1;9608:1;9589:16:::0;;;:7:::1;:16;::::0;;;;;:20;9586:108:::1;;-1:-1:-1::0;;;;;9665:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;9645:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;9626:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;9586:108:::1;-1:-1:-1::0;;;;;9704:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;9704:27:0::1;9727:4;9704:27:::0;;::::1;::::0;;;9742:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;9742:23:0::1;::::0;;::::1;::::0;;9440:333::o;10634:328::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;10767:5:::1;:16:::0;;;10794:13;:24;;;10829:15;:28;;;10868:15;:28;;;10907:10;:18;;;10941:13:::1;::::0;::::1;::::0;10767:9:::1;::::0;10941:13:::1;10634:328:::0;;;;;:::o;6674:198::-;-1:-1:-1;;;;;6764:20:0;;6740:7;6764:20;;;:11;:20;;;;;;;;6760:49;;;-1:-1:-1;;;;;;6793:16:0;;;;;:7;:16;;;;;;;6674:198::o;6760:49::-;-1:-1:-1;;;;;6847:16:0;;;;;;:7;:16;;;;;;6827:37;;:19;:37::i;1766:94::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;1831:21:::1;1849:1;1831:9;:21::i;:::-;1766:94::o:0;20829:186::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20929:15:::1;:26:::0;;-1:-1:-1;;20929:26:0::1;::::0;::::1;;;::::0;;20981::::1;:14:::0;-1:-1:-1;20981:26:0::1;:::i;:::-;20966:12;:41:::0;-1:-1:-1;;20829:186:0:o;20720:101::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20791:11:::1;:22:::0;;-1:-1:-1;;20791:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20720:101::o;21757:196::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;21857:9:::1;21832:21;:34;;21824:71;;;::::0;-1:-1:-1;;;21824:71:0;;11740:2:1;21824:71:0::1;::::0;::::1;11722:21:1::0;11779:2;11759:18;;;11752:30;11818:26;11798:18;;;11791:54;11862:18;;21824:71:0::1;11538:348:1::0;21824:71:0::1;21906:39;::::0;21914:10:::1;::::0;21906:39;::::1;;;::::0;21935:9;;21906:39:::1;::::0;;;21935:9;21914:10;21906:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;8207:377:::0;1044:10;8300:4;8344:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8344:34:0;;;;;;;;;;8397:35;;;;8389:85;;;;-1:-1:-1;;;8389:85:0;;12093:2:1;8389:85:0;;;12075:21:1;12132:2;12112:18;;;12105:30;12171:34;12151:18;;;12144:62;-1:-1:-1;;;12222:18:1;;;12215:35;12267:19;;8389:85:0;11891:401:1;8389:85:0;8485:67;1044:10;8508:7;8517:34;8536:15;8517:16;:34;:::i;8485:67::-;-1:-1:-1;8572:4:0;;8207:377;-1:-1:-1;;;8207:377:0:o;6880:244::-;6983:15;;6958:4;;6983:15;;:23;;:15;:23;6975:66;;;;-1:-1:-1;;;6975:66:0;;12499:2:1;6975:66:0;;;12481:21:1;12538:2;12518:18;;;12511:30;12577:32;12557:18;;;12550:60;12627:18;;6975:66:0;12297:354:1;6975:66:0;7052:42;1044:10;7076:9;7087:6;7052:9;:42::i;21209:194::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;21302:9:::1;21298:98;21321:8;:15;21317:1;:19;21298:98;;;21379:5;21357:6;:19;21364:8;21373:1;21364:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;21357:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;21357:19:0;:27;;-1:-1:-1;;21357:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21338:3;::::1;::::0;::::1;:::i;:::-;;;;21298:98;;;;21209:194:::0;;:::o;20219:233::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20306:16:::1;::::0;-1:-1:-1;;;;;20306:29:0;;::::1;:16:::0;::::1;:29:::0;20298:60:::1;;;::::0;-1:-1:-1;;;20298:60:0;;10504:2:1;20298:60:0::1;::::0;::::1;10486:21:1::0;10543:2;10523:18;;;10516:30;-1:-1:-1;;;10562:18:1;;;10555:48;10620:18;;20298:60:0::1;10302:342:1::0;20298:60:0::1;20369:16;:28:::0;;-1:-1:-1;;;;;20369:28:0;;::::1;-1:-1:-1::0;;;;;;20369:28:0;;::::1;::::0;::::1;::::0;;:16:::1;20408:36:::0;:18:::1;:36;::::0;20219:233::o;20581:131::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20690:14:::1;3576:1;20690:2;:14;:::i;:::-;20681:23;::::0;:6;:23:::1;:::i;:::-;20660:18;:44:::0;-1:-1:-1;20581:131:0:o;22292:99::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;22359:15:::1;:24:::0;;-1:-1:-1;;22359:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22292:99::o;21023:174::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21109:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;:24;::::1;;:15;::::0;;::::1;:24;;::::0;21101:54:::1;;;::::0;-1:-1:-1;;;21101:54:0;;14241:2:1;21101:54:0::1;::::0;::::1;14223:21:1::0;14280:2;14260:18;;;14253:30;-1:-1:-1;;;14299:18:1;;;14292:47;14356:18;;21101:54:0::1;14039:341:1::0;21101:54:0::1;-1:-1:-1::0;;;;;21166:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;21166:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21023:174::o;10385:110::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10452:27:0::1;10482:5;10452:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;10452:35:0::1;::::0;;10385:110::o;1868:192::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1957:22:0;::::1;1949:73;;;::::0;-1:-1:-1;;;1949:73:0;;14587:2:1;1949:73:0::1;::::0;::::1;14569:21:1::0;14626:2;14606:18;;;14599:30;14665:34;14645:18;;;14638:62;-1:-1:-1;;;14716:18:1;;;14709:36;14762:19;;1949:73:0::1;14385:402:1::0;1949:73:0::1;2033:19;2043:8;2033:9;:19::i;:::-;1868:192:::0;:::o;20460:113::-;1589:7;1616:6;-1:-1:-1;;;;;1616:6:0;1044:10;1678:23;1670:68;;;;-1:-1:-1;;;1670:68:0;;;;;;;:::i;:::-;20551:14:::1;3576:1;20551:2;:14;:::i;:::-;20542:23;::::0;:6;:23:::1;:::i;:::-;20528:11;:37:::0;-1:-1:-1;20460:113:0:o;14701:335::-;-1:-1:-1;;;;;14794:19:0;;14786:68;;;;-1:-1:-1;;;14786:68:0;;14994:2:1;14786:68:0;;;14976:21:1;15033:2;15013:18;;;15006:30;15072:34;15052:18;;;15045:62;-1:-1:-1;;;15123:18:1;;;15116:34;15167:19;;14786:68:0;14792:400:1;14786:68:0;-1:-1:-1;;;;;14873:21:0;;14865:68;;;;-1:-1:-1;;;14865:68:0;;15399:2:1;14865:68:0;;;15381:21:1;15438:2;15418:18;;;15411:30;15477:34;15457:18;;;15450:62;-1:-1:-1;;;15528:18:1;;;15521:32;15570:19;;14865:68:0;15197:398:1;14865:68:0;-1:-1:-1;;;;;14944:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14996:32;;1961:25:1;;;14996:32:0;;1934:18:1;14996:32:0;;;;;;;14701:335;;;:::o;15046:1563::-;-1:-1:-1;;;;;15134:18:0;;15126:68;;;;-1:-1:-1;;;15126:68:0;;15802:2:1;15126:68:0;;;15784:21:1;15841:2;15821:18;;;15814:30;15880:34;15860:18;;;15853:62;-1:-1:-1;;;15931:18:1;;;15924:35;15976:19;;15126:68:0;15600:401:1;15126:68:0;-1:-1:-1;;;;;15213:16:0;;15205:64;;;;-1:-1:-1;;;15205:64:0;;16208:2:1;15205:64:0;;;16190:21:1;16247:2;16227:18;;;16220:30;16286:34;16266:18;;;16259:62;-1:-1:-1;;;16337:18:1;;;16330:33;16380:19;;15205:64:0;16006:399:1;15205:64:0;15297:1;15288:6;:10;15280:64;;;;-1:-1:-1;;;15280:64:0;;16612:2:1;15280:64:0;;;16594:21:1;16651:2;16631:18;;;16624:30;16690:34;16670:18;;;16663:62;-1:-1:-1;;;16741:18:1;;;16734:39;16790:19;;15280:64:0;16410:405:1;15280:64:0;15373:15;15383:4;15373:9;:15::i;:::-;15363:6;:25;;15355:86;;;;-1:-1:-1;;;15355:86:0;;17022:2:1;15355:86:0;;;17004:21:1;17061:2;17041:18;;;17034:30;17100:34;17080:18;;;17073:62;-1:-1:-1;;;17151:18:1;;;17144:47;17208:19;;15355:86:0;16820:413:1;15355:86:0;-1:-1:-1;;;;;15461:12:0;;;;;;:6;:12;;;;;;;;15460:13;:28;;;;-1:-1:-1;;;;;;15478:10:0;;;;;;:6;:10;;;;;;;;15477:11;15460:28;15452:54;;;;-1:-1:-1;;;15452:54:0;;17440:2:1;15452:54:0;;;17422:21:1;17479:2;17459:18;;;17452:30;-1:-1:-1;;;17498:18:1;;;17491:43;17551:18;;15452:54:0;17238:337:1;15452:54:0;-1:-1:-1;;;;;15533:24:0;;;;;;:18;:24;;;;;;;;15532:25;:52;;;;-1:-1:-1;;;;;;15562:22:0;;;;;;:18;:22;;;;;;;;15561:23;15532:52;:65;;;;-1:-1:-1;15589:8:0;;;;;;;15588:9;15532:65;15529:709;;;15631:11;;15621:6;:21;;15613:65;;;;-1:-1:-1;;;15613:65:0;;17782:2:1;15613:65:0;;;17764:21:1;17821:2;17801:18;;;17794:30;17860:33;17840:18;;;17833:61;17911:18;;15613:65:0;17580:355:1;15613:65:0;15706:4;;-1:-1:-1;;;;;15698:12:0;;;15706:4;;15698:12;;;;:31;;-1:-1:-1;15714:15:0;;;;15698:31;15695:261;;;-1:-1:-1;;;;;15788:16:0;;15749:18;15788:16;;;:10;:16;;;;;;15770:34;;:15;:34;:::i;:::-;15749:55;;15844:12;;15831:10;:25;15823:64;;;;-1:-1:-1;;;15823:64:0;;18142:2:1;15823:64:0;;;18124:21:1;18181:2;18161:18;;;18154:30;18220:28;18200:18;;;18193:56;18266:18;;15823:64:0;17940:350:1;15823:64:0;-1:-1:-1;;;;;;15906:16:0;;;;;;:10;:16;;;;;15925:15;15906:34;;15695:261;15979:4;;-1:-1:-1;;;;;15973:10:0;;;15979:4;;15973:10;;;;:29;;-1:-1:-1;15987:15:0;;;;15973:29;15970:257;;;-1:-1:-1;;;;;16062:14:0;;16022:19;16062:14;;;:10;:14;;;;;;16044:32;;:15;:32;:::i;:::-;16022:54;;16117:12;;16103:11;:26;16095:65;;;;-1:-1:-1;;;16095:65:0;;18142:2:1;16095:65:0;;;18124:21:1;18181:2;18161:18;;;18154:30;18220:28;18200:18;;;18193:56;18266:18;;16095:65:0;17940:350:1;16095:65:0;-1:-1:-1;;;;;;16179:14:0;;;;;;:10;:14;;;;;16196:15;16179:32;;15970:257;16258:12;16301:18;;16273:24;16291:4;16273:9;:24::i;:::-;16334:8;;-1:-1:-1;;16273:46:0;;-1:-1:-1;16334:8:0;;;;;16333:9;:24;;;;-1:-1:-1;16346:11:0;;;;16333:24;:35;;;;;16361:7;16333:35;:51;;;;-1:-1:-1;16380:4:0;;-1:-1:-1;;;;;16372:12:0;;;16380:4;;16372:12;;16333:51;:80;;;;-1:-1:-1;;;;;;16389:24:0;;;;;;:18;:24;;;;;;;;16388:25;16333:80;:107;;;;-1:-1:-1;;;;;;16418:22:0;;;;;;:18;:22;;;;;;;;16417:23;16333:107;16330:172;;;16456:34;16471:18;;16456:14;:34::i;:::-;-1:-1:-1;;;;;16549:24:0;;;;;;:18;:24;;;;;;16514:87;;16529:4;;16535:2;;16539:6;;16549:24;;;:50;;-1:-1:-1;;;;;;16577:22:0;;;;;;:18;:22;;;;;;;;16549:50;16547:53;16514:14;:87::i;13987:158::-;14028:7;14049:15;14066;14085:19;:17;:19::i;:::-;14048:56;;-1:-1:-1;14048:56:0;-1:-1:-1;14122:15:0;14048:56;;14122:15;:::i;:::-;14115:22;;;;13987:158;:::o;12215:407::-;12288:36;;:::i;:::-;12349:29;12361:7;12370;12349:11;:29::i;:::-;12337:41;;12535:52;12547:9;12558:7;12567;12576:10;:8;:10::i;:::-;12535:11;:52::i;:::-;12516:15;;;12389:198;12494:20;;;12389:198;12472:20;;;12389:198;12452:18;;;12389:198;12436:14;;;12389:198;12409:25;;;12389:198;;;12215:407;;;;:::o;2068:173::-;2124:16;2143:6;;-1:-1:-1;;;;;2160:17:0;;;-1:-1:-1;;;;;;2160:17:0;;;;;;2193:40;;2143:6;;;;;;;2193:40;;2124:16;2193:40;2113:128;2068:173;:::o;17724:1181::-;5493:8;:15;;-1:-1:-1;;5493:15:0;;;;;17901;;17885:13;;17867:15;;5493;;17901;17867:31:::1;::::0;::::1;:::i;:::-;:49;;;;:::i;:::-;17866:56;::::0;17921:1:::1;17866:56;:::i;:::-;17844:78;;17933:32;17995:11;17977:5;:15;;;17968:6;:24;;;;:::i;:::-;:38;;;;:::i;:::-;17933:73:::0;-1:-1:-1;18017:14:0::1;18034:33;17933:73:::0;18034:6;:33:::1;:::i;:::-;18017:50:::0;-1:-1:-1;18105:21:0::1;18139:24;18017:50:::0;18139:16:::1;:24::i;:::-;18176:20;18199:38;18223:14:::0;18199:21:::1;:38;:::i;:::-;18299:15:::0;;18176:61;;-1:-1:-1;18248:19:0::1;::::0;18285:29:::1;::::0;:11;:29:::1;:::i;:::-;18269:46;::::0;:12;:46:::1;:::i;:::-;18372:15:::0;;18248:67;;-1:-1:-1;18326:29:0::1;::::0;18358::::1;::::0;18248:67;18358:29:::1;:::i;:::-;18326:61:::0;-1:-1:-1;18403:25:0;;18400:158:::1;;18485:61;18498:24;18524:21;18485:12;:61::i;:::-;18609:13:::0;;18570:18:::1;::::0;18591:15:::1;:11:::0;18605:1:::1;18591:15;:::i;:::-;:31;;;;:::i;:::-;18570:52:::0;-1:-1:-1;18636:14:0;;18633:89:::1;;18674:14;::::0;18666:44:::1;::::0;-1:-1:-1;;;;;18674:14:0;;::::1;::::0;18666:44;::::1;;;::::0;18699:10;;18674:14:::1;18666:44:::0;18674:14;18666:44;18699:10;18674:14;18666:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18633:89;18775:15:::0;;18734:20:::1;::::0;18757:15:::1;:11:::0;18771:1:::1;18757:15;:::i;:::-;:33;;;;:::i;:::-;18734:56:::0;-1:-1:-1;18804:16:0;;18801:95:::1;;18844:16;::::0;18836:48:::1;::::0;-1:-1:-1;;;;;18844:16:0;;::::1;::::0;18836:48;::::1;;;::::0;18871:12;;18844:16:::1;18836:48:::0;18844:16;18836:48;18871:12;18844:16;18836:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18801:95;-1:-1:-1::0;;5531:8:0;:16;;-1:-1:-1;;5531:16:0;;;-1:-1:-1;;;;;;;;17724:1181:0:o;16692:1024::-;16803:28;16834;16845:7;16854;16834:10;:28::i;:::-;-1:-1:-1;;;;;16879:19:0;;;;;;:11;:19;;;;;;16803:59;;-1:-1:-1;16879:19:0;;16875:115;;;-1:-1:-1;;;;;16955:15:0;;;;;;:7;:15;;;;;;:23;;16971:7;;16955:23;:::i;:::-;-1:-1:-1;;;;;16937:15:0;;;;;;:7;:15;;;;;:41;16875:115;-1:-1:-1;;;;;17004:22:0;;;;;;:11;:22;;;;;;;;17000:130;;;17101:17;;;;-1:-1:-1;;;;;17082:18:0;;;;;;:7;:18;;;;;;:36;;17101:17;17082:36;:::i;:::-;-1:-1:-1;;;;;17061:18:0;;;;;;:7;:18;;;;;:57;17000:130;17176:9;;-1:-1:-1;;;;;17160:15:0;;17176:9;17160:15;;;:7;:15;;;;;;:25;;17176:9;17160:25;:::i;:::-;-1:-1:-1;;;;;17142:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17236:17;;;17217:18;;;;;;;;;;:36;;17236:17;17217:36;:::i;:::-;-1:-1:-1;;;;;17196:18:0;;;;;;:7;:18;;;;;;;:57;;;;17286:6;;;17294;;;;17274:27;;17286:6;17274:11;:27::i;:::-;17312:41;17327:1;:12;;;17340:1;:12;;;17312:14;:41::i;:::-;17364:42;17379:1;:12;;;17393:1;:12;;;17364:14;:42::i;:::-;17417:36;17430:1;:10;;;17442:1;:10;;;17417:12;:36::i;:::-;17464:27;17474:1;:7;;;17483:1;:7;;;17464:9;:27::i;:::-;4146:42;-1:-1:-1;;;;;17509:38:0;17518:6;-1:-1:-1;;;;;17509:38:0;;17539:1;:7;;;17509:38;;;;1961:25:1;;1949:2;1934:18;;1815:177;17509:38:0;;;;;;;;17580:9;-1:-1:-1;;;;;17563:46:0;17572:6;-1:-1:-1;;;;;17563:46:0;;17591:1;:17;;;17563:46;;;;1961:25:1;;1949:2;1934:18;;1815:177;17563:46:0;;;;;;;;17650:4;-1:-1:-1;;;;;17625:73:0;17634:6;-1:-1:-1;;;;;17625:73:0;;17685:1;:12;;;17672:1;:10;;;17657:1;:12;;;:25;;;;:::i;:::-;:40;;;;:::i;:::-;17625:73;;1961:25:1;;;1949:2;1934:18;17625:73:0;;;;;;;16790:926;16692:1024;;;;:::o;14153:540::-;14250:7;;14286;;14203;;;;;14304:279;14328:9;:16;14324:20;;14304:279;;;14394:7;14370;:21;14378:9;14388:1;14378:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14378:12:0;14370:21;;;;;;;;;;;;;:31;;:66;;;14429:7;14405;:21;14413:9;14423:1;14413:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14413:12:0;14405:21;;;;;;;;;;;;;:31;14370:66;14366:97;;;14446:7;;14455;;14438:25;;;;;;;14153:540;;:::o;14366:97::-;14496:7;:21;14504:9;14514:1;14504:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14504:12:0;14496:21;;;;;;;;;;;;;14488:29;;:7;:29;:::i;:::-;14478:39;;14550:7;:21;14558:9;14568:1;14558:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14558:12:0;14550:21;;;;;;;;;;;;;14542:29;;:7;:29;:::i;:::-;14532:39;-1:-1:-1;14346:3:0;;;;:::i;:::-;;;;14304:279;;;;14615:7;;14607;;:15;;;;:::i;:::-;14597:7;:25;14593:56;;;14632:7;;14641;;14624:25;;;;;;14153:540;;:::o;14593:56::-;14668:7;;14677;;-1:-1:-1;14153:540:0;-1:-1:-1;14153:540:0:o;12630:568::-;12704:28;;:::i;:::-;12751:7;12747:86;;12773:17;;;:27;;;12813:8;;12747:86;12870:5;:9;12880:3;;12862:17;;:7;:17;:::i;:::-;:21;;;;:::i;:::-;12853:6;;;:30;12915:13;;12929:3;;12907:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;12894:10;;;:38;12966:15;;12982:3;;12958:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12943:12;;;:42;13019:15;;13035:3;;13011:23;;:7;:23;:::i;:::-;:27;;;;:::i;:::-;12996:12;;;:42;13067:10;;13078:3;;13059:18;;:7;:18;:::i;:::-;:22;;;;:::i;:::-;13049:7;;;:32;;;13151:12;;;;13138;;;;13127:10;;;;13120:6;;;;13112:14;;:7;:14;:::i;:::-;:25;;;;:::i;:::-;:38;;;;:::i;:::-;:51;;;;:::i;:::-;:59;;;;:::i;:::-;13092:17;;;:79;12630:568;;;;:::o;13206:773::-;13331:15;;;;;;;13481:19;13489:11;13481:7;:19;:::i;:::-;13471:29;;13517:7;13513:73;;-1:-1:-1;13546:7:0;;-1:-1:-1;13564:1:0;;-1:-1:-1;13564:1:0;;-1:-1:-1;13564:1:0;;-1:-1:-1;13564:1:0;;-1:-1:-1;13564:1:0;13539:35;;13513:73;13612:11;13605:1;:6;;;:18;;;;:::i;:::-;13598:25;;13656:11;13645:1;:10;;;:22;;;;:::i;:::-;13634:33;;13704:11;13691:1;:12;;;:24;;;;:::i;:::-;13678:37;;13752:11;13739:1;:12;;;:24;;;;:::i;:::-;13726:37;;13790:11;13782:1;:7;;;:19;;;;:::i;:::-;13774:27;-1:-1:-1;13774:27:0;13864:10;13853;13844:8;13831:12;13839:4;13831:7;:12;:::i;:::-;:21;;;;:::i;:::-;:32;;;;:::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13812:68;;13206:773;;;;;;;;;;;;;:::o;19416:562::-;19566:16;;;19580:1;19566:16;;;;;;;;19542:21;;19566:16;;;;;;;;;;-1:-1:-1;19566:16:0;19542:40;;19611:4;19593;19598:1;19593:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19593:23:0;;;-1:-1:-1;;;;;19593:23:0;;;;;19637:6;;;;;;;;;-1:-1:-1;;;;;19637:6:0;-1:-1:-1;;;;;19637:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19627:4;19632:1;19627:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19627:23:0;;;:7;;;;;;;;;:23;19695:6;;19663:53;;19680:4;;19695:6;;;;19704:11;19663:8;:53::i;:::-;19755:6;;:215;;-1:-1:-1;;;19755:215:0;;:6;;;;-1:-1:-1;;;;;19755:6:0;;:57;;:215;;19827:11;;19853:1;;19897:4;;19924;;19944:15;;19755:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19471:507;19416:562;:::o;18913:495::-;19093:6;;19061:53;;19078:4;;19093:6;;;-1:-1:-1;;;;;19093:6:0;19102:11;19061:8;:53::i;:::-;19157:6;;-1:-1:-1;;;;;19157:6:0;;;;;:22;19187:9;19220:4;19240:11;19266:1;;19352:7;1589;1616:6;-1:-1:-1;;;;;1616:6:0;;1543:87;19352:7;19157:243;;;;;;-1:-1:-1;;;;;;19157:243:0;;;-1:-1:-1;;;;;19895:15:1;;;19157:243:0;;;19877:34:1;19927:18;;;19920:34;;;;19970:18;;;19963:34;;;;20013:18;;;20006:34;20077:15;;;20056:19;;;20049:44;19374:15:0;20109:19:1;;;20102:35;19811:19;;19157:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18913:495;;:::o;10972:123::-;11050:4;11040:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;11065:11:0;:22;;11083:4;;11065:11;:15;;:22;;11083:4;;11065:22;:::i;:::-;;;;-1:-1:-1;;;;10972:123:0:o;11103:284::-;11210:10;11186:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11256:4:0;11236:26;;;;:11;:26;;;;;;;;11233:101;;;11304:4;11288:22;;;;:7;:22;;;;;:34;;11312:10;;11288:22;:34;;11312:10;;11288:34;:::i;:::-;;;;-1:-1:-1;;11233:101:0;11360:4;11344:22;;;;:7;:22;;;;;:35;;11369:10;;11344:22;:35;;11369:10;;11344:35;:::i;11395:284::-;11502:10;11478:11;:21;;;:34;;;;;;;:::i;11687:270::-;11786:8;11764:11;:19;;;:30;;;;;;;:::i;11965:242::-;12051:5;12032:11;:16;;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;4146:42:0;12072:24;;:11;:24;;;;;;12069:92;;;4146:42;12122:20;;;;:7;:20;;;:27;;12144:5;;12122:20;:27;;12144:5;;12122:27;:::i;:::-;;;;-1:-1:-1;;12069:92:0;4146:42;12171:20;;;;:7;:20;;;:28;;12194:5;;12171:20;:28;;12194:5;;12171:28;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:456::-;1431:6;1439;1447;1500:2;1488:9;1479:7;1475:23;1471:32;1468:52;;;1516:1;1513;1506:12;1468:52;1555:9;1542:23;1574:31;1599:5;1574:31;:::i;:::-;1624:5;-1:-1:-1;1681:2:1;1666:18;;1653:32;1694:33;1653:32;1694:33;:::i;:::-;1354:456;;1746:7;;-1:-1:-1;;;1800:2:1;1785:18;;;;1772:32;;1354:456::o;2205:180::-;2264:6;2317:2;2305:9;2296:7;2292:23;2288:32;2285:52;;;2333:1;2330;2323:12;2285:52;-1:-1:-1;2356:23:1;;2205:180;-1:-1:-1;2205:180:1:o;2579:247::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;2746:9;2733:23;2765:31;2790:5;2765:31;:::i;2831:388::-;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;3015:9;3002:23;3034:31;3059:5;3034:31;:::i;:::-;3084:5;-1:-1:-1;3141:2:1;3126:18;;3113:32;3154:33;3113:32;3154:33;:::i;:::-;3206:7;3196:17;;;2831:388;;;;;:::o;3224:118::-;3310:5;3303:13;3296:21;3289:5;3286:32;3276:60;;3332:1;3329;3322:12;3347:128;3412:20;;3441:28;3412:20;3441:28;:::i;3480:309::-;3545:6;3553;3606:2;3594:9;3585:7;3581:23;3577:32;3574:52;;;3622:1;3619;3612:12;3574:52;3658:9;3645:23;3635:33;;3718:2;3707:9;3703:18;3690:32;3731:28;3753:5;3731:28;:::i;3794:454::-;3889:6;3897;3905;3913;3921;3974:3;3962:9;3953:7;3949:23;3945:33;3942:53;;;3991:1;3988;3981:12;3942:53;-1:-1:-1;;4014:23:1;;;4084:2;4069:18;;4056:32;;-1:-1:-1;4135:2:1;4120:18;;4107:32;;4186:2;4171:18;;4158:32;;-1:-1:-1;4237:3:1;4222:19;4209:33;;-1:-1:-1;3794:454:1;-1:-1:-1;3794:454:1:o;4721:309::-;4786:6;4794;4847:2;4835:9;4826:7;4822:23;4818:32;4815:52;;;4863:1;4860;4853:12;4815:52;4902:9;4889:23;4921:28;4943:5;4921:28;:::i;5035:241::-;5091:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:52;;;5160:1;5157;5150:12;5112:52;5199:9;5186:23;5218:28;5240:5;5218:28;:::i;5281:127::-;5342:10;5337:3;5333:20;5330:1;5323:31;5373:4;5370:1;5363:15;5397:4;5394:1;5387:15;5413:1191;5503:6;5511;5564:2;5552:9;5543:7;5539:23;5535:32;5532:52;;;5580:1;5577;5570:12;5532:52;5620:9;5607:23;5649:18;5690:2;5682:6;5679:14;5676:34;;;5706:1;5703;5696:12;5676:34;5744:6;5733:9;5729:22;5719:32;;5789:7;5782:4;5778:2;5774:13;5770:27;5760:55;;5811:1;5808;5801:12;5760:55;5847:2;5834:16;5869:4;5892:2;5888;5885:10;5882:36;;;5898:18;;:::i;:::-;5944:2;5941:1;5937:10;5976:2;5970:9;6039:2;6035:7;6030:2;6026;6022:11;6018:25;6010:6;6006:38;6094:6;6082:10;6079:22;6074:2;6062:10;6059:18;6056:46;6053:72;;;6105:18;;:::i;:::-;6141:2;6134:22;6191:18;;;6225:15;;;;-1:-1:-1;6267:11:1;;;6263:20;;;6295:19;;;6292:39;;;6327:1;6324;6317:12;6292:39;6351:11;;;;6371:148;6387:6;6382:3;6379:15;6371:148;;;6453:23;6472:3;6453:23;:::i;:::-;6441:36;;6404:12;;;;6497;;;;6371:148;;;6538:6;-1:-1:-1;6563:35:1;;-1:-1:-1;6579:18:1;;;6563:35;:::i;:::-;6553:45;;;;;;5413:1191;;;;;:::o;6609:382::-;6674:6;6682;6735:2;6723:9;6714:7;6710:23;6706:32;6703:52;;;6751:1;6748;6741:12;6703:52;6790:9;6777:23;6809:31;6834:5;6809:31;:::i;:::-;6859:5;-1:-1:-1;6916:2:1;6901:18;;6888:32;6929:30;6888:32;6929:30;:::i;7219:356::-;7421:2;7403:21;;;7440:18;;;7433:30;7499:34;7494:2;7479:18;;7472:62;7566:2;7551:18;;7219:356::o;7859:245::-;7926:6;7979:2;7967:9;7958:7;7954:23;7950:32;7947:52;;;7995:1;7992;7985:12;7947:52;8027:9;8021:16;8046:28;8068:5;8046:28;:::i;8518:127::-;8579:10;8574:3;8570:20;8567:1;8560:31;8610:4;8607:1;8600:15;8634:4;8631:1;8624:15;8650:128;8717:9;;;8738:11;;;8735:37;;;8752:18;;:::i;9194:217::-;9234:1;9260;9250:132;;9304:10;9299:3;9295:20;9292:1;9285:31;9339:4;9336:1;9329:15;9367:4;9364:1;9357:15;9250:132;-1:-1:-1;9396:9:1;;9194:217::o;9768:127::-;9829:10;9824:3;9820:20;9817:1;9810:31;9860:4;9857:1;9850:15;9884:4;9881:1;9874:15;9900:127;9961:10;9956:3;9952:20;9949:1;9942:31;9992:4;9989:1;9982:15;10016:4;10013:1;10006:15;10032:135;10071:3;10092:17;;;10089:43;;10112:18;;:::i;:::-;-1:-1:-1;10159:1:1;10148:13;;10032:135::o;10172:125::-;10237:9;;;10258:10;;;10255:36;;;10271:18;;:::i;11365:168::-;11405:7;11471:1;11467;11463:6;11459:14;11456:1;11453:21;11448:1;11441:9;11434:17;11430:45;11427:71;;;11478:18;;:::i;:::-;-1:-1:-1;11518:9:1;;11365:168::o;12656:422::-;12745:1;12788:5;12745:1;12802:270;12823:7;12813:8;12810:21;12802:270;;;12882:4;12878:1;12874:6;12870:17;12864:4;12861:27;12858:53;;;12891:18;;:::i;:::-;12941:7;12931:8;12927:22;12924:55;;;12961:16;;;;12924:55;13040:22;;;;13000:15;;;;12802:270;;;12806:3;12656:422;;;;;:::o;13083:806::-;13132:5;13162:8;13152:80;;-1:-1:-1;13203:1:1;13217:5;;13152:80;13251:4;13241:76;;-1:-1:-1;13288:1:1;13302:5;;13241:76;13333:4;13351:1;13346:59;;;;13419:1;13414:130;;;;13326:218;;13346:59;13376:1;13367:10;;13390:5;;;13414:130;13451:3;13441:8;13438:17;13435:43;;;13458:18;;:::i;:::-;-1:-1:-1;;13514:1:1;13500:16;;13529:5;;13326:218;;13628:2;13618:8;13615:16;13609:3;13603:4;13600:13;13596:36;13590:2;13580:8;13577:16;13572:2;13566:4;13563:12;13559:35;13556:77;13553:159;;;-1:-1:-1;13665:19:1;;;13697:5;;13553:159;13744:34;13769:8;13763:4;13744:34;:::i;:::-;13814:6;13810:1;13806:6;13802:19;13793:7;13790:32;13787:58;;;13825:18;;:::i;:::-;13863:20;;13083:806;-1:-1:-1;;;13083:806:1:o;13894:140::-;13952:5;13981:47;14022:4;14012:8;14008:19;14002:4;13981:47;:::i;18295:251::-;18365:6;18418:2;18406:9;18397:7;18393:23;18389:32;18386:52;;;18434:1;18431;18424:12;18386:52;18466:9;18460:16;18485:31;18510:5;18485:31;:::i;18551:980::-;18813:4;18861:3;18850:9;18846:19;18892:6;18881:9;18874:25;18918:2;18956:6;18951:2;18940:9;18936:18;18929:34;18999:3;18994:2;18983:9;18979:18;18972:31;19023:6;19058;19052:13;19089:6;19081;19074:22;19127:3;19116:9;19112:19;19105:26;;19166:2;19158:6;19154:15;19140:29;;19187:1;19197:195;19211:6;19208:1;19205:13;19197:195;;;19276:13;;-1:-1:-1;;;;;19272:39:1;19260:52;;19367:15;;;;19332:12;;;;19308:1;19226:9;19197:195;;;-1:-1:-1;;;;;;;19448:32:1;;;;19443:2;19428:18;;19421:60;-1:-1:-1;;;19512:3:1;19497:19;19490:35;19409:3;18551:980;-1:-1:-1;;;18551:980:1:o;20148:306::-;20236:6;20244;20252;20305:2;20293:9;20284:7;20280:23;20276:32;20273:52;;;20321:1;20318;20311:12;20273:52;20350:9;20344:16;20334:26;;20400:2;20389:9;20385:18;20379:25;20369:35;;20444:2;20433:9;20429:18;20423:25;20413:35;;20148:306;;;;;:::o
Swarm Source
ipfs://14ba7824deb89857d456b126f9139d7d87405118de96c7ee7f95635d86c93577
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.