Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 DLOOT
Holders
43
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,225,106,427,851.665375339 DLOOTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DLOOT
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-09-04 */ /* DLOOT - Doont loot Main features are 1) 1% tax is collected and distributed to holders for HODLing 2) 4% tax is collected for dev fees */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // pragma solidity >=0.5.0; 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; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure 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); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; 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); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract DLOOT is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public marketingAddress = payable(0x00000070AA962d289F5aC55E67E44881a41A2A26); // dev Address address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000 * 10**6 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "DOONT LOOT"; string private _symbol = "DLOOT"; uint8 private _decimals = 9; uint256 public _taxFee = 1; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 4; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public marketingDivisor = 4; uint256 public _maxTxAmount = 3000000 * 10**6 * 10**9; uint256 private minimumTokensBeforeSwap = 20000 * 10**6 * 10**9; uint256 private buyBackUpperLimit = 1 * 10**17; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; bool public buyBackEnabled = true; event RewardLiquidityProviders(uint256 tokenAmount); event BuyBackEnabledUpdated(bool enabled); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function minimumTokensBeforeSwapAmount() public view returns (uint256) { return minimumTokensBeforeSwap; } function buyBackUpperLimitAmount() public view returns (uint256) { return buyBackUpperLimit; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount 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, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from != owner() && to != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; // if (!inSwapAndLiquify && swapAndLiquifyEnabled && to == uniswapV2Pair) { // if (overMinimumTokenBalance) { // contractTokenBalance = minimumTokensBeforeSwap; // swapTokens(contractTokenBalance); // } // uint256 balance = address(this).balance; // if (buyBackEnabled && balance > uint256(1 * 10**17)) { // // if (balance > buyBackUpperLimit) // balance = buyBackUpperLimit; // // buyBackTokens(balance.div(100)); // } // } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapTokens(uint256 contractTokenBalance) private lockTheSwap { uint256 initialBalance = address(this).balance; swapTokensForEth(contractTokenBalance); uint256 transferredBalance = address(this).balance.sub(initialBalance); //Send to Marketing address transferToAddressETH(marketingAddress, transferredBalance.div(_liquidityFee).mul(marketingDivisor)); } function buyBackTokens(uint256 amount) private lockTheSwap { if (amount > 0) { swapETHForTokens(amount); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); // make the swap uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, deadAddress, // Burn address block.timestamp.add(300) ); emit SwapETHForTokens(amount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } 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 _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 { 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(_taxFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { _liquidityFee = liquidityFee; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function setMarketingDivisor(uint256 divisor) external onlyOwner() { marketingDivisor = divisor; } function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() { buyBackUpperLimit = buyBackLimit * 10**17; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setBuyBackEnabled(bool _enabled) public onlyOwner { buyBackEnabled = _enabled; emit BuyBackEnabledUpdated(_enabled); } function prepareForPreSale() external onlyOwner { setSwapAndLiquifyEnabled(false); _taxFee = 0; _liquidityFee = 0; _maxTxAmount = 1000000000 * 10**6 * 10**9; } function afterPreSale() external onlyOwner { setSwapAndLiquifyEnabled(true); _taxFee = 1; _liquidityFee = 4; _maxTxAmount = 100000000 * 10**6 * 10**9; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"afterPreSale","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":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prepareForPreSale","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMarketingDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e0604052600380546001600160a01b0319167070aa962d289f5ac55e67e44881a41a2a261790556ddead00000000000000000000000060805269d3c21bcecceda1000000600a819055620000579060001962000524565b6200006590600019620004c3565b600b5560408051808201909152600a808252691113d3d395081313d3d560b21b60209092019182526200009b91600d91620003ed565b5060408051808201909152600580825264111313d3d560da1b6020909201918252620000ca91600e91620003ed565b50600f805460ff191660091790556001601081905560115560046012819055601381905560145568a2a15d09519be000006015556801158e460913d0000060165567016345785d8a00006017556018805462ffff001916620100001790553480156200013557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526004602081815260409283902093909355815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938181019391829003018186803b158015620001d757600080fd5b505afa158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000212919062000493565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025b57600080fd5b505afa15801562000270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000296919062000493565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002df57600080fd5b505af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000493565b6001600160601b0319606091821b811660c0529082901b1660a0526001600760006200034e6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526007909252902080549091166001179055620003963390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003de91815260200190565b60405180910390a35062000545565b828054620003fb90620004e7565b90600052602060002090601f0160209004810192826200041f57600085556200046a565b82601f106200043a57805160ff19168380011785556200046a565b828001600101855582156200046a579182015b828111156200046a5782518255916020019190600101906200044d565b50620004789291506200047c565b5090565b5b808211156200047857600081556001016200047d565b600060208284031215620004a5578081fd5b81516001600160a01b0381168114620004bc578182fd5b9392505050565b600082821015620004e257634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620004fc57607f821691505b602082108114156200051e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200054057634e487b7160e01b81526012600452602481fd5b500690565b60805160601c60a05160601c60c05160601c61271c6200057e6000396000610584015260006103b701526000610438015261271c6000f3fe6080604052600436106102e85760003560e01c80636053a0e311610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636053a0e31461065b5780636bc87c3a1461067b57806370a0823114610691578063715018a6146106b15780637d1db4a5146106c657806382d2a4bb146106dc57600080fd5b80633685d4191161024f57806349bd5a5e1161020857806352390c02116101e257806352390c02146105da5780635342acb4146105fa578063557ed1ba14610633578063602bc62b1461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a65780635134f6ab146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806318160ddd116102a157806318160ddd146103f157806323b872dd1461040657806327c8f8351461042657806329370cc61461045a5780632d8381191461047a578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde031461031657806307efbfdc14610341578063095ea7b31461035657806313114a9d146103865780631694505e146103a557600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f3660046124dd565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612517565b60405180910390f35b34801561034d57600080fd5b50610314610a4d565b34801561036257600080fd5b5061037661037136600461249a565b610a9b565b6040519015158152602001610338565b34801561039257600080fd5b50600c545b604051908152602001610338565b3480156103b157600080fd5b506103d97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610338565b3480156103fd57600080fd5b50600a54610397565b34801561041257600080fd5b5061037661042136600461245f565b610ab2565b34801561043257600080fd5b506103d97f000000000000000000000000000000000000000000000000000000000000000081565b34801561046657600080fd5b506103146104753660046124c3565b610b1b565b34801561048657600080fd5b506103976104953660046124dd565b610b9b565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612413565b610c1f565b3480156104e857600080fd5b506103766104f736600461249a565b610e0e565b34801561050857600080fd5b5061039760105481565b34801561051e57600080fd5b5061031461052d3660046124dd565b610e44565b34801561053e57600080fd5b5061031461054d366004612413565b610f2e565b34801561055e57600080fd5b5061039761056d3660046124f5565b610f7c565b34801561057e57600080fd5b506103d97f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b257600080fd5b5060185461037690610100900460ff1681565b3480156105d157600080fd5b50610314611009565b3480156105e657600080fd5b506103146105f5366004612413565b611057565b34801561060657600080fd5b50610376610615366004612413565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063f57600080fd5b5042610397565b34801561065257600080fd5b50600254610397565b34801561066757600080fd5b506018546103769062010000900460ff1681565b34801561068757600080fd5b5061039760125481565b34801561069d57600080fd5b506103976106ac366004612413565b6111aa565b3480156106bd57600080fd5b50610314611209565b3480156106d257600080fd5b5061039760155481565b3480156106e857600080fd5b506103146106f73660046124dd565b61126b565b34801561070857600080fd5b50610376610717366004612413565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103d9565b34801561075f57600080fd5b5061031461076e3660046124dd565b6112ad565b34801561077f57600080fd5b5061031461078e366004612413565b6112dc565b34801561079f57600080fd5b5061032b611328565b3480156107b457600080fd5b50601654610397565b3480156107c957600080fd5b506103766107d836600461249a565b611337565b3480156107e957600080fd5b506003546103d9906001600160a01b031681565b34801561080957600080fd5b50610314611386565b34801561081e57600080fd5b5061037661082d36600461249a565b61148c565b34801561083e57600080fd5b5061031461084d3660046124dd565b611499565b34801561085e57600080fd5b50601754610397565b34801561087357600080fd5b506103146108823660046124c3565b6114c8565b34801561089357600080fd5b5061039760145481565b3480156108a957600080fd5b506103146108b83660046124dd565b61153b565b3480156108c957600080fd5b506103976108d836600461242d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612413565b6115c0565b34801561092f57600080fd5b5061031461093e3660046124dd565b61160b565b34801561094f57600080fd5b5061031461095e3660046124dd565b61163a565b34801561096f57600080fd5b5061031461097e366004612413565b611669565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad9061256a565b60405180910390fd5b601055565b6060600d80546109ca9061260d565b80601f01602080910402602001604051908101604052809291908181526020018280546109f69061260d565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a775760405162461bcd60e51b81526004016109ad9061256a565b610a8160016114c8565b6001601055600460125569152d02c7e14af6800000601555565b6000610aa8338484611741565b5060015b92915050565b6000610abf848484611865565b610b118433610b0c8560405180606001604052806028815260200161267a602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611a95565b611741565b5060019392505050565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016109ad9061256a565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b9090831515815260200190565b60405180910390a150565b6000600b54821115610c025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610c0c611acf565b9050610c188382611af2565b9392505050565b6000546001600160a01b03163314610c495760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03811660009081526008602052604090205460ff16610cb15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610e0a57816001600160a01b031660098281548110610ce957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610df85760098054610d14906001906125f6565b81548110610d3257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b039092169183908110610d6c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610dd257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e0281612648565b915050610cb4565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610aa8918590610b0c9086611b34565b3360008181526008602052604090205460ff1615610eb95760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610ec483611b93565b505050506001600160a01b038416600090815260046020526040902054919250610ef091905082611be2565b6001600160a01b038316600090815260046020526040902055600b54610f169082611be2565b600b55600c54610f269084611b34565b600c55505050565b6000546001600160a01b03163314610f585760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610fd05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fef576000610fe084611b93565b50939550610aac945050505050565b6000610ffa84611b93565b50929550610aac945050505050565b6000546001600160a01b031633146110335760405162461bcd60e51b81526004016109ad9061256a565b61103d60006114c8565b6000601081905560125569d3c21bcecceda1000000601555565b6000546001600160a01b031633146110815760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03811660009081526008602052604090205460ff16156110ea5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b03811660009081526004602052604090205415611144576001600160a01b03811660009081526004602052604090205461112a90610b9b565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff16156111e757506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610aac90610b9b565b6000546001600160a01b031633146112335760405162461bcd60e51b81526004016109ad9061256a565b600080546040516001600160a01b03909116906000805160206126a2833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112955760405162461bcd60e51b81526004016109ad9061256a565b6112a78167016345785d8a00006125d7565b60175550565b6000546001600160a01b031633146112d75760405162461bcd60e51b81526004016109ad9061256a565b601255565b6000546001600160a01b031633146113065760405162461bcd60e51b81526004016109ad9061256a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca9061260d565b6000610aa83384610b0c856040518060600160405280602581526020016126c2602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611a95565b6001546001600160a01b031633146113ec5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b600254421161143d5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206126a283398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610aa8338484611865565b6000546001600160a01b031633146114c35760405162461bcd60e51b81526004016109ad9061256a565b601455565b6000546001600160a01b031633146114f25760405162461bcd60e51b81526004016109ad9061256a565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b9090831515815260200190565b6000546001600160a01b031633146115655760405162461bcd60e51b81526004016109ad9061256a565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611594814261259f565b600255600080546040516001600160a01b03909116906000805160206126a2833981519152908390a350565b6000546001600160a01b031633146115ea5760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad9061256a565b601555565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad9061256a565b601655565b6000546001600160a01b031633146116935760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206126a283398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166118045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b03821661192b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161198d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b038481169116148015906119b957506000546001600160a01b03838116911614155b15611a2157601554811115611a215760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b6000611a2c306111aa565b6016546001600160a01b0386166000908152600760205260409020549192508210159060019060ff1680611a7857506001600160a01b03851660009081526007602052604090205460ff165b15611a81575060005b611a8d86868684611c24565b505050505050565b60008184841115611ab95760405162461bcd60e51b81526004016109ad9190612517565b506000611ac684866125f6565b95945050505050565b6000806000611adc611d4f565b9092509050611aeb8282611af2565b9250505090565b6000610c1883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f09565b600080611b41838561259f565b905083811015610c185760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611baa8a611f37565b9250925092506000806000611bc88d8686611bc3611acf565b611f79565b919f909e50909c50959a5093985091965092945050505050565b6000610c1883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a95565b80611c3157611c31611fc9565b6001600160a01b03841660009081526008602052604090205460ff168015611c7257506001600160a01b03831660009081526008602052604090205460ff16155b15611c8757611c82848484611ff7565b611d33565b6001600160a01b03841660009081526008602052604090205460ff16158015611cc857506001600160a01b03831660009081526008602052604090205460ff165b15611cd857611c8284848461211d565b6001600160a01b03841660009081526008602052604090205460ff168015611d1857506001600160a01b03831660009081526008602052604090205460ff165b15611d2857611c828484846121c6565b611d33848484612239565b80611d4957611d49601154601055601354601255565b50505050565b600b54600a546000918291825b600954811015611ed957826004600060098481548110611d8c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e055750816005600060098481548110611dde57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e1b57600b54600a54945094505050509091565b611e6f6004600060098481548110611e4357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be2565b9250611ec56005600060098481548110611e9957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be2565b915080611ed181612648565b915050611d5c565b50600a54600b54611ee991611af2565b821015611f0057600b54600a549350935050509091565b90939092509050565b60008183611f2a5760405162461bcd60e51b81526004016109ad9190612517565b506000611ac684866125b7565b600080600080611f468561227d565b90506000611f538661229f565b90506000611f6b82611f658986611be2565b90611be2565b979296509094509092505050565b6000808080611f8888866122bb565b90506000611f9688876122bb565b90506000611fa488886122bb565b90506000611fb682611f658686611be2565b939b939a50919850919650505050505050565b601054158015611fd95750601254155b15611fe057565b601080546011556012805460135560009182905555565b60008060008060008061200987611b93565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061203b9088611be2565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461206a9087611be2565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546120999086611b34565b6001600160a01b0389166000908152600460205260409020556120bb8161233a565b6120c584836123c3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210a91815260200190565b60405180910390a3505050505050505050565b60008060008060008061212f87611b93565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506121619087611be2565b6001600160a01b03808b16600090815260046020908152604080832094909455918b168152600590915220546121979084611b34565b6001600160a01b0389166000908152600560209081526040808320939093556004905220546120999086611b34565b6000806000806000806121d887611b93565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061220a9088611be2565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546121619087611be2565b60008060008060008061224b87611b93565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061206a9087611be2565b6000610aac6064612299601054856122bb90919063ffffffff16565b90611af2565b6000610aac6064612299601254856122bb90919063ffffffff16565b6000826122ca57506000610aac565b60006122d683856125d7565b9050826122e385836125b7565b14610c185760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612344611acf565b9050600061235283836122bb565b3060009081526004602052604090205490915061236f9082611b34565b3060009081526004602090815260408083209390935560089052205460ff16156123be57306000908152600560205260409020546123ad9084611b34565b306000908152600560205260409020555b505050565b600b546123d09083611be2565b600b55600c546123e09082611b34565b600c555050565b80356001600160a01b03811681146123fe57600080fd5b919050565b803580151581146123fe57600080fd5b600060208284031215612424578081fd5b610c18826123e7565b6000806040838503121561243f578081fd5b612448836123e7565b9150612456602084016123e7565b90509250929050565b600080600060608486031215612473578081fd5b61247c846123e7565b925061248a602085016123e7565b9150604084013590509250925092565b600080604083850312156124ac578182fd5b6124b5836123e7565b946020939093013593505050565b6000602082840312156124d4578081fd5b610c1882612403565b6000602082840312156124ee578081fd5b5035919050565b60008060408385031215612507578182fd5b8235915061245660208401612403565b6000602080835283518082850152825b8181101561254357858101830151858201604001528201612527565b818111156125545783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156125b2576125b2612663565b500190565b6000826125d257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156125f1576125f1612663565b500290565b60008282101561260857612608612663565b500390565b600181811c9082168061262157607f821691505b6020821081141561264257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561265c5761265c612663565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220329d65dbc700aa05da55e2b3c573e654a7e5aa3079c785f6cbc65a496c694f8f64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102e85760003560e01c80636053a0e311610190578063a5ece941116100dc578063d6b513cf11610095578063ea2f0b371161006f578063ea2f0b3714610903578063ec28438a14610923578063f0f165af14610943578063f2fde38b1461096357600080fd5b8063d6b513cf14610887578063dd4670641461089d578063dd62ed3e146108bd57600080fd5b8063a5ece941146107dd578063a69df4b5146107fd578063a9059cbb14610812578063b0cb81f114610832578063bdc653ef14610852578063c49b9a801461086757600080fd5b806388f8202011610149578063906e9dd011610123578063906e9dd01461077357806395d89b4114610793578063a073d37f146107a8578063a457c2d7146107bd57600080fd5b806388f82020146106fc5780638da5cb5b146107355780638ee88c531461075357600080fd5b80636053a0e31461065b5780636bc87c3a1461067b57806370a0823114610691578063715018a6146106b15780637d1db4a5146106c657806382d2a4bb146106dc57600080fd5b80633685d4191161024f57806349bd5a5e1161020857806352390c02116101e257806352390c02146105da5780635342acb4146105fa578063557ed1ba14610633578063602bc62b1461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a65780635134f6ab146105c557600080fd5b80633685d419146104bc57806339509351146104dc5780633b124fe7146104fc5780633bd5d17314610512578063437823ec146105325780634549b0391461055257600080fd5b806318160ddd116102a157806318160ddd146103f157806323b872dd1461040657806327c8f8351461042657806329370cc61461045a5780632d8381191461047a578063313ce5671461049a57600080fd5b8063061c82d0146102f457806306fdde031461031657806307efbfdc14610341578063095ea7b31461035657806313114a9d146103865780631694505e146103a557600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f3660046124dd565b610983565b005b34801561032257600080fd5b5061032b6109bb565b6040516103389190612517565b60405180910390f35b34801561034d57600080fd5b50610314610a4d565b34801561036257600080fd5b5061037661037136600461249a565b610a9b565b6040519015158152602001610338565b34801561039257600080fd5b50600c545b604051908152602001610338565b3480156103b157600080fd5b506103d97f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610338565b3480156103fd57600080fd5b50600a54610397565b34801561041257600080fd5b5061037661042136600461245f565b610ab2565b34801561043257600080fd5b506103d97f000000000000000000000000000000000000000000000000000000000000dead81565b34801561046657600080fd5b506103146104753660046124c3565b610b1b565b34801561048657600080fd5b506103976104953660046124dd565b610b9b565b3480156104a657600080fd5b50600f5460405160ff9091168152602001610338565b3480156104c857600080fd5b506103146104d7366004612413565b610c1f565b3480156104e857600080fd5b506103766104f736600461249a565b610e0e565b34801561050857600080fd5b5061039760105481565b34801561051e57600080fd5b5061031461052d3660046124dd565b610e44565b34801561053e57600080fd5b5061031461054d366004612413565b610f2e565b34801561055e57600080fd5b5061039761056d3660046124f5565b610f7c565b34801561057e57600080fd5b506103d97f000000000000000000000000b9381798d118afad1c8a6b01f60ea44296fbc64f81565b3480156105b257600080fd5b5060185461037690610100900460ff1681565b3480156105d157600080fd5b50610314611009565b3480156105e657600080fd5b506103146105f5366004612413565b611057565b34801561060657600080fd5b50610376610615366004612413565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561063f57600080fd5b5042610397565b34801561065257600080fd5b50600254610397565b34801561066757600080fd5b506018546103769062010000900460ff1681565b34801561068757600080fd5b5061039760125481565b34801561069d57600080fd5b506103976106ac366004612413565b6111aa565b3480156106bd57600080fd5b50610314611209565b3480156106d257600080fd5b5061039760155481565b3480156106e857600080fd5b506103146106f73660046124dd565b61126b565b34801561070857600080fd5b50610376610717366004612413565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561074157600080fd5b506000546001600160a01b03166103d9565b34801561075f57600080fd5b5061031461076e3660046124dd565b6112ad565b34801561077f57600080fd5b5061031461078e366004612413565b6112dc565b34801561079f57600080fd5b5061032b611328565b3480156107b457600080fd5b50601654610397565b3480156107c957600080fd5b506103766107d836600461249a565b611337565b3480156107e957600080fd5b506003546103d9906001600160a01b031681565b34801561080957600080fd5b50610314611386565b34801561081e57600080fd5b5061037661082d36600461249a565b61148c565b34801561083e57600080fd5b5061031461084d3660046124dd565b611499565b34801561085e57600080fd5b50601754610397565b34801561087357600080fd5b506103146108823660046124c3565b6114c8565b34801561089357600080fd5b5061039760145481565b3480156108a957600080fd5b506103146108b83660046124dd565b61153b565b3480156108c957600080fd5b506103976108d836600461242d565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561090f57600080fd5b5061031461091e366004612413565b6115c0565b34801561092f57600080fd5b5061031461093e3660046124dd565b61160b565b34801561094f57600080fd5b5061031461095e3660046124dd565b61163a565b34801561096f57600080fd5b5061031461097e366004612413565b611669565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad9061256a565b60405180910390fd5b601055565b6060600d80546109ca9061260d565b80601f01602080910402602001604051908101604052809291908181526020018280546109f69061260d565b8015610a435780601f10610a1857610100808354040283529160200191610a43565b820191906000526020600020905b815481529060010190602001808311610a2657829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a775760405162461bcd60e51b81526004016109ad9061256a565b610a8160016114c8565b6001601055600460125569152d02c7e14af6800000601555565b6000610aa8338484611741565b5060015b92915050565b6000610abf848484611865565b610b118433610b0c8560405180606001604052806028815260200161267a602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611a95565b611741565b5060019392505050565b6000546001600160a01b03163314610b455760405162461bcd60e51b81526004016109ad9061256a565b60188054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b9090831515815260200190565b60405180910390a150565b6000600b54821115610c025760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109ad565b6000610c0c611acf565b9050610c188382611af2565b9392505050565b6000546001600160a01b03163314610c495760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03811660009081526008602052604090205460ff16610cb15760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b60005b600954811015610e0a57816001600160a01b031660098281548110610ce957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610df85760098054610d14906001906125f6565b81548110610d3257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600980546001600160a01b039092169183908110610d6c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600582526040808220829055600890925220805460ff191690556009805480610dd257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e0281612648565b915050610cb4565b5050565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610aa8918590610b0c9086611b34565b3360008181526008602052604090205460ff1615610eb95760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109ad565b6000610ec483611b93565b505050506001600160a01b038416600090815260046020526040902054919250610ef091905082611be2565b6001600160a01b038316600090815260046020526040902055600b54610f169082611be2565b600b55600c54610f269084611b34565b600c55505050565b6000546001600160a01b03163314610f585760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600a54831115610fd05760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109ad565b81610fef576000610fe084611b93565b50939550610aac945050505050565b6000610ffa84611b93565b50929550610aac945050505050565b6000546001600160a01b031633146110335760405162461bcd60e51b81526004016109ad9061256a565b61103d60006114c8565b6000601081905560125569d3c21bcecceda1000000601555565b6000546001600160a01b031633146110815760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03811660009081526008602052604090205460ff16156110ea5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109ad565b6001600160a01b03811660009081526004602052604090205415611144576001600160a01b03811660009081526004602052604090205461112a90610b9b565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff16156111e757506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610aac90610b9b565b6000546001600160a01b031633146112335760405162461bcd60e51b81526004016109ad9061256a565b600080546040516001600160a01b03909116906000805160206126a2833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112955760405162461bcd60e51b81526004016109ad9061256a565b6112a78167016345785d8a00006125d7565b60175550565b6000546001600160a01b031633146112d75760405162461bcd60e51b81526004016109ad9061256a565b601255565b6000546001600160a01b031633146113065760405162461bcd60e51b81526004016109ad9061256a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600e80546109ca9061260d565b6000610aa83384610b0c856040518060600160405280602581526020016126c2602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611a95565b6001546001600160a01b031633146113ec5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109ad565b600254421161143d5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109ad565b600154600080546040516001600160a01b0393841693909116916000805160206126a283398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610aa8338484611865565b6000546001600160a01b031633146114c35760405162461bcd60e51b81526004016109ad9061256a565b601455565b6000546001600160a01b031633146114f25760405162461bcd60e51b81526004016109ad9061256a565b601880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b9090831515815260200190565b6000546001600160a01b031633146115655760405162461bcd60e51b81526004016109ad9061256a565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611594814261259f565b600255600080546040516001600160a01b03909116906000805160206126a2833981519152908390a350565b6000546001600160a01b031633146115ea5760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146116355760405162461bcd60e51b81526004016109ad9061256a565b601555565b6000546001600160a01b031633146116645760405162461bcd60e51b81526004016109ad9061256a565b601655565b6000546001600160a01b031633146116935760405162461bcd60e51b81526004016109ad9061256a565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ad565b600080546040516001600160a01b03808516939216916000805160206126a283398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117a35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ad565b6001600160a01b0382166118045760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ad565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118c95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109ad565b6001600160a01b03821661192b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109ad565b6000811161198d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109ad565b6000546001600160a01b038481169116148015906119b957506000546001600160a01b03838116911614155b15611a2157601554811115611a215760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ad565b6000611a2c306111aa565b6016546001600160a01b0386166000908152600760205260409020549192508210159060019060ff1680611a7857506001600160a01b03851660009081526007602052604090205460ff165b15611a81575060005b611a8d86868684611c24565b505050505050565b60008184841115611ab95760405162461bcd60e51b81526004016109ad9190612517565b506000611ac684866125f6565b95945050505050565b6000806000611adc611d4f565b9092509050611aeb8282611af2565b9250505090565b6000610c1883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f09565b600080611b41838561259f565b905083811015610c185760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109ad565b6000806000806000806000806000611baa8a611f37565b9250925092506000806000611bc88d8686611bc3611acf565b611f79565b919f909e50909c50959a5093985091965092945050505050565b6000610c1883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a95565b80611c3157611c31611fc9565b6001600160a01b03841660009081526008602052604090205460ff168015611c7257506001600160a01b03831660009081526008602052604090205460ff16155b15611c8757611c82848484611ff7565b611d33565b6001600160a01b03841660009081526008602052604090205460ff16158015611cc857506001600160a01b03831660009081526008602052604090205460ff165b15611cd857611c8284848461211d565b6001600160a01b03841660009081526008602052604090205460ff168015611d1857506001600160a01b03831660009081526008602052604090205460ff165b15611d2857611c828484846121c6565b611d33848484612239565b80611d4957611d49601154601055601354601255565b50505050565b600b54600a546000918291825b600954811015611ed957826004600060098481548110611d8c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611e055750816005600060098481548110611dde57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611e1b57600b54600a54945094505050509091565b611e6f6004600060098481548110611e4357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611be2565b9250611ec56005600060098481548110611e9957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611be2565b915080611ed181612648565b915050611d5c565b50600a54600b54611ee991611af2565b821015611f0057600b54600a549350935050509091565b90939092509050565b60008183611f2a5760405162461bcd60e51b81526004016109ad9190612517565b506000611ac684866125b7565b600080600080611f468561227d565b90506000611f538661229f565b90506000611f6b82611f658986611be2565b90611be2565b979296509094509092505050565b6000808080611f8888866122bb565b90506000611f9688876122bb565b90506000611fa488886122bb565b90506000611fb682611f658686611be2565b939b939a50919850919650505050505050565b601054158015611fd95750601254155b15611fe057565b601080546011556012805460135560009182905555565b60008060008060008061200987611b93565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061203b9088611be2565b6001600160a01b038a1660009081526005602090815260408083209390935560049052205461206a9087611be2565b6001600160a01b03808b1660009081526004602052604080822093909355908a16815220546120999086611b34565b6001600160a01b0389166000908152600460205260409020556120bb8161233a565b6120c584836123c3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161210a91815260200190565b60405180910390a3505050505050505050565b60008060008060008061212f87611b93565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506121619087611be2565b6001600160a01b03808b16600090815260046020908152604080832094909455918b168152600590915220546121979084611b34565b6001600160a01b0389166000908152600560209081526040808320939093556004905220546120999086611b34565b6000806000806000806121d887611b93565b6001600160a01b038f16600090815260056020526040902054959b5093995091975095509350915061220a9088611be2565b6001600160a01b038a166000908152600560209081526040808320939093556004905220546121619087611be2565b60008060008060008061224b87611b93565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061206a9087611be2565b6000610aac6064612299601054856122bb90919063ffffffff16565b90611af2565b6000610aac6064612299601254856122bb90919063ffffffff16565b6000826122ca57506000610aac565b60006122d683856125d7565b9050826122e385836125b7565b14610c185760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109ad565b6000612344611acf565b9050600061235283836122bb565b3060009081526004602052604090205490915061236f9082611b34565b3060009081526004602090815260408083209390935560089052205460ff16156123be57306000908152600560205260409020546123ad9084611b34565b306000908152600560205260409020555b505050565b600b546123d09083611be2565b600b55600c546123e09082611b34565b600c555050565b80356001600160a01b03811681146123fe57600080fd5b919050565b803580151581146123fe57600080fd5b600060208284031215612424578081fd5b610c18826123e7565b6000806040838503121561243f578081fd5b612448836123e7565b9150612456602084016123e7565b90509250929050565b600080600060608486031215612473578081fd5b61247c846123e7565b925061248a602085016123e7565b9150604084013590509250925092565b600080604083850312156124ac578182fd5b6124b5836123e7565b946020939093013593505050565b6000602082840312156124d4578081fd5b610c1882612403565b6000602082840312156124ee578081fd5b5035919050565b60008060408385031215612507578182fd5b8235915061245660208401612403565b6000602080835283518082850152825b8181101561254357858101830151858201604001528201612527565b818111156125545783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156125b2576125b2612663565b500190565b6000826125d257634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156125f1576125f1612663565b500290565b60008282101561260857612608612663565b500390565b600181811c9082168061262157607f821691505b6020821081141561264257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561265c5761265c612663565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220329d65dbc700aa05da55e2b3c573e654a7e5aa3079c785f6cbc65a496c694f8f64736f6c63430008040033
Deployed Bytecode Sourcemap
15375:19996:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33426:98;;;;;;;;;;-1:-1:-1;33426:98:0;;;;;:::i;:::-;;:::i;:::-;;18178:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34939:193;;;;;;;;;;;;;:::i;19090:161::-;;;;;;;;;;-1:-1:-1;19090:161:0;;;;;:::i;:::-;;:::i;:::-;;;2695:14:1;;2688:22;2670:41;;2658:2;2643:18;19090:161:0;2625:92:1;20211:87:0;;;;;;;;;;-1:-1:-1;20280:10:0;;20211:87;;;9978:25:1;;;9966:2;9951:18;20211:87:0;9933:76:1;16780:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:32:1;;;2244:51;;2232:2;2217:18;16780:51:0;2199:102:1;18455:95:0;;;;;;;;;;-1:-1:-1;18535:7:0;;18455:95;;19259:313;;;;;;;;;;-1:-1:-1;19259:313:0;;;;;:::i;:::-;;:::i;15611:81::-;;;;;;;;;;;;;;;34565:150;;;;;;;;;;-1:-1:-1;34565:150:0;;;;;:::i;:::-;;:::i;21395:253::-;;;;;;;;;;-1:-1:-1;21395:253:0;;;;;:::i;:::-;;:::i;18364:83::-;;;;;;;;;;-1:-1:-1;18430:9:0;;18364:83;;18430:9;;;;10156:36:1;;10144:2;10129:18;18364:83:0;10111:87:1;21999:479:0;;;;;;;;;;-1:-1:-1;21999:479:0;;;;;:::i;:::-;;:::i;19580:218::-;;;;;;;;;;-1:-1:-1;19580:218:0;;;;;:::i;:::-;;:::i;16354:26::-;;;;;;;;;;;;;;;;20562:377;;;;;;;;;;-1:-1:-1;20562:377:0;;;;;:::i;:::-;;:::i;33181:111::-;;;;;;;;;;-1:-1:-1;33181:111:0;;;;;:::i;:::-;;:::i;20951:436::-;;;;;;;;;;-1:-1:-1;20951:436:0;;;;;:::i;:::-;;:::i;16838:38::-;;;;;;;;;;;;;;;16917:41;;;;;;;;;;-1:-1:-1;16917:41:0;;;;;;;;;;;34727:200;;;;;;;;;;;;;:::i;21656:335::-;;;;;;;;;;-1:-1:-1;21656:335:0;;;;;:::i;:::-;;:::i;33046:123::-;;;;;;;;;;-1:-1:-1;33046:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;33134:27:0;33110:4;33134:27;;;:18;:27;;;;;;;;;33046:123;6765:90;;;;;;;;;;-1:-1:-1;6832:15:0;6765:90;;6663;;;;;;;;;;-1:-1:-1;6736:9:0;;6663:90;;16965:33;;;;;;;;;;-1:-1:-1;16965:33:0;;;;;;;;;;;16441:32;;;;;;;;;;;;;;;;18558:198;;;;;;;;;;-1:-1:-1;18558:198:0;;;;;:::i;:::-;;:::i;6255:148::-;;;;;;;;;;;;;:::i;16594:53::-;;;;;;;;;;;;;;;;34092:133;;;;;;;;;;-1:-1:-1;34092:133:0;;;;;:::i;:::-;;:::i;20083:120::-;;;;;;;;;;-1:-1:-1;20083:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;20175:20:0;20151:4;20175:20;;;:11;:20;;;;;;;;;20083:120;6030:79;;;;;;;;;;-1:-1:-1;6068:7:0;6095:6;-1:-1:-1;;;;;6095:6:0;6030:79;;33536:122;;;;;;;;;;-1:-1:-1;33536:122:0;;;;;:::i;:::-;;:::i;34233:141::-;;;;;;;;;;-1:-1:-1;34233:141:0;;;;;:::i;:::-;;:::i;18269:87::-;;;;;;;;;;;;;:::i;20310:120::-;;;;;;;;;;-1:-1:-1;20399:23:0;;20310:120;;19806:269;;;;;;;;;;-1:-1:-1;19806:269:0;;;;;:::i;:::-;;:::i;15496:93::-;;;;;;;;;;-1:-1:-1;15496:93:0;;;;-1:-1:-1;;;;;15496:93:0;;;7101:305;;;;;;;;;;;;;:::i;18764:167::-;;;;;;;;;;-1:-1:-1;18764:167:0;;;;;:::i;:::-;;:::i;33793:112::-;;;;;;;;;;-1:-1:-1;33793:112:0;;;;;:::i;:::-;;:::i;20442:108::-;;;;;;;;;;-1:-1:-1;20525:17:0;;20442:108;;34382:171;;;;;;;;;;-1:-1:-1;34382:171:0;;;;;:::i;:::-;;:::i;16546:35::-;;;;;;;;;;;;;;;;6863:226;;;;;;;;;;-1:-1:-1;6863:226:0;;;;;:::i;:::-;;:::i;18939:143::-;;;;;;;;;;-1:-1:-1;18939:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19047:18:0;;;19020:7;19047:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18939:143;33304:110;;;;;;;;;;-1:-1:-1;33304:110:0;;;;;:::i;:::-;;:::i;33670:111::-;;;;;;;;;;-1:-1:-1;33670:111:0;;;;;:::i;:::-;;:::i;33913:166::-;;;;;;;;;;-1:-1:-1;33913:166:0;;;;;:::i;:::-;;:::i;6411:244::-;;;;;;;;;;-1:-1:-1;6411:244:0;;;;;:::i;:::-;;:::i;33426:98::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;;;;;;;;;33500:7:::1;:16:::0;33426:98::o;18178:83::-;18215:13;18248:5;18241:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18178:83;:::o;34939:193::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34993:30:::1;35018:4;34993:24;:30::i;:::-;35044:1;35034:7;:11:::0;35072:1:::1;35056:13;:17:::0;35099:25:::1;35084:12;:40:::0;34939:193::o;19090:161::-;19165:4;19182:39;414:10;19205:7;19214:6;19182:8;:39::i;:::-;-1:-1:-1;19239:4:0;19090:161;;;;;:::o;19259:313::-;19357:4;19374:36;19384:6;19392:9;19403:6;19374:9;:36::i;:::-;19421:121;19430:6;414:10;19452:89;19490:6;19452:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19452:19:0;;;;;;:11;:19;;;;;;;;414:10;19452:33;;;;;;;;;;:37;:89::i;:::-;19421:8;:121::i;:::-;-1:-1:-1;19560:4:0;19259:313;;;;;:::o;34565:150::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34635:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34635:25:0;;::::1;;::::0;;34676:31:::1;::::0;::::1;::::0;::::1;::::0;34652:8;2695:14:1;2688:22;2670:41;;2658:2;2643:18;;2625:92;34676:31:0::1;;;;;;;;34565:150:::0;:::o;21395:253::-;21461:7;21500;;21489;:18;;21481:73;;;;-1:-1:-1;;;21481:73:0;;4171:2:1;21481:73:0;;;4153:21:1;4210:2;4190:18;;;4183:30;4249:34;4229:18;;;4222:62;-1:-1:-1;;;4300:18:1;;;4293:40;4350:19;;21481:73:0;4143:232:1;21481:73:0;21565:19;21588:10;:8;:10::i;:::-;21565:33;-1:-1:-1;21616:24:0;:7;21565:33;21616:11;:24::i;:::-;21609:31;21395:253;-1:-1:-1;;;21395:253:0:o;21999:479::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22081:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22073:60;;;::::0;-1:-1:-1;;;22073:60:0;;5748:2:1;22073:60:0::1;::::0;::::1;5730:21:1::0;5787:2;5767:18;;;5760:30;5826:29;5806:18;;;5799:57;5873:18;;22073:60:0::1;5720:177:1::0;22073:60:0::1;22149:9;22144:327;22168:9;:16:::0;22164:20;::::1;22144:327;;;22226:7;-1:-1:-1::0;;;;;22210:23:0::1;:9;22220:1;22210:12;;;;;;-1:-1:-1::0;;;22210:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22210:12:0::1;:23;22206:254;;;22269:9;22279:16:::0;;:20:::1;::::0;22298:1:::1;::::0;22279:20:::1;:::i;:::-;22269:31;;;;;;-1:-1:-1::0;;;22269:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22254:9:::1;:12:::0;;-1:-1:-1;;;;;22269:31:0;;::::1;::::0;22264:1;;22254:12;::::1;;;-1:-1:-1::0;;;22254:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22254:46:0::1;-1:-1:-1::0;;;;;22254:46:0;;::::1;;::::0;;22319:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22358:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22358:28:0::1;::::0;;22405:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;22405:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22405:15:0;;;;;-1:-1:-1;;;;;;22405:15:0::1;::::0;;;;;22144:327:::1;21999:479:::0;:::o;22206:254::-:1;22186:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22144:327;;;;21999:479:::0;:::o;19580:218::-;414:10;19668:4;19717:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19717:34:0;;;;;;;;;;19668:4;;19685:83;;19708:7;;19717:50;;19756:10;19717:38;:50::i;20562:377::-;414:10;20614:14;20663:19;;;:11;:19;;;;;;;;20662:20;20654:77;;;;-1:-1:-1;;;20654:77:0;;9217:2:1;20654:77:0;;;9199:21:1;9256:2;9236:18;;;9229:30;9295:34;9275:18;;;9268:62;-1:-1:-1;;;9346:18:1;;;9339:42;9398:19;;20654:77:0;9189:234:1;20654:77:0;20743:15;20767:19;20778:7;20767:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20815:15:0;;;;;;:7;:15;;;;;;20742:44;;-1:-1:-1;20815:28:0;;:15;-1:-1:-1;20742:44:0;20815:19;:28::i;:::-;-1:-1:-1;;;;;20797:15:0;;;;;;:7;:15;;;;;:46;20864:7;;:20;;20876:7;20864:11;:20::i;:::-;20854:7;:30;20908:10;;:23;;20923:7;20908:14;:23::i;:::-;20895:10;:36;-1:-1:-1;;;20562:377:0:o;33181:111::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33250:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;33250:34:0::1;33280:4;33250:34;::::0;;33181:111::o;20951:436::-;21041:7;21080;;21069;:18;;21061:62;;;;-1:-1:-1;;;21061:62:0;;6104:2:1;21061:62:0;;;6086:21:1;6143:2;6123:18;;;6116:30;6182:33;6162:18;;;6155:61;6233:18;;21061:62:0;6076:181:1;21061:62:0;21139:17;21134:246;;21174:15;21198:19;21209:7;21198:10;:19::i;:::-;-1:-1:-1;21173:44:0;;-1:-1:-1;21232:14:0;;-1:-1:-1;;;;;21232:14:0;21134:246;21281:23;21312:19;21323:7;21312:10;:19::i;:::-;-1:-1:-1;21279:52:0;;-1:-1:-1;21346:22:0;;-1:-1:-1;;;;;21346:22:0;34727:200;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34786:31:::1;34811:5;34786:24;:31::i;:::-;34838:1;34828:7;:11:::0;;;34850:13:::1;:17:::0;34893:26:::1;34878:12;:41:::0;34727:200::o;21656:335::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21741:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21740:21;21732:61;;;::::0;-1:-1:-1;;;21732:61:0;;5748:2:1;21732:61:0::1;::::0;::::1;5730:21:1::0;5787:2;5767:18;;;5760:30;5826:29;5806:18;;;5799:57;5873:18;;21732:61:0::1;5720:177:1::0;21732:61:0::1;-1:-1:-1::0;;;;;21807:16:0;::::1;21826:1;21807:16:::0;;;:7:::1;:16;::::0;;;;;:20;21804:108:::1;;-1:-1:-1::0;;;;;21883:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;21863:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;21844:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21804:108:::1;-1:-1:-1::0;;;;;21922:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;21922:27:0::1;21945:4;21922:27:::0;;::::1;::::0;;;21960:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;21960:23:0::1;::::0;;::::1;::::0;;21656:335::o;18558:198::-;-1:-1:-1;;;;;18648:20:0;;18624:7;18648:20;;;:11;:20;;;;;;;;18644:49;;;-1:-1:-1;;;;;;18677:16:0;;;;;:7;:16;;;;;;;18558:198::o;18644:49::-;-1:-1:-1;;;;;18731:16:0;;;;;;:7;:16;;;;;;18711:37;;:19;:37::i;6255:148::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;6362:1:::1;6346:6:::0;;6325:40:::1;::::0;-1:-1:-1;;;;;6346:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6325:40:0;6362:1;;6325:40:::1;6393:1;6376:19:::0;;-1:-1:-1;;;;;;6376:19:0::1;::::0;;6255:148::o;34092:133::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34196:21:::1;:12:::0;34211:6:::1;34196:21;:::i;:::-;34176:17;:41:::0;-1:-1:-1;34092:133:0:o;33536:122::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;33622:13:::1;:28:::0;33536:122::o;34233:141::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34321:16:::1;:45:::0;;-1:-1:-1;;;;;;34321:45:0::1;-1:-1:-1::0;;;;;34321:45:0;;;::::1;::::0;;;::::1;::::0;;34233:141::o;18269:87::-;18308:13;18341:7;18334:14;;;;;:::i;19806:269::-;19899:4;19916:129;414:10;19939:7;19948:96;19987:15;19948:96;;;;;;;;;;;;;;;;;414:10;19948:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19948:34:0;;;;;;;;;;;;:38;:96::i;7101:305::-;7153:14;;-1:-1:-1;;;;;7153:14:0;7171:10;7153:28;7145:76;;;;-1:-1:-1;;;7145:76:0;;9630:2:1;7145:76:0;;;9612:21:1;9669:2;9649:18;;;9642:30;9708:34;9688:18;;;9681:62;-1:-1:-1;;;9759:18:1;;;9752:33;9802:19;;7145:76:0;9602:225:1;7145:76:0;7258:9;;7240:15;:27;7232:72;;;;-1:-1:-1;;;7232:72:0;;8857:2:1;7232:72:0;;;8839:21:1;8896:2;8876:18;;;8869:30;8935:33;8915:18;;;8908:61;8986:18;;7232:72:0;8829:181:1;7232:72:0;7349:14;;;7341:6;;7320:44;;-1:-1:-1;;;;;7349:14:0;;;;7341:6;;;;-1:-1:-1;;;;;;;;;;;7320:44:0;;7384:14;;;7375:23;;-1:-1:-1;;;;;;7375:23:0;-1:-1:-1;;;;;7384:14:0;;;7375:23;;;;;;7101:305::o;18764:167::-;18842:4;18859:42;414:10;18883:9;18894:6;18859:9;:42::i;33793:112::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;33871:16:::1;:26:::0;33793:112::o;34382:171::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34459:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;34459:32:0;;::::1;;::::0;;34507:38:::1;::::0;::::1;::::0;::::1;::::0;34483:8;2695:14:1;2688:22;2670:41;;2658:2;2643:18;;2625:92;6863:226:0;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;6944:6:::1;::::0;;;6927:23;;-1:-1:-1;;;;;;6927:23:0;;::::1;-1:-1:-1::0;;;;;6944:6:0;::::1;6927:23;::::0;;;6961:19:::1;::::0;;7003:22:::1;7021:4:::0;7003:15:::1;:22;:::i;:::-;6991:9;:34:::0;7078:1:::1;7062:6:::0;;7041:40:::1;::::0;-1:-1:-1;;;;;7062:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7041:40:0;7078:1;;7041:40:::1;6863:226:::0;:::o;33304:110::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33371:27:0::1;33401:5;33371:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;33371:35:0::1;::::0;;33304:110::o;33670:111::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;33747:12:::1;:26:::0;33670:111::o;33913:166::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;34021:23:::1;:50:::0;33913:166::o;6411:244::-;6164:6;;-1:-1:-1;;;;;6164:6:0;414:10;6164:22;6156:67;;;;-1:-1:-1;;;6156:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6500:22:0;::::1;6492:73;;;::::0;-1:-1:-1;;;6492:73:0;;4582:2:1;6492:73:0::1;::::0;::::1;4564:21:1::0;4621:2;4601:18;;;4594:30;4660:34;4640:18;;;4633:62;-1:-1:-1;;;4711:18:1;;;4704:36;4757:19;;6492:73:0::1;4554:228:1::0;6492:73:0::1;6602:6;::::0;;6581:38:::1;::::0;-1:-1:-1;;;;;6581:38:0;;::::1;::::0;6602:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6581:38:0;::::1;6630:6;:17:::0;;-1:-1:-1;;;;;;6630:17:0::1;-1:-1:-1::0;;;;;6630:17:0;;;::::1;::::0;;;::::1;::::0;;6411:244::o;22486:337::-;-1:-1:-1;;;;;22579:19:0;;22571:68;;;;-1:-1:-1;;;22571:68:0;;8452:2:1;22571:68:0;;;8434:21:1;8491:2;8471:18;;;8464:30;8530:34;8510:18;;;8503:62;-1:-1:-1;;;8581:18:1;;;8574:34;8625:19;;22571:68:0;8424:226:1;22571:68:0;-1:-1:-1;;;;;22658:21:0;;22650:68;;;;-1:-1:-1;;;22650:68:0;;4989:2:1;22650:68:0;;;4971:21:1;5028:2;5008:18;;;5001:30;5067:34;5047:18;;;5040:62;-1:-1:-1;;;5118:18:1;;;5111:32;5160:19;;22650:68:0;4961:224:1;22650:68:0;-1:-1:-1;;;;;22731:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22783:32;;9978:25:1;;;22783:32:0;;9951:18:1;22783:32:0;;;;;;;22486:337;;;:::o;22831:1581::-;-1:-1:-1;;;;;22953:18:0;;22945:68;;;;-1:-1:-1;;;22945:68:0;;8046:2:1;22945:68:0;;;8028:21:1;8085:2;8065:18;;;8058:30;8124:34;8104:18;;;8097:62;-1:-1:-1;;;8175:18:1;;;8168:35;8220:19;;22945:68:0;8018:227:1;22945:68:0;-1:-1:-1;;;;;23032:16:0;;23024:64;;;;-1:-1:-1;;;23024:64:0;;3767:2:1;23024:64:0;;;3749:21:1;3806:2;3786:18;;;3779:30;3845:34;3825:18;;;3818:62;-1:-1:-1;;;3896:18:1;;;3889:33;3939:19;;23024:64:0;3739:225:1;23024:64:0;23116:1;23107:6;:10;23099:64;;;;-1:-1:-1;;;23099:64:0;;7636:2:1;23099:64:0;;;7618:21:1;7675:2;7655:18;;;7648:30;7714:34;7694:18;;;7687:62;-1:-1:-1;;;7765:18:1;;;7758:39;7814:19;;23099:64:0;7608:231:1;23099:64:0;6068:7;6095:6;-1:-1:-1;;;;;23183:15:0;;;6095:6;;23183:15;;;;:32;;-1:-1:-1;6068:7:0;6095:6;-1:-1:-1;;;;;23202:13:0;;;6095:6;;23202:13;;23183:32;23180:139;;;23250:12;;23240:6;:22;;23232:75;;;;-1:-1:-1;;;23232:75:0;;6464:2:1;23232:75:0;;;6446:21:1;6503:2;6483:18;;;6476:30;6542:34;6522:18;;;6515:62;-1:-1:-1;;;6593:18:1;;;6586:38;6641:19;;23232:75:0;6436:230:1;23232:75:0;23331:28;23362:24;23380:4;23362:9;:24::i;:::-;23452:23;;-1:-1:-1;;;;;24253:24:0;;23397:28;24253:24;;;:18;:24;;;;;;23331:55;;-1:-1:-1;23428:47:0;;;;24141:4;;24253:24;;;:50;;-1:-1:-1;;;;;;24281:22:0;;;;;;:18;:22;;;;;;;;24253:50;24250:96;;;-1:-1:-1;24329:5:0;24250:96;24366:38;24381:4;24386:2;24389:6;24396:7;24366:14;:38::i;:::-;22831:1581;;;;;;:::o;1729:192::-;1815:7;1851:12;1843:6;;;;1835:29;;;;-1:-1:-1;;;1835:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1875:9:0;1887:5;1891:1;1887;:5;:::i;:::-;1875:17;1729:192;-1:-1:-1;;;;;1729:192:0:o;31196:163::-;31237:7;31258:15;31275;31294:19;:17;:19::i;:::-;31257:56;;-1:-1:-1;31257:56:0;-1:-1:-1;31331:20:0;31257:56;;31331:11;:20::i;:::-;31324:27;;;;31196:163;:::o;2189:132::-;2247:7;2274:39;2278:1;2281;2274:39;;;;;;;;;;;;;;;;;:3;:39::i;1396:181::-;1454:7;;1486:5;1490:1;1486;:5;:::i;:::-;1474:17;;1515:1;1510;:6;;1502:46;;;;-1:-1:-1;;;1502:46:0;;5392:2:1;1502:46:0;;;5374:21:1;5431:2;5411:18;;;5404:30;5470:29;5450:18;;;5443:57;5517:18;;1502:46:0;5364:177:1;29994:419:0;30053:7;30062;30071;30080;30089;30098;30119:23;30144:12;30158:18;30180:20;30192:7;30180:11;:20::i;:::-;30118:82;;;;;;30212:15;30229:23;30254:12;30270:50;30282:7;30291:4;30297:10;30309;:8;:10::i;:::-;30270:11;:50::i;:::-;30211:109;;;;-1:-1:-1;30211:109:0;;-1:-1:-1;30371:15:0;;-1:-1:-1;30388:4:0;;-1:-1:-1;30394:10:0;;-1:-1:-1;29994:419:0;;-1:-1:-1;;;;;29994:419:0:o;1585:136::-;1643:7;1670:43;1674:1;1677;1670:43;;;;;;;;;;;;;;;;;:3;:43::i;26803:704::-;26914:7;26910:40;;26936:14;:12;:14::i;:::-;-1:-1:-1;;;;;26975:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;26999:22:0;;;;;;:11;:22;;;;;;;;26998:23;26975:46;26971:467;;;27038:48;27060:6;27068:9;27079:6;27038:21;:48::i;:::-;26971:467;;;-1:-1:-1;;;;;27109:19:0;;;;;;:11;:19;;;;;;;;27108:20;:46;;;;-1:-1:-1;;;;;;27132:22:0;;;;;;:11;:22;;;;;;;;27108:46;27104:334;;;27171:46;27191:6;27199:9;27210:6;27171:19;:46::i;27104:334::-;-1:-1:-1;;;;;27239:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;27262:22:0;;;;;;:11;:22;;;;;;;;27239:45;27235:203;;;27301:48;27323:6;27331:9;27342:6;27301:21;:48::i;27235:203::-;27382:44;27400:6;27408:9;27419:6;27382:17;:44::i;:::-;27462:7;27458:41;;27484:15;32967;;32957:7;:25;33009:21;;32993:13;:37;32913:125;27484:15;26803:704;;;;:::o;31367:561::-;31464:7;;31500;;31417;;;;;31524:289;31548:9;:16;31544:20;;31524:289;;;31614:7;31590;:21;31598:9;31608:1;31598:12;;;;;;-1:-1:-1;;;31598:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31598:12:0;31590:21;;;;;;;;;;;;;:31;;:66;;;31649:7;31625;:21;31633:9;31643:1;31633:12;;;;;;-1:-1:-1;;;31633:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31633:12:0;31625:21;;;;;;;;;;;;;:31;31590:66;31586:97;;;31666:7;;31675;;31658:25;;;;;;;31367:561;;:::o;31586:97::-;31708:34;31720:7;:21;31728:9;31738:1;31728:12;;;;;;-1:-1:-1;;;31728:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31728:12:0;31720:21;;;;;;;;;;;;;31708:7;;:11;:34::i;:::-;31698:44;;31767:34;31779:7;:21;31787:9;31797:1;31787:12;;;;;;-1:-1:-1;;;31787:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31787:12:0;31779:21;;;;;;;;;;;;;31767:7;;:11;:34::i;:::-;31757:44;-1:-1:-1;31566:3:0;;;;:::i;:::-;;;;31524:289;;;-1:-1:-1;31849:7:0;;31837;;:20;;:11;:20::i;:::-;31827:7;:30;31823:61;;;31867:7;;31876;;31859:25;;;;;;31367:561;;:::o;31823:61::-;31903:7;;31912;;-1:-1:-1;31367:561:0;-1:-1:-1;31367:561:0:o;2329:278::-;2415:7;2450:12;2443:5;2435:28;;;;-1:-1:-1;;;2435:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2474:9:0;2486:5;2490:1;2486;:5;:::i;30421:330::-;30481:7;30490;30499;30519:12;30534:24;30550:7;30534:15;:24::i;:::-;30519:39;;30569:18;30590:30;30612:7;30590:21;:30::i;:::-;30569:51;-1:-1:-1;30631:23:0;30657:33;30569:51;30657:17;:7;30669:4;30657:11;:17::i;:::-;:21;;:33::i;:::-;30631:59;30726:4;;-1:-1:-1;30732:10:0;;-1:-1:-1;30421:330:0;;-1:-1:-1;;;30421:330:0:o;30759:429::-;30874:7;;;;30930:24;:7;30942:11;30930;:24::i;:::-;30912:42;-1:-1:-1;30965:12:0;30980:21;:4;30989:11;30980:8;:21::i;:::-;30965:36;-1:-1:-1;31012:18:0;31033:27;:10;31048:11;31033:14;:27::i;:::-;31012:48;-1:-1:-1;31071:23:0;31097:33;31012:48;31097:17;:7;31109:4;31097:11;:17::i;:33::-;31149:7;;;;-1:-1:-1;31175:4:0;;-1:-1:-1;30759:429:0;;-1:-1:-1;;;;;;;30759:429:0:o;32651:250::-;32697:7;;:12;:34;;;;-1:-1:-1;32713:13:0;;:18;32697:34;32694:46;;;32651:250::o;32694:46::-;32778:7;;;32760:15;:25;32820:13;;;32796:21;:37;-1:-1:-1;32854:11:0;;;;32876:17;32651:250::o;28616:563::-;28719:15;28736:23;28761:12;28775:23;28800:12;28814:18;28836:19;28847:7;28836:10;:19::i;:::-;-1:-1:-1;;;;;28881:15:0;;;;;;:7;:15;;;;;;28718:137;;-1:-1:-1;28718:137:0;;-1:-1:-1;28718:137:0;;-1:-1:-1;28718:137:0;-1:-1:-1;28718:137:0;-1:-1:-1;28718:137:0;-1:-1:-1;28881:28:0;;28901:7;28881:19;:28::i;:::-;-1:-1:-1;;;;;28863:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28938:7;:15;;;;:28;;28958:7;28938:19;:28::i;:::-;-1:-1:-1;;;;;28920:15:0;;;;;;;:7;:15;;;;;;:46;;;;28998:18;;;;;;;:39;;29021:15;28998:22;:39::i;:::-;-1:-1:-1;;;;;28977:18:0;;;;;;:7;:18;;;;;:60;29051:26;29066:10;29051:14;:26::i;:::-;29088:23;29100:4;29106;29088:11;:23::i;:::-;29144:9;-1:-1:-1;;;;;29127:44:0;29136:6;-1:-1:-1;;;;;29127:44:0;;29155:15;29127:44;;;;9978:25:1;;9966:2;9951:18;;9933:76;29127:44:0;;;;;;;;28616:563;;;;;;;;;:::o;28025:583::-;28126:15;28143:23;28168:12;28182:23;28207:12;28221:18;28243:19;28254:7;28243:10;:19::i;:::-;-1:-1:-1;;;;;28288:15:0;;;;;;:7;:15;;;;;;28125:137;;-1:-1:-1;28125:137:0;;-1:-1:-1;28125:137:0;;-1:-1:-1;28125:137:0;-1:-1:-1;28125:137:0;-1:-1:-1;28125:137:0;-1:-1:-1;28288:28:0;;28125:137;28288:19;:28::i;:::-;-1:-1:-1;;;;;28270:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28348:18;;;;;:7;:18;;;;;:39;;28371:15;28348:22;:39::i;:::-;-1:-1:-1;;;;;28327:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28419:7;:18;;;;:39;;28442:15;28419:22;:39::i;29187:639::-;29290:15;29307:23;29332:12;29346:23;29371:12;29385:18;29407:19;29418:7;29407:10;:19::i;:::-;-1:-1:-1;;;;;29452:15:0;;;;;;:7;:15;;;;;;29289:137;;-1:-1:-1;29289:137:0;;-1:-1:-1;29289:137:0;;-1:-1:-1;29289:137:0;-1:-1:-1;29289:137:0;-1:-1:-1;29289:137:0;-1:-1:-1;29452:28:0;;29472:7;29452:19;:28::i;:::-;-1:-1:-1;;;;;29434:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29509:7;:15;;;;:28;;29529:7;29509:19;:28::i;27515:502::-;27614:15;27631:23;27656:12;27670:23;27695:12;27709:18;27731:19;27742:7;27731:10;:19::i;:::-;-1:-1:-1;;;;;27779:15:0;;;;;;:7;:15;;;;;;27613:137;;-1:-1:-1;27613:137:0;;-1:-1:-1;27613:137:0;;-1:-1:-1;27613:137:0;-1:-1:-1;27613:137:0;-1:-1:-1;27613:137:0;-1:-1:-1;27779:28:0;;27613:137;27779:19;:28::i;32307:154::-;32371:7;32398:55;32437:5;32398:20;32410:7;;32398;:11;;:20;;;;:::i;:::-;:24;;:55::i;32473:166::-;32543:7;32570:61;32615:5;32570:26;32582:13;;32570:7;:11;;:26;;;;:::i;1929:250::-;1987:7;2011:6;2007:47;;-1:-1:-1;2041:1:0;2034:8;;2007:47;2066:9;2078:5;2082:1;2078;:5;:::i;:::-;2066:17;-1:-1:-1;2111:1:0;2102:5;2106:1;2066:17;2102:5;:::i;:::-;:10;2094:56;;;;-1:-1:-1;;;2094:56:0;;6873:2:1;2094:56:0;;;6855:21:1;6912:2;6892:18;;;6885:30;6951:34;6931:18;;;6924:62;-1:-1:-1;;;7002:18:1;;;6995:31;7043:19;;2094:56:0;6845:223:1;31940:355:0;32003:19;32026:10;:8;:10::i;:::-;32003:33;-1:-1:-1;32047:18:0;32068:27;:10;32003:33;32068:14;:27::i;:::-;32147:4;32131:22;;;;:7;:22;;;;;;32047:48;;-1:-1:-1;32131:38:0;;32047:48;32131:26;:38::i;:::-;32122:4;32106:22;;;;:7;:22;;;;;;;;:63;;;;32183:11;:26;;;;;;32180:107;;;32265:4;32249:22;;;;:7;:22;;;;;;:38;;32276:10;32249:26;:38::i;:::-;32240:4;32224:22;;;;:7;:22;;;;;:63;32180:107;31940:355;;;:::o;29834:147::-;29912:7;;:17;;29924:4;29912:11;:17::i;:::-;29902:7;:27;29953:10;;:20;;29968:4;29953:14;:20::i;:::-;29940:10;:33;-1:-1:-1;;29834:147:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:160::-;257:20;;313:13;;306:21;296:32;;286:2;;342:1;339;332:12;357:196;416:6;469:2;457:9;448:7;444:23;440:32;437:2;;;490:6;482;475:22;437:2;518:29;537:9;518:29;:::i;558:270::-;626:6;634;687:2;675:9;666:7;662:23;658:32;655:2;;;708:6;700;693:22;655:2;736:29;755:9;736:29;:::i;:::-;726:39;;784:38;818:2;807:9;803:18;784:38;:::i;:::-;774:48;;645:183;;;;;:::o;833:338::-;910:6;918;926;979:2;967:9;958:7;954:23;950:32;947:2;;;1000:6;992;985:22;947:2;1028:29;1047:9;1028:29;:::i;:::-;1018:39;;1076:38;1110:2;1099:9;1095:18;1076:38;:::i;:::-;1066:48;;1161:2;1150:9;1146:18;1133:32;1123:42;;937:234;;;;;:::o;1176:264::-;1244:6;1252;1305:2;1293:9;1284:7;1280:23;1276:32;1273:2;;;1326:6;1318;1311:22;1273:2;1354:29;1373:9;1354:29;:::i;:::-;1344:39;1430:2;1415:18;;;;1402:32;;-1:-1:-1;;;1263:177:1:o;1445:190::-;1501:6;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1575:6;1567;1560:22;1522:2;1603:26;1619:9;1603:26;:::i;1640:190::-;1699:6;1752:2;1740:9;1731:7;1727:23;1723:32;1720:2;;;1773:6;1765;1758:22;1720:2;-1:-1:-1;1801:23:1;;1710:120;-1:-1:-1;1710:120:1:o;1835:258::-;1900:6;1908;1961:2;1949:9;1940:7;1936:23;1932:32;1929:2;;;1982:6;1974;1967:22;1929:2;2023:9;2010:23;2000:33;;2052:35;2083:2;2072:9;2068:18;2052:35;:::i;2957:603::-;3069:4;3098:2;3127;3116:9;3109:21;3159:6;3153:13;3202:6;3197:2;3186:9;3182:18;3175:34;3227:4;3240:140;3254:6;3251:1;3248:13;3240:140;;;3349:14;;;3345:23;;3339:30;3315:17;;;3334:2;3311:26;3304:66;3269:10;;3240:140;;;3398:6;3395:1;3392:13;3389:2;;;3468:4;3463:2;3454:6;3443:9;3439:22;3435:31;3428:45;3389:2;-1:-1:-1;3544:2:1;3523:15;-1:-1:-1;;3519:29:1;3504:45;;;;3551:2;3500:54;;3078:482;-1:-1:-1;;;3078:482:1:o;7073:356::-;7275:2;7257:21;;;7294:18;;;7287:30;7353:34;7348:2;7333:18;;7326:62;7420:2;7405:18;;7247:182::o;10203:128::-;10243:3;10274:1;10270:6;10267:1;10264:13;10261:2;;;10280:18;;:::i;:::-;-1:-1:-1;10316:9:1;;10251:80::o;10336:217::-;10376:1;10402;10392:2;;-1:-1:-1;;;10427:31:1;;10481:4;10478:1;10471:15;10509:4;10434:1;10499:15;10392:2;-1:-1:-1;10538:9:1;;10382:171::o;10558:168::-;10598:7;10664:1;10660;10656:6;10652:14;10649:1;10646:21;10641:1;10634:9;10627:17;10623:45;10620:2;;;10671:18;;:::i;:::-;-1:-1:-1;10711:9:1;;10610:116::o;10731:125::-;10771:4;10799:1;10796;10793:8;10790:2;;;10804:18;;:::i;:::-;-1:-1:-1;10841:9:1;;10780:76::o;10861:380::-;10940:1;10936:12;;;;10983;;;11004:2;;11058:4;11050:6;11046:17;11036:27;;11004:2;11111;11103:6;11100:14;11080:18;11077:38;11074:2;;;11157:10;11152:3;11148:20;11145:1;11138:31;11192:4;11189:1;11182:15;11220:4;11217:1;11210:15;11074:2;;10916:325;;;:::o;11246:135::-;11285:3;-1:-1:-1;;11306:17:1;;11303:2;;;11326:18;;:::i;:::-;-1:-1:-1;11373:1:1;11362:13;;11293:88::o;11386:127::-;11447:10;11442:3;11438:20;11435:1;11428:31;11478:4;11475:1;11468:15;11502:4;11499:1;11492:15
Swarm Source
ipfs://329d65dbc700aa05da55e2b3c573e654a7e5aa3079c785f6cbc65a496c694f8f
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.