Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000,000,000 SHIBANANA
Holders
97
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
445,900,000,000 SHIBANANAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SHIBANANA
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-05 */ /** 🍌🍌 SHIBANANA 🍌🍌 ░██████╗██╗░░██╗██╗██████╗░░█████╗░███╗░░██╗░█████╗░███╗░░██╗░█████╗░ ██╔════╝██║░░██║██║██╔══██╗██╔══██╗████╗░██║██╔══██╗████╗░██║██╔══██╗ ╚█████╗░███████║██║██████╦╝███████║██╔██╗██║███████║██╔██╗██║███████║ ░╚═══██╗██╔══██║██║██╔══██╗██╔══██║██║╚████║██╔══██║██║╚████║██╔══██║ ██████╔╝██║░░██║██║██████╦╝██║░░██║██║░╚███║██║░░██║██║░╚███║██║░░██║ ╚═════╝░╚═╝░░╚═╝╚═╝╚═════╝░╚═╝░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝ https://t.me/shibanana http://shibbanana.com/ https://twitter.com/shibananaerc */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } contract SHIBANANA is IERC20, Context, ERC20Ownable { using SafeMath for uint256; address dead = 0x000000000000000000000000000000000000dEaD; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping (address => uint) private _setCoolDown; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _maxWalletExclude; mapping (address => bool) private _isBot; mapping(address => bool) public boughtEarly; uint256 public tradingActiveBlock = 0; uint256 public earlyBuyPenaltyEnd; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1e14 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _maxTxAmount = _tTotal; uint256 private _tFeeTotal; uint256 private _maxWalletSize = 3000000000000 * 10**18; string private constant _name = "SHIBANANA"; string private constant _tick = "SHIBANANA"; uint8 private constant _deci = 18; uint8 private _refTax = 0; uint8 private _previousRefTax = _refTax; uint8 private _burnTax = 0; uint8 private _previouseBurnTax = _burnTax; uint8 private _liqTax = 2; uint8 private _previousLiqTax = _liqTax; uint8 private _devTax = 4; uint8 private _previousDevTax = _devTax; uint8 private _buyBack = 3; uint8 private _previousBuyBack = _buyBack; uint8 private _liqDiv = _liqTax + _devTax + _buyBack + _burnTax; uint256 private burnTokens; uint256 private MarketingTokens; uint256 private LiquidityTokens; uint256 private BuyBackTokens; IUniswapV2Router02 private pcsV2Router; address private pcsV2Pair; address payable private feeWallet; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; bool private coolDownEnabled = false; bool private _firstTrans = true; bool private _limitBuys = false; bool private _clearClog = false; bool private _maxWalletOn = false; uint256 private numTokensSellToAddToLiquidity; uint256 private buyBackUpperLimit = 1 * 10**18; event MaxTxAmountUpdated(uint _maxTxAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event updateMxAmt(uint256 mxAmt); event BoughtEarly(address indexed sniper); event RemovedSniper(address indexed notsnipersupposedly); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; feeWallet = payable(0x8eD056EFc048ae512bd0e80E16738d6677C50529); numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000); _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _maxWalletExclude[address(this)] = true; _maxWalletExclude[_msgSender()] = true; _maxWalletExclude[address(dead)] = true; addBot(0x41B0320bEb1563A048e2431c8C1cC155A0DFA967); addBot(0x91B305F0890Fd0534B66D8d479da6529C35A3eeC); emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure override returns (string memory) { return _name; } function symbol() public pure override returns (string memory) { return _tick; } function decimals() public pure override returns (uint8) { return _deci; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setCooldownEnabled(bool onoff) external onlyOwner() { coolDownEnabled = onoff; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } receive() external payable {} function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { burnTokens += tLiquidity * _burnTax / _liqDiv; MarketingTokens += tLiquidity * _devTax / _liqDiv; LiquidityTokens += tLiquidity * _liqTax / _liqDiv; BuyBackTokens += tLiquidity * _buyBack / _liqDiv; uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_refTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_devTax + _burnTax + _liqTax + _buyBack).div(10**2); } function removeAllFee() private { if (_refTax == 0 && _liqTax == 0 && _devTax == 0 && _burnTax == 0 && _buyBack == 0) return; _previousRefTax = _refTax; _previousLiqTax = _liqTax; _previousDevTax = _devTax; _previouseBurnTax = _burnTax; _previousBuyBack = _buyBack; _refTax = 0; _liqTax = 0; _devTax = 0; _burnTax = 0; _buyBack = 0; } function restoreAllFee() private { _refTax = _previousRefTax; _liqTax = _previousLiqTax; _devTax = _previousDevTax; _burnTax = _previouseBurnTax; _buyBack = _previousBuyBack; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to 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 zero address"); require(to != address(0), "ERC20: transfer to zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBot[from]); require(!boughtEarly[from] || earlyBuyPenaltyEnd <= block.timestamp, "Snipers can't transfer tokens to sell cheaper until penalty timeframe is over. DM a Mod."); if (_maxWalletOn == true && ! _maxWalletExclude[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Max amount of tokens for wallet reached"); } if (_limitBuys == true && from == pcsV2Pair) { require(amount <= 750000000000 * 10**18, "Limits are in place, please lower buying amount"); } if (_clearClog == true && to != owner() && from != pcsV2Pair) { require(amount <= 0 * 10**18); } if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) { require(amount <= _maxTxAmount); require(_setCoolDown[to] < block.timestamp); _setCoolDown[to] = block.timestamp + (30 seconds); } if(_firstTrans == true) { IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pcsV2Router = _pcsV2Router; pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH()); tradingActiveBlock = block.number; earlyBuyPenaltyEnd = block.timestamp + 72 hours; _maxWalletExclude[address(pcsV2Pair)] = true; _maxWalletExclude[address(pcsV2Router)] = true; _limitBuys = true; _firstTrans = false; _maxWalletOn = true; } if(from != owner() && to != pcsV2Pair && block.number == tradingActiveBlock){ boughtEarly[to] = true; emit BoughtEarly(to); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) { if (contractTokenBalance >= numTokensSellToAddToLiquidity) { swapBackLiq(); } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if(boughtEarly[from] && earlyBuyPenaltyEnd > block.timestamp){ _refTax = _refTax * 5; _liqTax = _liqTax * 5; _devTax = _devTax * 5; _buyBack = _buyBack * 5; } _tokenTransfer(from, to, amount, takeFee); } function buyBackTokens(uint256 amount) public onlyOwner lockTheSwap { if (amount <= BuyBackTokens) { swapETHForTokens(amount); } } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = pcsV2Router.WETH(); path[1] = address(this); // make the swap pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, dead, // Burn address block.timestamp.add(300) ); } function addBot(address _user) public onlyOwner { require(_user != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); require(!_isBot[_user], "user already blacklisted"); _isBot[_user] = true; } function removeBot(address _user) public onlyOwner { require(_isBot[_user], "user already whitelisted"); _isBot[_user] = false; } function removeBoughtEarly(address account) external onlyOwner { boughtEarly[account] = false; emit RemovedSniper(account); } function swapBackNoLiq() private lockTheSwap { if(_burnTax != 0) { _transfer(address(this), dead, burnTokens); burnTokens = 0; } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = MarketingTokens + BuyBackTokens; uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap); MarketingTokens = 0; BuyBackTokens = 0; (bool success,) = address(feeWallet).call{value: ethForMarketing}(""); if(address(this).balance.sub(initialETHBalance) > 0 * 10**18){ (success,) = address(feeWallet).call{value: address(this).balance.sub(initialETHBalance)}(""); } } // FOR USE IF TAKING LIQUIDITY AND ADDING BACK TO POOL function swapBackLiq() private lockTheSwap { if(_burnTax != 0) { _transfer(address(this), dead, burnTokens); burnTokens = 0; } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = MarketingTokens + LiquidityTokens + BuyBackTokens; // Halve the amount of liquidity tokens uint256 tokensForLiquidity = LiquidityTokens.div(2); uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing); LiquidityTokens = 0; MarketingTokens = 0; (bool success,) = address(feeWallet).call{value: ethForMarketing}(""); addLiquidity(tokensForLiquidity, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); if(address(this).balance > 0 * 10**18){ (success,) = address(feeWallet).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = pcsV2Router.WETH(); _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp.add(300) ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(pcsV2Router), tokenAmount); pcsV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp.add(300) ); } // Initiate true from deployment function Initiate() external onlyOwner { _firstTrans = true; } function TaxSwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function TaxSwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function LimitBuysOn() external onlyOwner { _limitBuys = true; } function LimitBuysOff() external onlyOwner { _limitBuys = false; } function turnMaxWalletOn() external onlyOwner { _maxWalletOn = true; } function turnMaxWalletOff() external onlyOwner { _maxWalletOn = false; } // FOR USE TO CLEAR IF CLOGS OCCUR IN THE ROUTER // STOPS ALL TRANSACTIONS SO OWNER CAN TRANSFER 1 TOKEN TO CLEAR CLOG function ClearClog() external onlyOwner { _clearClog = true; } function ClearClogReset() external onlyOwner { _clearClog = false; } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"uint256","name":"mxAmt","type":"uint256"}],"name":"updateMxAmt","type":"event"},{"inputs":[],"name":"ClearClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearClogReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","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":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b03191661dead1790556000600b55620000396d04ee2d6d415b85acef810000000060001962000545565b62000047906000196200052b565b600e556d04ee2d6d415b85acef8100000000600f556c25dd85d670d35ec9bec00000006011556012805460ff60481b1961ffff60381b1961ffff60281b1964ffffffffff19841660ff6201000062ffffff19909616869004811663010000000260ff60201b19169190911764020000000017918216640100000000928390048216650100000000000260ff60301b19161766040000000000001792831666010000000000009384900482166701000000000000000260ff60401b191617680300000000000000001793841668010000000000000000948590048216690100000000000000000002179586905593850484169492830484169362000155939283048116929190910416620004ca565b620001619190620004ca565b6200016d9190620004ca565b6012805460ff929092166a01000000000000000000000260ff60501b199092169190911790556019805465ffffffffffff60a81b19166201000160a81b179055670de0b6b3a7640000601b55348015620001c657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e5433600090815260026020908152604090912091909155601980546001600160a01b031916738ed056efc048ae512bd0e80e16738d6677c505291790556200028b906103e89062000277906d04ee2d6d415b85acef8100000000906001906200103c6200037f821b17901c565b6200039460201b620010481790919060201c565b601a553360008181526006602090815260408083208054600160ff199182168117909255308552828520805482168317905560089093528184208054841682179055938352808320805483168517905583546001600160a01b0316835290912080549091169091179055620003147341b0320beb1563a048e2431c8c1cc155a0dfa967620003a2565b620003337391b305f0890fd0534b66d8d479da6529c35a3eec620003a2565b6040516d04ee2d6d415b85acef8100000000815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000588565b60006200038d828462000509565b9392505050565b60006200038d8284620004f2565b6000546001600160a01b03163314620004105760405162461bcd60e51b815260206004820152602560248201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060448201526437bbb732b960d91b60648201526084015b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156200043b57600080fd5b6001600160a01b03811660009081526009602052604090205460ff1615620004a65760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c69737465640000000000000000604482015260640162000407565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b600060ff821660ff84168060ff03821115620004ea57620004ea6200055c565b019392505050565b60008262000504576200050462000572565b500490565b60008160001904831182151516156200052657620005266200055c565b500290565b6000828210156200054057620005406200055c565b500390565b60008262000557576200055762000572565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b612f5f80620005986000396000f3fe60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026b57806318160ddd1461029b5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600981526853484942414e414e4160b81b602082015290516102629190612ce9565b60405180910390f35b34801561027757600080fd5b5061028b610286366004612bb6565b6106c7565b6040519015158152602001610262565b3480156102a757600080fd5b506d04ee2d6d415b85acef81000000005b604051908152602001610262565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028b6102f7366004612b75565b6106de565b34801561030857600080fd5b506102b8610317366004612bfd565b610747565b34801561032857600080fd5b5060405160128152602001610262565b34801561034457600080fd5b5061028b610353366004612bb6565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612b02565b610832565b34801561039b57600080fd5b506102b86103aa366004612c16565b610880565b3480156103bb57600080fd5b5061028b6103ca366004612b02565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612be2565b610919565b34801561041457600080fd5b5061036d610423366004612b02565b610961565b34801561043457600080fd5b5061036d6109d4565b34801561044957600080fd5b5061036d610458366004612b02565b610a0d565b34801561046957600080fd5b5061036d610ac0565b34801561047e57600080fd5b5061036d610af9565b34801561049357600080fd5b5061036d610b32565b3480156104a857600080fd5b506102b86104b7366004612b02565b610b71565b3480156104c857600080fd5b5061036d610bd0565b3480156104dd57600080fd5b5061036d610c44565b3480156104f257600080fd5b5061036d610c7d565b34801561050757600080fd5b5061028b610516366004612b02565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028b610546366004612b02565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610262565b34801561059857600080fd5b5061028b6105a7366004612bb6565b610cbc565b3480156105b857600080fd5b5061028b6105c7366004612bb6565b610d0b565b3480156105d857600080fd5b5061036d610d18565b3480156105ed57600080fd5b506102b86105fc366004612b3c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612b02565b610d57565b34801561066957600080fd5b5061036d610e46565b34801561067e57600080fd5b5061036d610ebd565b34801561069357600080fd5b5061036d6106a2366004612bfd565b610efc565b3480156106b357600080fd5b5061036d6106c2366004612b02565b610f5b565b60006106d4338484611054565b5060015b92915050565b60006106eb848484611161565b61073d843361073885604051806060016040528060288152602001612edd602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a30565b611054565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5c565b90506107b68382611048565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7f565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006d04ee2d6d415b85acef81000000008311156108e05760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108ff5760006108f084611a8b565b509395506106d8945050505050565b600061090a84611a8b565b509295506106d8945050505050565b6000546001600160a01b031633146109435760405162461bcd60e51b815260040161079790612d3e565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098b5760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fe5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a375760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b03811660009081526009602052604090205460ff16610a9f5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610aea5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b235760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bae57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161079790612d3e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca75760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612f05602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a30565b60006106d4338484611161565b6000546001600160a01b03163314610d425760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d815760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b038116610deb5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161079790612d3e565b604051600090339047908381818185875af1925050503d8060008114610eb2576040519150601f19603f3d011682016040523d82523d6000602084013e610eb7565b606091505b50505050565b6000546001600160a01b03163314610ee75760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f265760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a01b1916600160a01b1790556016548111610f4b57610f4b81611ada565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f855760405162461bcd60e51b815260040161079790612d3e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610faf57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110185760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e1e565b60006107b68284612dfc565b6001600160a01b0383166110aa5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166111005760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c15760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129f57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c9575042600c5411155b6113615760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139857506001600160a01b03821660009081526008602052604090205460ff16155b1561141257601154816113aa84610b71565b6113b49190612dbf565b11156114125760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143d57506018546001600160a01b038481169116145b156114b7576c097761759c34d7b26fb00000008111156114b75760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e357506000546001600160a01b03838116911614155b80156114fd57506018546001600160a01b03848116911614155b1561150d57801561150d57600080fd5b6018546001600160a01b03848116911614801561153857506017546001600160a01b03838116911614155b801561155d57506001600160a01b03821660009081526006602052604090205460ff16155b80156115725750601954600160b01b900460ff165b156115cf57600f5481111561158657600080fd5b6001600160a01b03821660009081526005602052604090205442116115aa57600080fd5b6115b542601e612dbf565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180857601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164657600080fd5b505afa15801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190612b1f565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe9190612b1f565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174457600080fd5b505afa158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c9190612b1f565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ad426203f480612dbf565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183457506018546001600160a01b03838116911614155b80156118415750600b5443145b15611890576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189b30610b71565b601954909150600160a01b900460ff161580156118c557506018546001600160a01b038481169116145b80156118da5750601954600160a81b900460ff165b156118f057601a5481106118f0576118f0611c4d565b6001600160a01b03841660009081526006602052604090205460019060ff168061193257506001600160a01b03841660009081526006602052604090205460ff165b1561193b575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611964575042600c54115b15611a1d5760125461197a9060ff166005612e3d565b6012805460ff191660ff92831617908190556119a091600160201b909104166005612e3d565b6012805464ff000000001916600160201b60ff9384160217908190556119d091600160301b909104166005612e3d565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0291600160401b909104166005612e3d565b601260086101000a81548160ff021916908360ff1602179055505b611a2985858584611e58565b5050505050565b60008184841115611a545760405162461bcd60e51b81526004016107979190612ce9565b505050900390565b6000806000611a69612064565b9092509050611a788282611048565b9250505090565b60006107b68284612dbf565b6000806000806000806000806000611aa28a612214565b9250925092506000806000611ac08d8686611abb611a5c565b612256565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3f57600080fd5b505afa158015611b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b779190612b1f565b81600081518110611b8a57611b8a612eae565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbe57611bbe612eae565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf84261012c611a7f565b6040518663ffffffff1660e01b8152600401611c179493929190612cb4565b6000604051808303818588803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9457600154601354611c8e9130916001600160a01b0390911690611161565b60006013555b6000611c9f30610b71565b90506000601654601554601454611cb69190612dbf565b611cc09190612dbf565b90506000611cda600260155461104890919063ffffffff16565b90506000611ce884836122a6565b905047611cf4826122b2565b6000611d0047836122a6565b90506000611d2386611d1d6014548561103c90919063ffffffff16565b90611048565b90506000611d3183836122a6565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8e576040519150601f19603f3d011682016040523d82523d6000602084013e611d93565b606091505b50509050611da18783612424565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e40576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e35576040519150601f19603f3d011682016040523d82523d6000602084013e611e3a565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6557611e6561250d565b6001600160a01b03841660009081526007602052604090205460ff168015611ea657506001600160a01b03831660009081526007602052604090205460ff16155b15611ebb57611eb6848484612637565b611fb9565b6001600160a01b03841660009081526007602052604090205460ff16158015611efc57506001600160a01b03831660009081526007602052604090205460ff165b15611f0c57611eb684848461275d565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4e57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5e57611eb6848484612806565b6001600160a01b03841660009081526007602052604090205460ff168015611f9e57506001600160a01b03831660009081526007602052604090205460ff165b15611fae57611eb684848461284a565b611fb9848484612806565b80610eb7576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb7565b600e5460009081906d04ee2d6d415b85acef8100000000825b600d548110156121cd578260026000600d848154811061209f5761209f612eae565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210a57508160036000600d84815481106120e3576120e3612eae565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561212b575050600e54936d04ee2d6d415b85acef81000000009350915050565b61217160026000600d848154811061214557612145612eae565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a6565b92506121b960036000600d848154811061218d5761218d612eae565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a6565b9150806121c581612e7d565b91505061207d565b50600e546121e9906d04ee2d6d415b85acef8100000000611048565b82101561220b575050600e54926d04ee2d6d415b85acef810000000092509050565b90939092509050565b600080600080612223856128bd565b90506000612230866128d8565b905060006122488261224289866122a6565b906122a6565b979296509094509092505050565b6000808080612265888661103c565b90506000612273888761103c565b90506000612281888861103c565b905060006122938261224286866122a6565b939b939a50919850919650505050505050565b60006107b68284612e66565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e7576122e7612eae565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233b57600080fd5b505afa15801561234f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123739190612b1f565b8160018151811061238657612386612eae565b6001600160a01b0392831660209182029290920101526017546123ac9130911684611054565b6017546001600160a01b031663791ac94783600084306123ce4261012c611a7f565b6040518663ffffffff1660e01b81526004016123ee959493929190612d83565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505050565b60175461243c9030906001600160a01b031684611054565b6017546001546001600160a01b039182169163f305d7199184913091879160009182911661246c4261012c611a7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a299190612c42565b60125460ff1615801561252a5750601254600160201b900460ff16155b80156125405750601254600160301b900460ff16155b8015612555575060125462010000900460ff16155b801561256b5750601254600160401b900460ff16155b1561257257565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264987611a8b565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267b90886122a6565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126aa90876122a6565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d99086611a7f565b6001600160a01b0389166000908152600260205260409020556126fb81612938565b6127058483612ac9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274a91815260200190565b60405180910390a3505050505050505050565b60008060008060008061276f87611a8b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506127a190876122a6565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d79084611a7f565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d99086611a7f565b60008060008060008061281887611a8b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126aa90876122a6565b60008060008060008061285c87611a8b565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288e90886122a6565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546127a190876122a6565b6012546000906106d890606490611d1d90859060ff1661103c565b6012546000906106d890606490611d1d9060ff600160401b8204811691600160201b810482169161291a91620100008104821691600160301b90910416612dd7565b6129249190612dd7565b61292e9190612dd7565b859060ff1661103c565b60125460ff600160501b820481169161295991620100009091041683612e1e565b6129639190612dfc565b601360008282546129749190612dbf565b909155505060125460ff600160501b820481169161299b91600160301b9091041683612e1e565b6129a59190612dfc565b601460008282546129b69190612dbf565b909155505060125460ff600160501b82048116916129dd91600160201b9091041683612e1e565b6129e79190612dfc565b601560008282546129f89190612dbf565b909155505060125460ff600160501b8204811691612a1f91600160401b9091041683612e1e565b612a299190612dfc565b60166000828254612a3a9190612dbf565b9091555060009050612a4a611a5c565b90506000612a58838361103c565b30600090815260026020526040902054909150612a759082611a7f565b3060009081526002602090815260408083209390935560079052205460ff1615612ac45730600090815260036020526040902054612ab39084611a7f565b306000908152600360205260409020555b505050565b600e54612ad690836122a6565b600e55601054612ae69082611a7f565b6010555050565b80358015158114612afd57600080fd5b919050565b600060208284031215612b1457600080fd5b81356107b681612ec4565b600060208284031215612b3157600080fd5b81516107b681612ec4565b60008060408385031215612b4f57600080fd5b8235612b5a81612ec4565b91506020830135612b6a81612ec4565b809150509250929050565b600080600060608486031215612b8a57600080fd5b8335612b9581612ec4565b92506020840135612ba581612ec4565b929592945050506040919091013590565b60008060408385031215612bc957600080fd5b8235612bd481612ec4565b946020939093013593505050565b600060208284031215612bf457600080fd5b6107b682612aed565b600060208284031215612c0f57600080fd5b5035919050565b60008060408385031215612c2957600080fd5b82359150612c3960208401612aed565b90509250929050565b600080600060608486031215612c5757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca95781516001600160a01b031687529582019590820190600101612c84565b509495945050505050565b848152608060208201526000612ccd6080830186612c70565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1657858101830151858201604001528201612cfa565b81811115612d28576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612da260a0830186612c70565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dd257612dd2612e98565b500190565b600060ff821660ff84168060ff03821115612df457612df4612e98565b019392505050565b600082612e1957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3857612e38612e98565b500290565b600060ff821660ff84168160ff0481118215151615612e5e57612e5e612e98565b029392505050565b600082821015612e7857612e78612e98565b500390565b6000600019821415612e9157612e91612e98565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122049376e4918ea42597b77a41afaabfc2b57c57a5727308d74f737553c2070223964736f6c63430008070033
Deployed Bytecode
0x60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026b57806318160ddd1461029b5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600981526853484942414e414e4160b81b602082015290516102629190612ce9565b60405180910390f35b34801561027757600080fd5b5061028b610286366004612bb6565b6106c7565b6040519015158152602001610262565b3480156102a757600080fd5b506d04ee2d6d415b85acef81000000005b604051908152602001610262565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028b6102f7366004612b75565b6106de565b34801561030857600080fd5b506102b8610317366004612bfd565b610747565b34801561032857600080fd5b5060405160128152602001610262565b34801561034457600080fd5b5061028b610353366004612bb6565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612b02565b610832565b34801561039b57600080fd5b506102b86103aa366004612c16565b610880565b3480156103bb57600080fd5b5061028b6103ca366004612b02565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612be2565b610919565b34801561041457600080fd5b5061036d610423366004612b02565b610961565b34801561043457600080fd5b5061036d6109d4565b34801561044957600080fd5b5061036d610458366004612b02565b610a0d565b34801561046957600080fd5b5061036d610ac0565b34801561047e57600080fd5b5061036d610af9565b34801561049357600080fd5b5061036d610b32565b3480156104a857600080fd5b506102b86104b7366004612b02565b610b71565b3480156104c857600080fd5b5061036d610bd0565b3480156104dd57600080fd5b5061036d610c44565b3480156104f257600080fd5b5061036d610c7d565b34801561050757600080fd5b5061028b610516366004612b02565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028b610546366004612b02565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610262565b34801561059857600080fd5b5061028b6105a7366004612bb6565b610cbc565b3480156105b857600080fd5b5061028b6105c7366004612bb6565b610d0b565b3480156105d857600080fd5b5061036d610d18565b3480156105ed57600080fd5b506102b86105fc366004612b3c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612b02565b610d57565b34801561066957600080fd5b5061036d610e46565b34801561067e57600080fd5b5061036d610ebd565b34801561069357600080fd5b5061036d6106a2366004612bfd565b610efc565b3480156106b357600080fd5b5061036d6106c2366004612b02565b610f5b565b60006106d4338484611054565b5060015b92915050565b60006106eb848484611161565b61073d843361073885604051806060016040528060288152602001612edd602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a30565b611054565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5c565b90506107b68382611048565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7f565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006d04ee2d6d415b85acef81000000008311156108e05760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108ff5760006108f084611a8b565b509395506106d8945050505050565b600061090a84611a8b565b509295506106d8945050505050565b6000546001600160a01b031633146109435760405162461bcd60e51b815260040161079790612d3e565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098b5760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fe5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a375760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b03811660009081526009602052604090205460ff16610a9f5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610aea5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b235760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5c5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bae57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bfa5760405162461bcd60e51b815260040161079790612d3e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6e5760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca75760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612f05602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a30565b60006106d4338484611161565b6000546001600160a01b03163314610d425760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d815760405162461bcd60e51b815260040161079790612d3e565b6001600160a01b038116610deb5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161079790612d3e565b604051600090339047908381818185875af1925050503d8060008114610eb2576040519150601f19603f3d011682016040523d82523d6000602084013e610eb7565b606091505b50505050565b6000546001600160a01b03163314610ee75760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f265760405162461bcd60e51b815260040161079790612d3e565b6019805460ff60a01b1916600160a01b1790556016548111610f4b57610f4b81611ada565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f855760405162461bcd60e51b815260040161079790612d3e565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610faf57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110185760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e1e565b60006107b68284612dfc565b6001600160a01b0383166110aa5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166111005760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c15760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112175760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112795760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129f57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c9575042600c5411155b6113615760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139857506001600160a01b03821660009081526008602052604090205460ff16155b1561141257601154816113aa84610b71565b6113b49190612dbf565b11156114125760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143d57506018546001600160a01b038481169116145b156114b7576c097761759c34d7b26fb00000008111156114b75760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e357506000546001600160a01b03838116911614155b80156114fd57506018546001600160a01b03848116911614155b1561150d57801561150d57600080fd5b6018546001600160a01b03848116911614801561153857506017546001600160a01b03838116911614155b801561155d57506001600160a01b03821660009081526006602052604090205460ff16155b80156115725750601954600160b01b900460ff165b156115cf57600f5481111561158657600080fd5b6001600160a01b03821660009081526005602052604090205442116115aa57600080fd5b6115b542601e612dbf565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180857601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164657600080fd5b505afa15801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e9190612b1f565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c657600080fd5b505afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe9190612b1f565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174457600080fd5b505afa158015611758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177c9190612b1f565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ad426203f480612dbf565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183457506018546001600160a01b03838116911614155b80156118415750600b5443145b15611890576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189b30610b71565b601954909150600160a01b900460ff161580156118c557506018546001600160a01b038481169116145b80156118da5750601954600160a81b900460ff165b156118f057601a5481106118f0576118f0611c4d565b6001600160a01b03841660009081526006602052604090205460019060ff168061193257506001600160a01b03841660009081526006602052604090205460ff165b1561193b575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611964575042600c54115b15611a1d5760125461197a9060ff166005612e3d565b6012805460ff191660ff92831617908190556119a091600160201b909104166005612e3d565b6012805464ff000000001916600160201b60ff9384160217908190556119d091600160301b909104166005612e3d565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0291600160401b909104166005612e3d565b601260086101000a81548160ff021916908360ff1602179055505b611a2985858584611e58565b5050505050565b60008184841115611a545760405162461bcd60e51b81526004016107979190612ce9565b505050900390565b6000806000611a69612064565b9092509050611a788282611048565b9250505090565b60006107b68284612dbf565b6000806000806000806000806000611aa28a612214565b9250925092506000806000611ac08d8686611abb611a5c565b612256565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3f57600080fd5b505afa158015611b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b779190612b1f565b81600081518110611b8a57611b8a612eae565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbe57611bbe612eae565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf84261012c611a7f565b6040518663ffffffff1660e01b8152600401611c179493929190612cb4565b6000604051808303818588803b158015611c3057600080fd5b505af1158015611c44573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9457600154601354611c8e9130916001600160a01b0390911690611161565b60006013555b6000611c9f30610b71565b90506000601654601554601454611cb69190612dbf565b611cc09190612dbf565b90506000611cda600260155461104890919063ffffffff16565b90506000611ce884836122a6565b905047611cf4826122b2565b6000611d0047836122a6565b90506000611d2386611d1d6014548561103c90919063ffffffff16565b90611048565b90506000611d3183836122a6565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8e576040519150601f19603f3d011682016040523d82523d6000602084013e611d93565b606091505b50509050611da18783612424565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e40576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e35576040519150601f19603f3d011682016040523d82523d6000602084013e611e3a565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6557611e6561250d565b6001600160a01b03841660009081526007602052604090205460ff168015611ea657506001600160a01b03831660009081526007602052604090205460ff16155b15611ebb57611eb6848484612637565b611fb9565b6001600160a01b03841660009081526007602052604090205460ff16158015611efc57506001600160a01b03831660009081526007602052604090205460ff165b15611f0c57611eb684848461275d565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4e57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5e57611eb6848484612806565b6001600160a01b03841660009081526007602052604090205460ff168015611f9e57506001600160a01b03831660009081526007602052604090205460ff165b15611fae57611eb684848461284a565b611fb9848484612806565b80610eb7576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb7565b600e5460009081906d04ee2d6d415b85acef8100000000825b600d548110156121cd578260026000600d848154811061209f5761209f612eae565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210a57508160036000600d84815481106120e3576120e3612eae565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561212b575050600e54936d04ee2d6d415b85acef81000000009350915050565b61217160026000600d848154811061214557612145612eae565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a6565b92506121b960036000600d848154811061218d5761218d612eae565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a6565b9150806121c581612e7d565b91505061207d565b50600e546121e9906d04ee2d6d415b85acef8100000000611048565b82101561220b575050600e54926d04ee2d6d415b85acef810000000092509050565b90939092509050565b600080600080612223856128bd565b90506000612230866128d8565b905060006122488261224289866122a6565b906122a6565b979296509094509092505050565b6000808080612265888661103c565b90506000612273888761103c565b90506000612281888861103c565b905060006122938261224286866122a6565b939b939a50919850919650505050505050565b60006107b68284612e66565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e7576122e7612eae565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233b57600080fd5b505afa15801561234f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123739190612b1f565b8160018151811061238657612386612eae565b6001600160a01b0392831660209182029290920101526017546123ac9130911684611054565b6017546001600160a01b031663791ac94783600084306123ce4261012c611a7f565b6040518663ffffffff1660e01b81526004016123ee959493929190612d83565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505050565b60175461243c9030906001600160a01b031684611054565b6017546001546001600160a01b039182169163f305d7199184913091879160009182911661246c4261012c611a7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a299190612c42565b60125460ff1615801561252a5750601254600160201b900460ff16155b80156125405750601254600160301b900460ff16155b8015612555575060125462010000900460ff16155b801561256b5750601254600160401b900460ff16155b1561257257565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264987611a8b565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267b90886122a6565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126aa90876122a6565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d99086611a7f565b6001600160a01b0389166000908152600260205260409020556126fb81612938565b6127058483612ac9565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274a91815260200190565b60405180910390a3505050505050505050565b60008060008060008061276f87611a8b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506127a190876122a6565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d79084611a7f565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d99086611a7f565b60008060008060008061281887611a8b565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126aa90876122a6565b60008060008060008061285c87611a8b565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288e90886122a6565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546127a190876122a6565b6012546000906106d890606490611d1d90859060ff1661103c565b6012546000906106d890606490611d1d9060ff600160401b8204811691600160201b810482169161291a91620100008104821691600160301b90910416612dd7565b6129249190612dd7565b61292e9190612dd7565b859060ff1661103c565b60125460ff600160501b820481169161295991620100009091041683612e1e565b6129639190612dfc565b601360008282546129749190612dbf565b909155505060125460ff600160501b820481169161299b91600160301b9091041683612e1e565b6129a59190612dfc565b601460008282546129b69190612dbf565b909155505060125460ff600160501b82048116916129dd91600160201b9091041683612e1e565b6129e79190612dfc565b601560008282546129f89190612dbf565b909155505060125460ff600160501b8204811691612a1f91600160401b9091041683612e1e565b612a299190612dfc565b60166000828254612a3a9190612dbf565b9091555060009050612a4a611a5c565b90506000612a58838361103c565b30600090815260026020526040902054909150612a759082611a7f565b3060009081526002602090815260408083209390935560079052205460ff1615612ac45730600090815260036020526040902054612ab39084611a7f565b306000908152600360205260409020555b505050565b600e54612ad690836122a6565b600e55601054612ae69082611a7f565b6010555050565b80358015158114612afd57600080fd5b919050565b600060208284031215612b1457600080fd5b81356107b681612ec4565b600060208284031215612b3157600080fd5b81516107b681612ec4565b60008060408385031215612b4f57600080fd5b8235612b5a81612ec4565b91506020830135612b6a81612ec4565b809150509250929050565b600080600060608486031215612b8a57600080fd5b8335612b9581612ec4565b92506020840135612ba581612ec4565b929592945050506040919091013590565b60008060408385031215612bc957600080fd5b8235612bd481612ec4565b946020939093013593505050565b600060208284031215612bf457600080fd5b6107b682612aed565b600060208284031215612c0f57600080fd5b5035919050565b60008060408385031215612c2957600080fd5b82359150612c3960208401612aed565b90509250929050565b600080600060608486031215612c5757600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca95781516001600160a01b031687529582019590820190600101612c84565b509495945050505050565b848152608060208201526000612ccd6080830186612c70565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1657858101830151858201604001528201612cfa565b81811115612d28576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612da260a0830186612c70565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dd257612dd2612e98565b500190565b600060ff821660ff84168060ff03821115612df457612df4612e98565b019392505050565b600082612e1957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3857612e38612e98565b500290565b600060ff821660ff84168160ff0481118215151615612e5e57612e5e612e98565b029392505050565b600082821015612e7857612e78612e98565b500390565b6000600019821415612e9157612e91612e98565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122049376e4918ea42597b77a41afaabfc2b57c57a5727308d74f737553c2070223964736f6c63430008070033
Deployed Bytecode Sourcemap
14281:22849:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17701:92;;;;;;;;;;-1:-1:-1;17780:5:0;;;;;;;;;;;-1:-1:-1;;;17780:5:0;;;;17701:92;;;;17780:5;17701:92;:::i;:::-;;;;;;;;18620:161;;;;;;;;;;-1:-1:-1;18620:161:0;;;;;:::i;:::-;;:::i;:::-;;;4765:14:1;;4758:22;4740:41;;4728:2;4713:18;18620:161:0;4600:187:1;17993:95:0;;;;;;;;;;-1:-1:-1;15120:13:0;17993:95;;;11509:25:1;;;11497:2;11482:18;17993:95:0;11363:177:1;14962:33:0;;;;;;;;;;;;;;;;18787:329;;;;;;;;;;-1:-1:-1;18787:329:0;;;;;:::i;:::-;;:::i;20358:241::-;;;;;;;;;;-1:-1:-1;20358:241:0;;;;;:::i;:::-;;:::i;17899:88::-;;;;;;;;;;-1:-1:-1;17899:88:0;;15467:2;12598:36:1;;12586:2;12571:18;17899:88:0;12456:184:1;19122:218:0;;;;;;;;;;-1:-1:-1;19122:218:0;;;;;:::i;:::-;;:::i;32382:78::-;;;;;;;;;;;;;:::i;:::-;;24275:111;;;;;;;;;;-1:-1:-1;24275:111:0;;;;;:::i;:::-;;:::i;19908:444::-;;;;;;;;;;-1:-1:-1;19908:444:0;;;;;:::i;:::-;;:::i;24392:124::-;;;;;;;;;;-1:-1:-1;24392:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;24481:27:0;24457:4;24481:27;;;:18;:27;;;;;;;;;24392:124;19799:103;;;;;;;;;;-1:-1:-1;19799:103:0;;;;;:::i;:::-;;:::i;28663:148::-;;;;;;;;;;-1:-1:-1;28663:148:0;;;;;:::i;:::-;;:::i;32642:86::-;;;;;;;;;;;;;:::i;28508:152::-;;;;;;;;;;-1:-1:-1;28508:152:0;;;;;:::i;:::-;;:::i;32283:93::-;;;;;;;;;;;;;:::i;32945:82::-;;;;;;;;;;;;;:::i;32186:91::-;;;;;;;;;;;;;:::i;18094:198::-;;;;;;;;;;-1:-1:-1;18094:198:0;;;;;:::i;:::-;;:::i;2136:148::-;;;;;;;;;;;;;:::i;32466:80::-;;;;;;;;;;;;;:::i;32863:76::-;;;;;;;;;;;;;:::i;14871:43::-;;;;;;;;;;-1:-1:-1;14871:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19671:120;;;;;;;;;;-1:-1:-1;19671:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;19763:20:0;19739:4;19763:20;;;:11;:20;;;;;;;;;19671:120;1908:87;;;;;;;;;;-1:-1:-1;1954:7:0;1981:6;1908:87;;-1:-1:-1;;;;;1981:6:0;;;3617:51:1;;3605:2;3590:18;1908:87:0;3471:203:1;19346:319:0;;;;;;;;;;-1:-1:-1;19346:319:0;;;;;:::i;:::-;;:::i;18298:167::-;;;;;;;;;;-1:-1:-1;18298:167:0;;;;;:::i;:::-;;:::i;32104:76::-;;;;;;;;;;;;;:::i;18471:143::-;;;;;;;;;;-1:-1:-1;18471:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18579:18:0;;;18552:7;18579:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18471:143;14918:37;;;;;;;;;;;;;;;;2292:249;;;;;;;;;;-1:-1:-1;2292:249:0;;;;;:::i;:::-;;:::i;33033:160::-;;;;;;;;;;;;;:::i;32552:84::-;;;;;;;;;;;;;:::i;27601:166::-;;;;;;;;;;-1:-1:-1;27601:166:0;;;;;:::i;:::-;;:::i;28285:220::-;;;;;;;;;;-1:-1:-1;28285:220:0;;;;;:::i;:::-;;:::i;18620:161::-;18695:4;18712:39;1561:10;18735:7;18744:6;18712:8;:39::i;:::-;-1:-1:-1;18769:4:0;18620:161;;;;;:::o;18787:329::-;18883:4;18900:36;18910:6;18918:9;18929:6;18900:9;:36::i;:::-;18947:139;18956:6;1561:10;18986:89;19024:6;18986:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18986:19:0;;;;;;:11;:19;;;;;;;;1561:10;18986:33;;;;;;;;;;:37;:89::i;:::-;18947:8;:139::i;:::-;-1:-1:-1;19104:4:0;18787:329;;;;;:::o;20358:241::-;20425:7;20464;;20453;:18;;20445:61;;;;-1:-1:-1;;;20445:61:0;;8413:2:1;20445:61:0;;;8395:21:1;8452:2;8432:18;;;8425:30;8491:32;8471:18;;;8464:60;8541:18;;20445:61:0;;;;;;;;;20517:19;20539:10;:8;:10::i;:::-;20517:32;-1:-1:-1;20567:24:0;:7;20517:32;20567:11;:24::i;:::-;20560:31;20358:241;-1:-1:-1;;;20358:241:0:o;19122:218::-;1561:10;19210:4;19259:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19259:34:0;;;;;;;;;;19210:4;;19227:83;;19250:7;;19259:50;;19298:10;19259:38;:50::i;32382:78::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32435:10:::1;:17:::0;;-1:-1:-1;;;;32435:17:0::1;-1:-1:-1::0;;;32435:17:0::1;::::0;;32382:78::o;24275:111::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24344:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24344:34:0::1;24374:4;24344:34;::::0;;24275:111::o;19908:444::-;19999:7;15120:13;20027:7;:18;;20019:59;;;;-1:-1:-1;;;20019:59:0;;6470:2:1;20019:59:0;;;6452:21:1;6509:2;6489:18;;;6482:30;6548;6528:18;;;6521:58;6596:18;;20019:59:0;6268:352:1;20019:59:0;20094:17;20089:256;;20129:15;20158:19;20169:7;20158:10;:19::i;:::-;-1:-1:-1;20128:49:0;;-1:-1:-1;20192:14:0;;-1:-1:-1;;;;;20192:14:0;20089:256;20242:23;20277:19;20288:7;20277:10;:19::i;:::-;-1:-1:-1;20239:57:0;;-1:-1:-1;20311:22:0;;-1:-1:-1;;;;;20311:22:0;19799:103;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;19871:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;19871:23:0::1;-1:-1:-1::0;;;;19871:23:0;;::::1;::::0;;;::::1;::::0;;19799:103::o;28663:148::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28737:20:0;::::1;28760:5;28737:20:::0;;;:11:::1;:20;::::0;;;;;:28;;-1:-1:-1;;28737:28:0::1;::::0;;28781:22;::::1;::::0;28760:5;28781:22:::1;28663:148:::0;:::o;32642:86::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32700:12:::1;:20:::0;;-1:-1:-1;;;;32700:20:0::1;::::0;;32642:86::o;28508:152::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28578:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;28570:50;;;::::0;-1:-1:-1;;;28570:50:0;;9125:2:1;28570:50:0::1;::::0;::::1;9107:21:1::0;9164:2;9144:18;;;9137:30;9203:26;9183:18;;;9176:54;9247:18;;28570:50:0::1;8923:348:1::0;28570:50:0::1;-1:-1:-1::0;;;;;28631:13:0::1;28647:5;28631:13:::0;;;:6:::1;:13;::::0;;;;:21;;-1:-1:-1;;28631:21:0::1;::::0;;28508:152::o;32283:93::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32339:21:::1;:29:::0;;-1:-1:-1;;;;32339:29:0::1;::::0;;32283:93::o;32945:82::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;33001:10:::1;:18:::0;;-1:-1:-1;;;;33001:18:0::1;::::0;;32945:82::o;32186:91::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32241:21:::1;:28:::0;;-1:-1:-1;;;;32241:28:0::1;-1:-1:-1::0;;;32241:28:0::1;::::0;;32186:91::o;18094:198::-;-1:-1:-1;;;;;18184:20:0;;18160:7;18184:20;;;:11;:20;;;;;;;;18180:49;;;-1:-1:-1;;;;;;18213:16:0;;;;;:7;:16;;;;;;;18094:198::o;18180:49::-;-1:-1:-1;;;;;18267:16:0;;;;;;:7;:16;;;;;;18247:37;;:19;:37::i;2136:148::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;2243:1:::1;2227:6:::0;;2206:40:::1;::::0;-1:-1:-1;;;;;2227:6:0;;::::1;::::0;2206:40:::1;::::0;2243:1;;2206:40:::1;2274:1;2257:19:::0;;-1:-1:-1;;;;;;2257:19:0::1;::::0;;2136:148::o;32466:80::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32520:10:::1;:18:::0;;-1:-1:-1;;;;32520:18:0::1;::::0;;32466:80::o;32863:76::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32914:10:::1;:17:::0;;-1:-1:-1;;;;32914:17:0::1;-1:-1:-1::0;;;32914:17:0::1;::::0;;32863:76::o;19346:319::-;19439:4;19456:179;1561:10;19506:7;19528:96;19567:15;19528:96;;;;;;;;;;;;;;;;;1561:10;19528:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19528:34:0;;;;;;;;;;;;:38;:96::i;18298:167::-;18376:4;18393:42;1561:10;18417:9;18428:6;18393:9;:42::i;32104:76::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32154:11:::1;:18:::0;;-1:-1:-1;;;;32154:18:0::1;-1:-1:-1::0;;;32154:18:0::1;::::0;;32104:76::o;2292:249::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2381:22:0;::::1;2373:78;;;::::0;-1:-1:-1;;;2373:78:0;;9478:2:1;2373:78:0::1;::::0;::::1;9460:21:1::0;9517:2;9497:18;;;9490:30;9556:34;9536:18;;;9529:62;-1:-1:-1;;;9607:18:1;;;9600:41;9658:19;;2373:78:0::1;9276:407:1::0;2373:78:0::1;2488:6;::::0;;2467:38:::1;::::0;-1:-1:-1;;;;;2467:38:0;;::::1;::::0;2488:6;::::1;::::0;2467:38:::1;::::0;::::1;2516:6;:17:::0;;-1:-1:-1;;;;;;2516:17:0::1;-1:-1:-1::0;;;;;2516:17:0;;;::::1;::::0;;;::::1;::::0;;2292:249::o;33033:160::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;33127:58:::1;::::0;33091:12:::1;::::0;33135:10:::1;::::0;33159:21:::1;::::0;33091:12;33127:58;33091:12;33127:58;33159:21;33135:10;33127:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;33033:160:0:o;32552:84::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;32609:12:::1;:19:::0;;-1:-1:-1;;;;32609:19:0::1;-1:-1:-1::0;;;32609:19:0::1;::::0;;32552:84::o;27601:166::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;16973:16:::1;:23:::0;;-1:-1:-1;;;;16973:23:0::1;-1:-1:-1::0;;;16973:23:0::1;::::0;;27694:13:::2;::::0;27684:23;::::2;27680:80;;27724:24;27741:6;27724:16;:24::i;:::-;-1:-1:-1::0;17019:16:0::1;:24:::0;;-1:-1:-1;;;;17019:24:0::1;::::0;;27601:166::o;28285:220::-;1954:7;1981:6;-1:-1:-1;;;;;1981:6:0;1561:10;2043:23;2035:73;;;;-1:-1:-1;;;2035:73:0;;;;;;;:::i;:::-;28361:42:::1;-1:-1:-1::0;;;;;28352:51:0;::::1;;;28344:60;;;::::0;::::1;;-1:-1:-1::0;;;;;28424:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;28423:14;28415:51;;;::::0;-1:-1:-1;;;28415:51:0;;8772:2:1;28415:51:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:26;8830:18;;;8823:54;8894:18;;28415:51:0::1;8570:348:1::0;28415:51:0::1;-1:-1:-1::0;;;;;28477:13:0::1;;::::0;;;:6:::1;:13;::::0;;;;:20;;-1:-1:-1;;28477:20:0::1;28493:4;28477:20;::::0;;28285:220::o;4272:98::-;4330:7;4357:5;4361:1;4357;:5;:::i;4376:98::-;4434:7;4461:5;4465:1;4461;:5;:::i;24522:325::-;-1:-1:-1;;;;;24613:19:0;;24605:64;;;;-1:-1:-1;;;24605:64:0;;11204:2:1;24605:64:0;;;11186:21:1;;;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;11334:18;;24605:64:0;11002:356:1;24605:64:0;-1:-1:-1;;;;;24688:21:0;;24680:64;;;;-1:-1:-1;;;24680:64:0;;6111:2:1;24680:64:0;;;6093:21:1;6150:2;6130:18;;;6123:30;6189:32;6169:18;;;6162:60;6239:18;;24680:64:0;5909:354:1;24680:64:0;-1:-1:-1;;;;;24755:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24807:32;;11509:25:1;;;24807:32:0;;11482:18:1;24807:32:0;;;;;;;24522:325;;;:::o;24853:2742::-;-1:-1:-1;;;;;24939:18:0;;24931:64;;;;-1:-1:-1;;;24931:64:0;;7243:2:1;24931:64:0;;;7225:21:1;7282:2;7262:18;;;7255:30;7321:34;7301:18;;;7294:62;-1:-1:-1;;;7372:18:1;;;7365:31;7413:19;;24931:64:0;7041:397:1;24931:64:0;-1:-1:-1;;;;;25014:16:0;;25006:60;;;;-1:-1:-1;;;25006:60:0;;7645:2:1;25006:60:0;;;7627:21:1;7684:2;7664:18;;;7657:30;7723:33;7703:18;;;7696:61;7774:18;;25006:60:0;7443:355:1;25006:60:0;25094:1;25085:6;:10;25077:64;;;;-1:-1:-1;;;25077:64:0;;10296:2:1;25077:64:0;;;10278:21:1;10335:2;10315:18;;;10308:30;10374:34;10354:18;;;10347:62;-1:-1:-1;;;10425:18:1;;;10418:39;10474:19;;25077:64:0;10094:405:1;25077:64:0;-1:-1:-1;;;;;25155:12:0;;;;;;:6;:12;;;;;;;;25154:13;25146:22;;;;;;-1:-1:-1;;;;;25182:17:0;;;;;;:11;:17;;;;;;;;25181:18;;:59;;;25225:15;25203:18;;:37;;25181:59;25173:161;;;;-1:-1:-1;;;25173:161:0;;10706:2:1;25173:161:0;;;10688:21:1;10745:2;10725:18;;;10718:30;10784:34;10764:18;;;10757:62;10855:34;10835:18;;;10828:62;10927:27;10906:19;;;10899:56;10972:19;;25173:161:0;10504:493:1;25173:161:0;25343:12;;-1:-1:-1;;;25343:12:0;;;;:20;;25359:4;25343:20;:47;;;;-1:-1:-1;;;;;;25369:21:0;;;;;;:17;:21;;;;;;;;25367:23;25343:47;25339:172;;;25441:14;;25431:6;25415:13;25425:2;25415:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;25407:92;;;;-1:-1:-1;;;25407:92:0;;8005:2:1;25407:92:0;;;7987:21:1;8044:2;8024:18;;;8017:30;8083:34;8063:18;;;8056:62;-1:-1:-1;;;8134:18:1;;;8127:37;8181:19;;25407:92:0;7803:403:1;25407:92:0;25525:10;;-1:-1:-1;;;25525:10:0;;;;:18;;25539:4;25525:18;:39;;;;-1:-1:-1;25555:9:0;;-1:-1:-1;;;;;25547:17:0;;;25555:9;;25547:17;25525:39;25521:148;;;25590:21;25580:6;:31;;25572:91;;;;-1:-1:-1;;;25572:91:0;;6827:2:1;25572:91:0;;;6809:21:1;6866:2;6846:18;;;6839:30;6905:34;6885:18;;;6878:62;-1:-1:-1;;;6956:18:1;;;6949:45;7011:19;;25572:91:0;6625:411:1;25572:91:0;25677:10;;-1:-1:-1;;;25677:10:0;;;;:18;;25691:4;25677:18;:35;;;;-1:-1:-1;1954:7:0;1981:6;-1:-1:-1;;;;;25699:13:0;;;1981:6;;25699:13;;25677:35;:56;;;;-1:-1:-1;25724:9:0;;-1:-1:-1;;;;;25716:17:0;;;25724:9;;25716:17;;25677:56;25673:103;;;25749:20;;25741:29;;;;;;25798:9;;-1:-1:-1;;;;;25790:17:0;;;25798:9;;25790:17;:47;;;;-1:-1:-1;25825:11:0;;-1:-1:-1;;;;;25811:26:0;;;25825:11;;25811:26;;25790:47;:75;;;;-1:-1:-1;;;;;;25843:22:0;;;;;;:18;:22;;;;;;;;25841:24;25790:75;:94;;;;-1:-1:-1;25869:15:0;;-1:-1:-1;;;25869:15:0;;;;25790:94;25786:296;;;25923:12;;25913:6;:22;;25905:31;;;;;;-1:-1:-1;;;;;25963:16:0;;;;;;:12;:16;;;;;;25982:15;-1:-1:-1;25955:43:0;;;;;;26036:30;:15;26055:10;26036:30;:::i;:::-;-1:-1:-1;;;;;26017:16:0;;;;;;:12;:16;;;;;:49;25786:296;26095:11;;-1:-1:-1;;;26095:11:0;;;;:19;;26110:4;26095:19;26092:630;;;26242:11;:26;;-1:-1:-1;;;;;;26242:26:0;26184:42;26242:26;;;;;;26313:22;;;-1:-1:-1;;;26313:22:0;;;;26184:42;;26313:20;;:22;;;;;;;;;;;;;;26184:42;26313:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26295:49:0;;26353:4;26360:12;-1:-1:-1;;;;;26360:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26295:85;;-1:-1:-1;;;;;;26295:85:0;;;;;;;-1:-1:-1;;;;;3909:15:1;;;26295:85:0;;;3891:34:1;3961:15;;3941:18;;;3934:43;3826:18;;26295:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26283:9;:97;;-1:-1:-1;;;;;;26283:97:0;-1:-1:-1;;;;;26283:97:0;;;;;;;;;;26416:12;26395:18;:33;26464:26;:15;26482:8;26464:26;:::i;:::-;26443:18;:47;-1:-1:-1;26531:9:0;;-1:-1:-1;;;;;26531:9:0;;;26505:37;;;;:17;:37;;;;;;:44;;26545:4;-1:-1:-1;;26505:44:0;;;;;;;;26590:11;;;;;26564:39;;;;:46;;;;;;;;26625:10;:17;;-1:-1:-1;;;;26691:19:0;-1:-1:-1;;;26691:19:0;;;26092:630;1954:7;1981:6;-1:-1:-1;;;;;26729:15:0;;;1981:6;;26729:15;;;;:34;;-1:-1:-1;26754:9:0;;-1:-1:-1;;;;;26748:15:0;;;26754:9;;26748:15;;26729:34;:72;;;;;26783:18;;26767:12;:34;26729:72;26726:145;;;-1:-1:-1;;;;;26808:15:0;;;;;;:11;:15;;;;;;:22;;-1:-1:-1;;26808:22:0;26826:4;26808:22;;;26850:15;;;26808;26850;26726:145;26881:28;26912:24;26930:4;26912:9;:24::i;:::-;26952:16;;26881:55;;-1:-1:-1;;;;26952:16:0;;;;26951:17;:36;;;;-1:-1:-1;26978:9:0;;-1:-1:-1;;;;;26972:15:0;;;26978:9;;26972:15;26951:36;:61;;;;-1:-1:-1;26991:21:0;;-1:-1:-1;;;26991:21:0;;;;26951:61;26947:188;;;27057:29;;27033:20;:53;27029:95;;27095:13;:11;:13::i;:::-;-1:-1:-1;;;;;27179:24:0;;27145:12;27179:24;;;:18;:24;;;;;;27160:4;;27179:24;;;:50;;-1:-1:-1;;;;;;27207:22:0;;;;;;:18;:22;;;;;;;;27179:50;27175:98;;;-1:-1:-1;27256:5:0;27175:98;-1:-1:-1;;;;;27280:17:0;;;;;;:11;:17;;;;;;;;:57;;;;;27322:15;27301:18;;:36;27280:57;27277:259;;;27371:7;;:11;;:7;;27381:1;27371:11;:::i;:::-;27361:7;:21;;-1:-1:-1;;27361:21:0;;;;;;;;;;27415:11;;-1:-1:-1;;;27415:7:0;;;;27425:1;27415:11;:::i;:::-;27405:7;:21;;-1:-1:-1;;27405:21:0;-1:-1:-1;;;27405:21:0;;;;;;;;;;27459:11;;-1:-1:-1;;;27459:7:0;;;;27469:1;27459:11;:::i;:::-;27449:7;:21;;-1:-1:-1;;27449:21:0;-1:-1:-1;;;27449:21:0;;;;;;;;;;27504:12;;-1:-1:-1;;;27504:8:0;;;;27515:1;27504:12;:::i;:::-;27493:8;;:23;;;;;;;;;;;;;;;;;;27277:259;27546:41;27561:4;27567:2;27571:6;27579:7;27546:14;:41::i;:::-;24920:2675;;24853:2742;;;:::o;4584:206::-;4670:7;4731:12;4723:6;;;;4715:29;;;;-1:-1:-1;;;4715:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;4766:5:0;;;4584:206::o;21976:164::-;22018:7;22039:15;22056;22075:19;:17;:19::i;:::-;22038:56;;-1:-1:-1;22038:56:0;-1:-1:-1;22112:20:0;22038:56;;22112:11;:20::i;:::-;22105:27;;;;21976:164;:::o;4064:98::-;4122:7;4149:5;4153:1;4149;:5;:::i;20793:414::-;20852:7;20860;20868;20876;20884;20892;20913:23;20938:12;20952:18;20974:20;20986:7;20974:11;:20::i;:::-;20912:82;;;;;;21006:15;21023:23;21048:12;21064:50;21076:7;21085:4;21091:10;21103;:8;:10::i;:::-;21064:11;:50::i;:::-;21005:109;;;;-1:-1:-1;21005:109:0;;-1:-1:-1;21165:15:0;;-1:-1:-1;21182:4:0;;-1:-1:-1;21188:10:0;;-1:-1:-1;20793:414:0;;-1:-1:-1;;;;;20793:414:0:o;27773:509::-;27918:16;;;27932:1;27918:16;;;;;;;;27894:21;;27918:16;;;;;;;;-1:-1:-1;;27955:11:0;;:18;;;-1:-1:-1;;;27955:18:0;;;;27894:40;;-1:-1:-1;;;;;;27955:11:0;;;;:16;;-1:-1:-1;27955:18:0;;;;;;;;;;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27945:4;27950:1;27945:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;27945:28:0;;;-1:-1:-1;;;;;27945:28:0;;;;;28002:4;27984;27989:1;27984:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27984:23:0;;;:7;;;;;;;;;:23;28046:11;;;28204:4;28046:11;;;;:62;;28116:6;;28046:11;;28185:4;;28204;28239:24;:15;28259:3;28239:19;:24::i;:::-;28046:228;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27823:459;27773:509;:::o;29847:1291::-;16973:16;:23;;-1:-1:-1;;;;16973:23:0;-1:-1:-1;;;16973:23:0;;;29904:8:::1;::::0;;;::::1;16973:23:::0;29904:8:::1;:13:::0;29901:116:::1;;29959:4;::::0;29965:10:::1;::::0;29934:42:::1;::::0;29952:4:::1;::::0;-1:-1:-1;;;;;29959:4:0;;::::1;::::0;29934:9:::1;:42::i;:::-;30004:1;29991:10;:14:::0;29901:116:::1;30027:23;30053:24;30071:4;30053:9;:24::i;:::-;30027:50;;30088:25;30152:13;;30134:15;;30116;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;30088:77;;30225:26;30254:22;30274:1;30254:15;;:19;;:22;;;;:::i;:::-;30225:51:::0;-1:-1:-1;30287:26:0::1;30316:39;:15:::0;30225:51;30316:19:::1;:39::i;:::-;30287:68:::0;-1:-1:-1;30394:21:0::1;30426:36;30287:68:::0;30426:16:::1;:36::i;:::-;30474:18;30495:44;:21;30521:17:::0;30495:25:::1;:44::i;:::-;30474:65;;30550:23;30576:54;30612:17;30576:31;30591:15;;30576:10;:14;;:31;;;;:::i;:::-;:35:::0;::::1;:54::i;:::-;30550:80:::0;-1:-1:-1;30641:23:0::1;30667:31;:10:::0;30550:80;30667:14:::1;:31::i;:::-;30727:1;30709:15;:19:::0;;;30739:15:::1;:19:::0;;;30795:9:::1;::::0;30787:51:::1;::::0;30641:57;;-1:-1:-1;30727:1:0;;-1:-1:-1;;;;;30795:9:0;;::::1;::::0;30818:15;;30727:1;30787:51;30727:1;30787:51;30818:15;30795:9;30787:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30769:69;;;30849:49;30862:18;30882:15;30849:12;:49::i;:::-;30914:71;::::0;;12334:25:1;;;12390:2;12375:18;;12368:34;;;12418:18;;;12411:34;;;30914:71:0::1;::::0;12322:2:1;12307:18;30914:71:0::1;;;;;;;30999:21;:34:::0;30996:135:::1;;31070:9;::::0;31062:57:::1;::::0;-1:-1:-1;;;;;31070:9:0;;::::1;::::0;31093:21:::1;::::0;31062:57:::1;::::0;;;31093:21;31070:9;31062:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;31049:70:0;;-1:-1:-1;;30996:135:0::1;-1:-1:-1::0;;17019:16:0;:24;;-1:-1:-1;;;;17019:24:0;;;-1:-1:-1;;;;;;;29847:1291:0:o;33199:788::-;33309:7;33304:28;;33318:14;:12;:14::i;:::-;-1:-1:-1;;;;;33347:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33371:22:0;;;;;;:11;:22;;;;;;;;33370:23;33347:46;33343:597;;;33410:48;33432:6;33440:9;33451:6;33410:21;:48::i;:::-;33343:597;;;-1:-1:-1;;;;;33481:19:0;;;;;;:11;:19;;;;;;;;33480:20;:46;;;;-1:-1:-1;;;;;;33504:22:0;;;;;;:11;:22;;;;;;;;33480:46;33476:464;;;33543:46;33563:6;33571:9;33582:6;33543:19;:46::i;33476:464::-;-1:-1:-1;;;;;33612:19:0;;;;;;:11;:19;;;;;;;;33611:20;:47;;;;-1:-1:-1;;;;;;33636:22:0;;;;;;:11;:22;;;;;;;;33635:23;33611:47;33607:333;;;33675:44;33693:6;33701:9;33712:6;33675:17;:44::i;33607:333::-;-1:-1:-1;;;;;33741:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;33764:22:0;;;;;;:11;:22;;;;;;;;33741:45;33737:203;;;33803:48;33825:6;33833:9;33844:6;33803:21;:48::i;33737:203::-;33884:44;33902:6;33910:9;33921:6;33884:17;:44::i;:::-;33955:7;33950:29;;24097:15;;;-1:-1:-1;;;;;;24123:25:0;;24097:15;;;;;;;24123:25;;;24133:15;-1:-1:-1;;24087:25:0;;;;;;;24133:15;;;;;;-1:-1:-1;;;24123:25:0;;24195:28;;;-1:-1:-1;;;;;24169:15:0;;;;-1:-1:-1;;;24159:25:0;24195:28;;;;;;;24206:17;-1:-1:-1;;24159:25:0;;;;;;24206:17;;;;;;24195:28;;;24234:27;;;-1:-1:-1;;;24245:16:0;;;;;;-1:-1:-1;;;24234:27:0;;;;33964:15;24043:226;22146:556;22244:7;;22197;;;;15120:13;22197:7;22298:289;22322:9;:16;22318:20;;22298:289;;;22388:7;22364;:21;22372:9;22382:1;22372:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22372:12:0;22364:21;;;;;;;;;;;;;:31;;:66;;;22423:7;22399;:21;22407:9;22417:1;22407:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22407:12:0;22399:21;;;;;;;;;;;;;:31;22364:66;22360:97;;;-1:-1:-1;;22440:7:0;;;15120:13;;-1:-1:-1;22146:556:0;-1:-1:-1;;22146:556:0:o;22360:97::-;22482:34;22494:7;:21;22502:9;22512:1;22502:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22502:12:0;22494:21;;;;;;;;;;;;;22482:7;;:11;:34::i;:::-;22472:44;;22541:34;22553:7;:21;22561:9;22571:1;22561:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22561:12:0;22553:21;;;;;;;;;;;;;22541:7;;:11;:34::i;:::-;22531:44;-1:-1:-1;22340:3:0;;;;:::i;:::-;;;;22298:289;;;-1:-1:-1;22611:7:0;;:20;;15120:13;22611:11;:20::i;:::-;22601:7;:30;22597:61;;;-1:-1:-1;;22641:7:0;;;15120:13;;-1:-1:-1;22146:556:0;-1:-1:-1;22146:556:0:o;22597:61::-;22677:7;;22686;;-1:-1:-1;22146:556:0;-1:-1:-1;22146:556:0:o;21213:327::-;21272:7;21280;21288;21308:12;21323:24;21339:7;21323:15;:24::i;:::-;21308:39;;21358:18;21379:30;21401:7;21379:21;:30::i;:::-;21358:51;-1:-1:-1;21420:23:0;21446:33;21358:51;21446:17;:7;21458:4;21446:11;:17::i;:::-;:21;;:33::i;:::-;21420:59;21515:4;;-1:-1:-1;21521:10:0;;-1:-1:-1;21213:327:0;;-1:-1:-1;;;21213:327:0:o;21546:424::-;21658:7;;;;21712:24;:7;21724:11;21712;:24::i;:::-;21694:42;-1:-1:-1;21747:12:0;21762:21;:4;21771:11;21762:8;:21::i;:::-;21747:36;-1:-1:-1;21794:18:0;21815:27;:10;21830:11;21815:14;:27::i;:::-;21794:48;-1:-1:-1;21853:23:0;21879:33;21794:48;21879:17;:7;21891:4;21879:11;:17::i;:33::-;21931:7;;;;-1:-1:-1;21957:4:0;;-1:-1:-1;21546:424:0;;-1:-1:-1;;;;;;;21546:424:0:o;4168:98::-;4226:7;4253:5;4257:1;4253;:5;:::i;31146:496::-;31236:16;;;31250:1;31236:16;;;;;;;;31212:21;;31236:16;;;;;;;;;;-1:-1:-1;31236:16:0;31212:40;;31281:4;31263;31268:1;31263:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31263:23:0;;;:7;;;;;;;;;;:23;;;;31307:11;;:18;;;-1:-1:-1;;;31307:18:0;;;;:11;;;;;:16;;:18;;;;;31263:7;;31307:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31297:4;31302:1;31297:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31297:28:0;;;:7;;;;;;;;;:28;31368:11;;31336:58;;31353:4;;31368:11;31382;31336:8;:58::i;:::-;31405:11;;-1:-1:-1;;;;;31405:11:0;:62;31482:11;31405;31552:4;31579;31599:24;:15;31619:3;31599:19;:24::i;:::-;31405:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31201:441;31146:496;:::o;31648:412::-;31761:11;;31729:58;;31746:4;;-1:-1:-1;;;;;31761:11:0;31775;31729:8;:58::i;:::-;31798:11;;;31998:4;-1:-1:-1;;;;;31798:11:0;;;;:27;;31833:9;;31866:4;;31886:11;;31798;;;;31998:4;32017:24;:15;32037:3;32017:19;:24::i;:::-;31798:254;;;;;;-1:-1:-1;;;;;;31798:254:0;;;-1:-1:-1;;;;;4347:15:1;;;31798:254:0;;;4329:34:1;4379:18;;;4372:34;;;;4422:18;;;4415:34;;;;4465:18;;;4458:34;;;;4529:15;;;4508:19;;;4501:44;4561:19;;;4554:35;;;;4263:19;;31798:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;23595:442::-;23642:7;;;;:12;:28;;;;-1:-1:-1;23658:7:0;;-1:-1:-1;;;23658:7:0;;;;:12;23642:28;:44;;;;-1:-1:-1;23674:7:0;;-1:-1:-1;;;23674:7:0;;;;:12;23642:44;:61;;;;-1:-1:-1;23690:8:0;;;;;;;:13;23642:61;:78;;;;-1:-1:-1;23707:8:0;;-1:-1:-1;;;23707:8:0;;;;:13;23642:78;23638:91;;;23595:442::o;23638:91::-;23759:7;;;-1:-1:-1;;;;;;23777:25:0;;-1:-1:-1;;23759:7:0;;;;;23741:25;;;;23777;;;;;;;-1:-1:-1;;;;;23741:25:0;;;;;;23795:7;;;;;;23777:25;;;;;;23849:28;;;-1:-1:-1;;;;;23831:7:0;;;;-1:-1:-1;;;23813:25:0;23849:28;;;;;;;23869:8;-1:-1:-1;;23813:25:0;;;;;;23869:8;;;;;;23849:28;;;24017:12;;;-1:-1:-1;;;23907:8:0;;;;;;-1:-1:-1;;;23888:27:0;-1:-1:-1;;24017:12:0;;;;23595:442::o;35256:650::-;35371:15;35401:23;35439:12;35466:23;35504:12;35531:18;35563:19;35574:7;35563:10;:19::i;:::-;-1:-1:-1;;;;;35611:15:0;;;;;;:7;:15;;;;;;35356:226;;-1:-1:-1;35356:226:0;;-1:-1:-1;35356:226:0;;-1:-1:-1;35356:226:0;-1:-1:-1;35356:226:0;-1:-1:-1;35356:226:0;-1:-1:-1;35611:28:0;;35631:7;35611:19;:28::i;:::-;-1:-1:-1;;;;;35593:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35668:7;:15;;;;:28;;35688:7;35668:19;:28::i;:::-;-1:-1:-1;;;;;35650:15:0;;;;;;;:7;:15;;;;;;:46;;;;35728:18;;;;;;;:39;;35751:15;35728:22;:39::i;:::-;-1:-1:-1;;;;;35707:18:0;;;;;;:7;:18;;;;;:60;35778:26;35793:10;35778:14;:26::i;:::-;35815:23;35827:4;35833;35815:11;:23::i;:::-;35871:9;-1:-1:-1;;;;;35854:44:0;35863:6;-1:-1:-1;;;;;35854:44:0;;35882:15;35854:44;;;;11509:25:1;;11497:2;11482:18;;11363:177;35854:44:0;;;;;;;;35345:561;;;;;;35256:650;;;:::o;34588:662::-;34701:15;34731:23;34769:12;34796:23;34834:12;34861:18;34893:19;34904:7;34893:10;:19::i;:::-;-1:-1:-1;;;;;34941:15:0;;;;;;:7;:15;;;;;;34686:226;;-1:-1:-1;34686:226:0;;-1:-1:-1;34686:226:0;;-1:-1:-1;34686:226:0;-1:-1:-1;34686:226:0;-1:-1:-1;34686:226:0;-1:-1:-1;34941:28:0;;34686:226;34941:19;:28::i;:::-;-1:-1:-1;;;;;34923:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;35001:18;;;;;:7;:18;;;;;:39;;35024:15;35001:22;:39::i;:::-;-1:-1:-1;;;;;34980:18:0;;;;;;:7;:18;;;;;;;;:60;;;;35072:7;:18;;;;:39;;35095:15;35072:22;:39::i;33993:589::-;34104:15;34134:23;34172:12;34199:23;34237:12;34264:18;34296:19;34307:7;34296:10;:19::i;:::-;-1:-1:-1;;;;;34344:15:0;;;;;;:7;:15;;;;;;34089:226;;-1:-1:-1;34089:226:0;;-1:-1:-1;34089:226:0;;-1:-1:-1;34089:226:0;-1:-1:-1;34089:226:0;-1:-1:-1;34089:226:0;-1:-1:-1;34344:28:0;;34089:226;34344:19;:28::i;35912:721::-;36027:15;36057:23;36095:12;36122:23;36160:12;36187:18;36219:19;36230:7;36219:10;:19::i;:::-;-1:-1:-1;;;;;36267:15:0;;;;;;:7;:15;;;;;;36012:226;;-1:-1:-1;36012:226:0;;-1:-1:-1;36012:226:0;;-1:-1:-1;36012:226:0;-1:-1:-1;36012:226:0;-1:-1:-1;36012:226:0;-1:-1:-1;36267:28:0;;36287:7;36267:19;:28::i;:::-;-1:-1:-1;;;;;36249:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36324:7;:15;;;;:28;;36344:7;36324:19;:28::i;23285:130::-;23388:7;;23349;;23376:31;;23401:5;;23376:20;;:7;;23388;;23376:11;:20::i;23421:168::-;23561:8;;23491:7;;23518:63;;23575:5;;23518:52;;23561:8;-1:-1:-1;;;23561:8:0;;;;;-1:-1:-1;;;23551:7:0;;;;;23530:18;;23540:8;;;;;;-1:-1:-1;;;23530:7:0;;;;:18;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;23518:7;;:52;;:11;:52::i;22708:571::-;22809:7;;;-1:-1:-1;;;22809:7:0;;;;;22785:21;;22798:8;;;;;22785:10;:21;:::i;:::-;:31;;;;:::i;:::-;22771:10;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;22869:7:0;;;-1:-1:-1;;;22869:7:0;;;;;22846:20;;-1:-1:-1;;;22859:7:0;;;;22846:10;:20;:::i;:::-;:30;;;;:::i;:::-;22827:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;22923:7:0;;;-1:-1:-1;;;22923:7:0;;;;;22900:20;;-1:-1:-1;;;22913:7:0;;;;22900:10;:20;:::i;:::-;:30;;;;:::i;:::-;22881:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;22982:7:0;;;-1:-1:-1;;;22982:7:0;;;;;22958:21;;-1:-1:-1;;;22971:8:0;;;;22958:10;:21;:::i;:::-;:31;;;;:::i;:::-;22941:13;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;23000:19:0;;-1:-1:-1;23022:10:0;:8;:10::i;:::-;23000:32;-1:-1:-1;23043:18:0;23064:27;:10;23000:32;23064:14;:27::i;:::-;23143:4;23127:22;;;;:7;:22;;;;;;23043:48;;-1:-1:-1;23127:38:0;;23043:48;23127:26;:38::i;:::-;23118:4;23102:22;;;;:7;:22;;;;;;;;:63;;;;23180:11;:26;;;;;;23176:95;;;23249:4;23233:22;;;;:7;:22;;;;;;:38;;23260:10;23233:26;:38::i;:::-;23224:4;23208:22;;;;:7;:22;;;;;:63;23176:95;22760:519;;22708:571;:::o;20640:147::-;20718:7;;:17;;20730:4;20718:11;:17::i;:::-;20708:7;:27;20759:10;;:20;;20774:4;20759:14;:20::i;:::-;20746:10;:33;-1:-1:-1;;20640:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2484:306;;;;;:::o;2795:461::-;2848:3;2886:5;2880:12;2913:6;2908:3;2901:19;2939:4;2968:2;2963:3;2959:12;2952:19;;3005:2;2998:5;2994:14;3026:1;3036:195;3050:6;3047:1;3044:13;3036:195;;;3115:13;;-1:-1:-1;;;;;3111:39:1;3099:52;;3171:12;;;;3206:15;;;;3147:1;3065:9;3036:195;;;-1:-1:-1;3247:3:1;;2795:461;-1:-1:-1;;;;;2795:461:1:o;4792:510::-;5063:6;5052:9;5045:25;5106:3;5101:2;5090:9;5086:18;5079:31;5026:4;5127:57;5179:3;5168:9;5164:19;5156:6;5127:57;:::i;:::-;-1:-1:-1;;;;;5220:32:1;;;;5215:2;5200:18;;5193:60;-1:-1:-1;5284:2:1;5269:18;5262:34;5119:65;4792:510;-1:-1:-1;;4792:510:1:o;5307:597::-;5419:4;5448:2;5477;5466:9;5459:21;5509:6;5503:13;5552:6;5547:2;5536:9;5532:18;5525:34;5577:1;5587:140;5601:6;5598:1;5595:13;5587:140;;;5696:14;;;5692:23;;5686:30;5662:17;;;5681:2;5658:26;5651:66;5616:10;;5587:140;;;5745:6;5742:1;5739:13;5736:91;;;5815:1;5810:2;5801:6;5790:9;5786:22;5782:31;5775:42;5736:91;-1:-1:-1;5888:2:1;5867:15;-1:-1:-1;;5863:29:1;5848:45;;;;5895:2;5844:54;;5307:597;-1:-1:-1;;;5307:597:1:o;9688:401::-;9890:2;9872:21;;;9929:2;9909:18;;;9902:30;9968:34;9963:2;9948:18;;9941:62;-1:-1:-1;;;10034:2:1;10019:18;;10012:35;10079:3;10064:19;;9688:401::o;11545:582::-;11844:6;11833:9;11826:25;11887:6;11882:2;11871:9;11867:18;11860:34;11930:3;11925:2;11914:9;11910:18;11903:31;11807:4;11951:57;12003:3;11992:9;11988:19;11980:6;11951:57;:::i;:::-;-1:-1:-1;;;;;12044:32:1;;;;12039:2;12024:18;;12017:60;-1:-1:-1;12108:3:1;12093:19;12086:35;11943:65;11545:582;-1:-1:-1;;;11545:582:1:o;12645:128::-;12685:3;12716:1;12712:6;12709:1;12706:13;12703:39;;;12722:18;;:::i;:::-;-1:-1:-1;12758:9:1;;12645:128::o;12778:204::-;12816:3;12852:4;12849:1;12845:12;12884:4;12881:1;12877:12;12919:3;12913:4;12909:14;12904:3;12901:23;12898:49;;;12927:18;;:::i;:::-;12963:13;;12778:204;-1:-1:-1;;;12778:204:1:o;12987:217::-;13027:1;13053;13043:132;;13097:10;13092:3;13088:20;13085:1;13078:31;13132:4;13129:1;13122:15;13160:4;13157:1;13150:15;13043:132;-1:-1:-1;13189:9:1;;12987:217::o;13209:168::-;13249:7;13315:1;13311;13307:6;13303:14;13300:1;13297:21;13292:1;13285:9;13278:17;13274:45;13271:71;;;13322:18;;:::i;:::-;-1:-1:-1;13362:9:1;;13209:168::o;13382:238::-;13420:7;13460:4;13457:1;13453:12;13492:4;13489:1;13485:12;13552:3;13546:4;13542:14;13537:3;13534:23;13527:3;13520:11;13513:19;13509:49;13506:75;;;13561:18;;:::i;:::-;13601:13;;13382:238;-1:-1:-1;;;13382:238:1:o;13625:125::-;13665:4;13693:1;13690;13687:8;13684:34;;;13698:18;;:::i;:::-;-1:-1:-1;13735:9:1;;13625:125::o;13755:135::-;13794:3;-1:-1:-1;;13815:17:1;;13812:43;;;13835:18;;:::i;:::-;-1:-1:-1;13882:1:1;13871:13;;13755:135::o;13895:127::-;13956:10;13951:3;13947:20;13944:1;13937:31;13987:4;13984:1;13977:15;14011:4;14008:1;14001:15;14027:127;14088:10;14083:3;14079:20;14076:1;14069:31;14119:4;14116:1;14109:15;14143:4;14140:1;14133:15;14291:131;-1:-1:-1;;;;;14366:31:1;;14356:42;;14346:70;;14412:1;14409;14402:12;14346:70;14291:131;:::o
Swarm Source
ipfs://49376e4918ea42597b77a41afaabfc2b57c57a5727308d74f737553c20702239
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.