Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000 $flokigold
Holders
151
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.488086135 $flokigoldValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FlokiGold
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-13 */ /* Floki Gold will become the gold standard of all memecoins by providing a 100% safe and decentralized token that is owned by the people, for the people — The one token to rule all memecoins! Telegram: https://t.me/flokigoldeth Twitter: https://twitter.com/FlokiGoldd https://medium.com/@riseofcrypto/the-rise-of-floki-gold-2fad5934a8ac */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return 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 _creator; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; _creator = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } function creator() public view returns (address) { return _creator; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } modifier onlyCreator() { require(_creator == _msgSender(), "Ownable: caller is not the creator"); _; } 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 now; } } 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; } 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; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 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 FlokiGold is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; address payable public burningAddress = 0x000000000000000000000000000000000000dEaD; // burn Address address payable public marketingAddress = 0xCBFD986FAFae21224d7bb5168Cd876De413eA0AF; // Marketing Address //ToChange address payable public devAddress = msg.sender; // Dev Address //ToChange address private migrationWallet; 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; bool public canTrade = false; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = "Floki Gold"; string private constant _symbol = "$flokigold"; uint8 private constant _decimals = 9; uint256 public maxWalletHoldings = 20000 * 10**9; uint256 public _taxFee = 3; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 3; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _maxTxAmount = 20000 * 10**9; uint256 private minimumTokensBeforeSwap = 50 * 10**9; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event RewardLiquidityProviders(uint256 tokenAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _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() external view returns (string memory) { return _name; } function symbol() external view returns (string memory) { return _symbol; } function decimals() external view returns (uint8) { return _decimals; } function totalSupply() external 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) external override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function removeLimits() external onlyOwner{ maxWalletHoldings = _tTotal; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (recipient != burningAddress && recipient != uniswapV2Pair && recipient != marketingAddress && recipient != devAddress && recipient != address(uniswapV2Router)){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= maxWalletHoldings,"Total Holding is currently limited, you can not buy that much."); } _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) external virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcludedFromReward(address account) external view returns (bool) { return _isExcluded[account]; } function totalFees() external view returns (uint256) { return _tFeeTotal; } function minimumTokensBeforeSwapAmount() external view returns (uint256) { return minimumTokensBeforeSwap; } function setMaxWalletHoldings(uint256 amount) public onlyOwner { maxWalletHoldings = amount; } function deliver(uint256 tAmount) external { 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) external 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) external 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 ( overMinimumTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { swapAndLiquify(contractTokenBalance); } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } if (to != burningAddress && to != uniswapV2Pair && to != marketingAddress && to != devAddress && to != address(uniswapV2Router)){ uint256 heldTokens = balanceOf(to); require((heldTokens + amount) <= maxWalletHoldings,"Total Holding is currently limited, you can not buy that much."); } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 liquidityQuota = contractTokenBalance.div(3); // 8 uint256 convertQuota = contractTokenBalance.sub(liquidityQuota); uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(convertQuota); // Send to Marketing Address uint256 transferredBalance = address(this).balance.sub(initialBalance); // -4 transferForMarketingETH(marketingAddress, transferredBalance.div(2)); uint256 initialBalanceAfterMarket = address(this).balance; // Send to Treasury Address -4 transferForMarketingETH(devAddress, initialBalanceAfterMarket / 2); addLiquidity(liquidityQuota, initialBalanceAfterMarket /2); } 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 devAddress, block.timestamp ); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = 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 ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!canTrade){ require(sender == owner() || sender == migrationWallet); // only owner allowed to trade or add liquidity } if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _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) external view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) external onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) external onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { require(taxFee < 10, "Tax fee cannot exceed 10%"); _taxFee = taxFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() { require(liquidityFee < 10, "Tax fee cannot exceed 10%"); _liquidityFee = liquidityFee; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount > _tTotal.div(100), "Max TX amount must be superior to 1% of the supply."); _maxTxAmount = maxTxAmount; } function allowtrading()external onlyOwner() { canTrade = true; } function setMigrationWallet(address walletAddress) external onlyOwner { migrationWallet = walletAddress; } function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap) external onlyOwner() { minimumTokensBeforeSwap = _minimumTokensBeforeSwap; } function setMarketingAddress(address payable _marketingAddress) external onlyOwner() { marketingAddress = _marketingAddress; } function setBurningAddress(address payable _burningAddress) external onlyOwner() { burningAddress = _burningAddress; } function setDevAddress(address payable _devAddress) external onlyOwner() { devAddress = _devAddress; } function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "Same router"); uniswapV2Router = IUniswapV2Router02(newAddress); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function transferContractBalance(uint256 amount) external onlyCreator { require(amount > 0, "Transfer amount must be greater than zero"); payable(creator()).transfer(amount); } function transferForMarketingETH(address payable recipient, uint256 amount) public { 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":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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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":[{"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":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","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":"burningAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creator","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":[],"name":"devAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHoldings","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":[{"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_burningAddress","type":"address"}],"name":"setBurningAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletAddress","type":"address"}],"name":"setMigrationWallet","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":"uint256","name":"amount","type":"uint256"}],"name":"transferContractBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferForMarketingETH","outputs":[],"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":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600480546001600160a01b031990811661dead1790915560058054821673cbfd986fafae21224d7bb5168cd876de413ea0af1790556006805490911633179055600e805460ff1916905566038d7ea4c680006000190619600f556512309ce5400060118190556003601281905560138190556014819055601555601655640ba43b74006017556019805460ff60a81b1916600160a81b179055348015620000aa57600080fd5b506000620000b7620003a2565b600080546001600160a01b0383166001600160a01b031991821681178355600180549092168117909155604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600f54600860006200011f620003a2565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019657600080fd5b505afa158015620001ab573d6000803e3d6000fd5b505050506040513d6020811015620001c257600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200021357600080fd5b505afa15801562000228573d6000803e3d6000fd5b505050506040513d60208110156200023f57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200029257600080fd5b505af1158015620002a7573d6000803e3d6000fd5b505050506040513d6020811015620002be57600080fd5b5051601980546001600160a01b03199081166001600160a01b0393841617909155601880549091169183169190911790556001600b6000620002ff620003a6565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b90925290208054909116600117905562000349620003a2565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040518082815260200191505060405180910390a350620003b5565b3390565b6000546001600160a01b031690565b61337c80620003c56000396000f3fe6080604052600436106103395760003560e01c80636bc87c3a116101ab578063a457c2d7116100f7578063c49b9a8011610095578063ea2f0b371161006f578063ea2f0b3714610b32578063ec28438a14610b65578063f0f165af14610b8f578063f2fde38b14610bb957610340565b8063c49b9a8014610a98578063d0d41fe114610ac4578063dd62ed3e14610af757610340565b8063a9059cbb116100d1578063a9059cbb146109ed578063a9ef40d614610a26578063b7ea78b514610a59578063beee20dc14610a6e57610340565b8063a457c2d71461098a578063a5ece941146109c3578063a6334231146109d857610340565b80638bd7f63311610164578063906e9dd01161013e578063906e9dd01461090357806395d89b411461093657806399061beb1461094b578063a073d37f1461097557610340565b80638bd7f6331461088b5780638da5cb5b146108c45780638ee88c53146108d957610340565b80636bc87c3a146107d157806370a08231146107e6578063715018a614610819578063751039fc1461082e5780637d1db4a51461084357806388f820201461085857610340565b8063395093511161028557806349bd5a5e116102235780635342acb4116101fd5780635342acb414610741578063557ed1ba14610774578063602bc62b1461078957806365b8dbc01461079e57610340565b806349bd5a5e146106e45780634a74bb02146106f957806352390c021461070e57610340565b80633bd5d1731161025f5780633bd5d17314610640578063437823ec1461066a5780634549b0391461069d57806348112396146106cf57610340565b806339509351146105dd5780633ad10ef6146106165780633b124fe71461062b57610340565b806318160ddd116102f25780632d838119116102cc5780632d838119146105405780632f05205c1461056a578063313ce5671461057f5780633685d419146105aa57610340565b806318160ddd146104b557806323b872dd146104ca5780632a4555921461050d57610340565b806302d05d3f14610345578063061c82d01461037657806306fdde03146103a2578063095ea7b31461042c57806313114a9d146104795780631694505e146104a057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610bec565b604080516001600160a01b039092168252519081900360200190f35b34801561038257600080fd5b506103a06004803603602081101561039957600080fd5b5035610bfb565b005b3480156103ae57600080fd5b506103b7610ca9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ccd565b604080519115158252519081900360200190f35b34801561048557600080fd5b5061048e610ceb565b60408051918252519081900360200190f35b3480156104ac57600080fd5b5061035a610cf1565b3480156104c157600080fd5b5061048e610d00565b3480156104d657600080fd5b50610465600480360360608110156104ed57600080fd5b506001600160a01b03813581169160208101359091169060400135610d0b565b34801561051957600080fd5b506103a06004803603602081101561053057600080fd5b50356001600160a01b0316610e64565b34801561054c57600080fd5b5061048e6004803603602081101561056357600080fd5b5035610ede565b34801561057657600080fd5b50610465610f40565b34801561058b57600080fd5b50610594610f49565b6040805160ff9092168252519081900360200190f35b3480156105b657600080fd5b506103a0600480360360208110156105cd57600080fd5b50356001600160a01b0316610f4e565b3480156105e957600080fd5b506104656004803603604081101561060057600080fd5b506001600160a01b03813516906020013561110f565b34801561062257600080fd5b5061035a61115d565b34801561063757600080fd5b5061048e61116c565b34801561064c57600080fd5b506103a06004803603602081101561066357600080fd5b5035611172565b34801561067657600080fd5b506103a06004803603602081101561068d57600080fd5b50356001600160a01b031661124c565b3480156106a957600080fd5b5061048e600480360360408110156106c057600080fd5b508035906020013515156112c8565b3480156106db57600080fd5b5061035a61135f565b3480156106f057600080fd5b5061035a61136e565b34801561070557600080fd5b5061046561137d565b34801561071a57600080fd5b506103a06004803603602081101561073157600080fd5b50356001600160a01b031661138d565b34801561074d57600080fd5b506104656004803603602081101561076457600080fd5b50356001600160a01b0316611513565b34801561078057600080fd5b5061048e611531565b34801561079557600080fd5b5061048e611535565b3480156107aa57600080fd5b506103a0600480360360208110156107c157600080fd5b50356001600160a01b031661153b565b3480156107dd57600080fd5b5061048e611633565b3480156107f257600080fd5b5061048e6004803603602081101561080957600080fd5b50356001600160a01b0316611639565b34801561082557600080fd5b506103a061169b565b34801561083a57600080fd5b506103a061173d565b34801561084f57600080fd5b5061048e6117a2565b34801561086457600080fd5b506104656004803603602081101561087b57600080fd5b50356001600160a01b03166117a8565b34801561089757600080fd5b506103a0600480360360408110156108ae57600080fd5b506001600160a01b0381351690602001356117c6565b3480156108d057600080fd5b5061035a611801565b3480156108e557600080fd5b506103a0600480360360208110156108fc57600080fd5b5035611810565b34801561090f57600080fd5b506103a06004803603602081101561092657600080fd5b50356001600160a01b03166118be565b34801561094257600080fd5b506103b7611938565b34801561095757600080fd5b506103a06004803603602081101561096e57600080fd5b503561195c565b34801561098157600080fd5b5061048e6119b9565b34801561099657600080fd5b50610465600480360360408110156109ad57600080fd5b506001600160a01b0381351690602001356119bf565b3480156109cf57600080fd5b5061035a611a27565b3480156109e457600080fd5b506103a0611a36565b3480156109f957600080fd5b5061046560048036036040811015610a1057600080fd5b506001600160a01b038135169060200135611a9d565b348015610a3257600080fd5b506103a060048036036020811015610a4957600080fd5b50356001600160a01b0316611ab1565b348015610a6557600080fd5b5061048e611b2b565b348015610a7a57600080fd5b506103a060048036036020811015610a9157600080fd5b5035611b31565b348015610aa457600080fd5b506103a060048036036020811015610abb57600080fd5b50351515611c04565b348015610ad057600080fd5b506103a060048036036020811015610ae757600080fd5b50356001600160a01b0316611caf565b348015610b0357600080fd5b5061048e60048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516611d29565b348015610b3e57600080fd5b506103a060048036036020811015610b5557600080fd5b50356001600160a01b0316611d54565b348015610b7157600080fd5b506103a060048036036020811015610b8857600080fd5b5035611dcd565b348015610b9b57600080fd5b506103a060048036036020811015610bb257600080fd5b5035611e79565b348015610bc557600080fd5b506103a060048036036020811015610bdc57600080fd5b50356001600160a01b0316611ed6565b6001546001600160a01b031690565b610c03611fce565b6000546001600160a01b03908116911614610c53576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600a8110610ca4576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601255565b60408051808201909152600a815269119b1bdada4811dbdb1960b21b602082015290565b6000610ce1610cda611fce565b8484611fd2565b5060015b92915050565b60105490565b6018546001600160a01b031681565b66038d7ea4c6800090565b6004546000906001600160a01b03848116911614801590610d3a57506019546001600160a01b03848116911614155b8015610d5457506005546001600160a01b03848116911614155b8015610d6e57506006546001600160a01b03848116911614155b8015610d8857506018546001600160a01b03848116911614155b15610ddf576000610d9884611639565b90506011548382011115610ddd5760405162461bcd60e51b815260040180806020018281038252603e81526020018061324d603e913960400191505060405180910390fd5b505b610dea8484846120be565b610e5a84610df6611fce565b610e55856040518060600160405280602881526020016131dc602891396001600160a01b038a166000908152600a6020526040812090610e34611fce565b6001600160a01b0316815260208101919091526040016000205491906123a8565b611fd2565b5060019392505050565b610e6c611fce565b6000546001600160a01b03908116911614610ebc576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f54821115610f215760405162461bcd60e51b815260040180806020018281038252602a8152602001806130ee602a913960400191505060405180910390fd5b6000610f2b61243f565b9050610f378382612462565b9150505b919050565b600e5460ff1681565b600990565b610f56611fce565b6000546001600160a01b03908116911614610fa6576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16611013576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600d5481101561110b57816001600160a01b0316600d828154811061103757fe5b6000918252602090912001546001600160a01b0316141561110357600d8054600019810190811061106457fe5b600091825260209091200154600d80546001600160a01b03909216918390811061108a57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d8054806110dc57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561110b565b600101611016565b5050565b6000610ce161111c611fce565b84610e5585600a600061112d611fce565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906124ab565b6006546001600160a01b031681565b60125481565b600061117c611fce565b6001600160a01b0381166000908152600c602052604090205490915060ff16156111d75760405162461bcd60e51b815260040180806020018281038252602c8152602001806132f6602c913960400191505060405180910390fd5b60006111e283612505565b505050506001600160a01b03841660009081526008602052604090205491925061120e91905082612554565b6001600160a01b038316600090815260086020526040902055600f546112349082612554565b600f5560105461124490846124ab565b601055505050565b611254611fce565b6000546001600160a01b039081169116146112a4576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b600066038d7ea4c68000831115611326576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161134557600061133684612505565b50939550610ce5945050505050565b600061135084612505565b50929550610ce5945050505050565b6004546001600160a01b031681565b6019546001600160a01b031681565b601954600160a81b900460ff1681565b611395611fce565b6000546001600160a01b039081169116146113e5576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff1615611453576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260086020526040902054156114ad576001600160a01b03811660009081526008602052604090205461149390610ede565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b03166000908152600b602052604090205460ff1690565b4290565b60035490565b611543611fce565b6000546001600160a01b03908116911614611593576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6018546001600160a01b03828116911614156115e4576040805162461bcd60e51b815260206004820152600b60248201526a29b0b6b2903937baba32b960a91b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b03838116918217928390556040519216917f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a350565b60145481565b6001600160a01b0381166000908152600c602052604081205460ff161561167957506001600160a01b038116600090815260096020526040902054610f3b565b6001600160a01b038216600090815260086020526040902054610ce590610ede565b6116a3611fce565b6000546001600160a01b039081169116146116f3576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611745611fce565b6000546001600160a01b03908116911614611795576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b66038d7ea4c68000601155565b60165481565b6001600160a01b03166000908152600c602052604090205460ff1690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156117fc573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b611818611fce565b6000546001600160a01b03908116911614611868576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600a81106118b9576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601455565b6118c6611fce565b6000546001600160a01b03908116911614611916576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a81526909199b1bdada59dbdb1960b21b602082015290565b611964611fce565b6000546001600160a01b039081169116146119b4576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b601155565b60175490565b6000610ce16119cc611fce565b84610e558560405180606001604052806025815260200161332260259139600a60006119f6611fce565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906123a8565b6005546001600160a01b031681565b611a3e611fce565b6000546001600160a01b03908116911614611a8e576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600e805460ff19166001179055565b6000610ce1611aaa611fce565b84846120be565b611ab9611fce565b6000546001600160a01b03908116911614611b09576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60115481565b611b39611fce565b6001546001600160a01b03908116911614611b855760405162461bcd60e51b815260040180806020018281038252602281526020018061328b6022913960400191505060405180910390fd5b60008111611bc45760405162461bcd60e51b81526004018080602001828103825260298152602001806132246029913960400191505060405180910390fd5b611bcc610bec565b6001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561110b573d6000803e3d6000fd5b611c0c611fce565b6000546001600160a01b03908116911614611c5c576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611cb7611fce565b6000546001600160a01b03908116911614611d07576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611d5c611fce565b6000546001600160a01b03908116911614611dac576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b611dd5611fce565b6000546001600160a01b03908116911614611e25576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b611e3766038d7ea4c680006064612462565b8111611e745760405162461bcd60e51b81526004018080602001828103825260338152602001806131606033913960400191505060405180910390fd5b601655565b611e81611fce565b6000546001600160a01b03908116911614611ed1576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b601755565b611ede611fce565b6000546001600160a01b03908116911614611f2e576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b038116611f735760405162461bcd60e51b81526004018080602001828103825260268152602001806131186026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166120175760405162461bcd60e51b81526004018080602001828103825260248152602001806132d26024913960400191505060405180910390fd5b6001600160a01b03821661205c5760405162461bcd60e51b815260040180806020018281038252602281526020018061313e6022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166121035760405162461bcd60e51b81526004018080602001828103825260258152602001806132ad6025913960400191505060405180910390fd5b6001600160a01b0382166121485760405162461bcd60e51b81526004018080602001828103825260238152602001806130cb6023913960400191505060405180910390fd5b600081116121875760405162461bcd60e51b81526004018080602001828103825260298152602001806132246029913960400191505060405180910390fd5b61218f611801565b6001600160a01b0316836001600160a01b0316141580156121c957506121b3611801565b6001600160a01b0316826001600160a01b031614155b1561220f5760165481111561220f5760405162461bcd60e51b81526004018080602001828103825260288152602001806131936028913960400191505060405180910390fd5b600061221a30611639565b6017549091508110801590819061223b5750601954600160a01b900460ff16155b801561225557506019546001600160a01b03868116911614155b801561226a5750601954600160a81b900460ff165b156122785761227882612596565b6001600160a01b0385166000908152600b602052604090205460019060ff16806122ba57506001600160a01b0385166000908152600b602052604090205460ff165b156122c3575060005b6004546001600160a01b038681169116148015906122ef57506019546001600160a01b03868116911614155b801561230957506005546001600160a01b03868116911614155b801561232357506006546001600160a01b03868116911614155b801561233d57506018546001600160a01b03868116911614155b1561239457600061234d86611639565b905060115485820111156123925760405162461bcd60e51b815260040180806020018281038252603e81526020018061324d603e913960400191505060405180910390fd5b505b6123a08686868461263c565b505050505050565b600081848411156124375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123fc5781810151838201526020016123e4565b50505050905090810190601f1680156124295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061244c6127f7565b909250905061245b8282612462565b9250505090565b60006124a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061296e565b9392505050565b6000828201838110156124a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061251c8a6129d3565b925092509250600080600061253a8d868661253561243f565b612a15565b919f909e50909c50959a5093985091965092945050505050565b60006124a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123a8565b6019805460ff60a01b1916600160a01b17905560006125b6826003612462565b905060006125c48383612554565b9050476125d082612a65565b60006125dc4783612554565b6005549091506125ff906001600160a01b03166125fa836002612462565b6117c6565b600654479061261a906001600160a01b0316600283046117c6565b6126278560028304612c0b565b50506019805460ff60a01b1916905550505050565b600e5460ff166126835761264e611801565b6001600160a01b0316846001600160a01b0316148061267a57506007546001600160a01b038581169116145b61268357600080fd5b8061269057612690612cc3565b6001600160a01b0384166000908152600c602052604090205460ff1680156126d157506001600160a01b0383166000908152600c602052604090205460ff16155b156126e6576126e1848484612cf5565b6127e4565b6001600160a01b0384166000908152600c602052604090205460ff1615801561272757506001600160a01b0383166000908152600c602052604090205460ff165b15612737576126e1848484612e19565b6001600160a01b0384166000908152600c602052604090205460ff1615801561277957506001600160a01b0383166000908152600c602052604090205460ff16155b15612789576126e1848484612ec2565b6001600160a01b0384166000908152600c602052604090205460ff1680156127c957506001600160a01b0383166000908152600c602052604090205460ff165b156127d9576126e1848484612f06565b6127e4848484612ec2565b806127f1576127f1612f79565b50505050565b600f54600090819066038d7ea4c68000825b600d54811015612932578260086000600d848154811061282557fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061288a57508160096000600d848154811061286357fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156128a657600f5466038d7ea4c680009450945050505061296a565b6128e660086000600d84815481106128ba57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612554565b925061292860096000600d84815481106128fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612554565b9150600101612809565b50600f546129479066038d7ea4c68000612462565b82101561296457600f5466038d7ea4c6800093509350505061296a565b90925090505b9091565b600081836129bd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123fc5781810151838201526020016123e4565b5060008385816129c957fe5b0495945050505050565b6000806000806129e285612f87565b905060006129ef86612fa9565b90506000612a0782612a018986612554565b90612554565b979296509094509092505050565b6000808080612a248886612fc5565b90506000612a328887612fc5565b90506000612a408888612fc5565b90506000612a5282612a018686612554565b939b939a50919850919650505050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612a9357fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ae757600080fd5b505afa158015612afb573d6000803e3d6000fd5b505050506040513d6020811015612b1157600080fd5b5051815182906001908110612b2257fe5b6001600160a01b039283166020918202929092010152601854612b489130911684611fd2565b60185460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612bce578181015183820152602001612bb6565b505050509050019650505050505050600060405180830381600087803b158015612bf757600080fd5b505af11580156123a0573d6000803e3d6000fd5b601854612c239030906001600160a01b031684611fd2565b6018546006546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612c9857600080fd5b505af1158015612cac573d6000803e3d6000fd5b50505050506040513d60608110156127f157600080fd5b601254158015612cd35750601454155b15612cdd57612cf3565b6012805460135560148054601555600091829055555b565b600080600080600080612d0787612505565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612d399088612554565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d689087612554565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612d9790866124ab565b6001600160a01b038916600090815260086020526040902055612db98161301e565b612dc384836130a6565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e2b87612505565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612e5d9087612554565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612e9390846124ab565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612d9790866124ab565b600080600080600080612ed487612505565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d689087612554565b600080600080600080612f1887612505565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612f4a9088612554565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612e5d9087612554565b601354601255601554601455565b6000610ce56064612fa360125485612fc590919063ffffffff16565b90612462565b6000610ce56064612fa360145485612fc590919063ffffffff16565b600082612fd457506000610ce5565b82820282848281612fe157fe5b04146124a45760405162461bcd60e51b81526004018080602001828103825260218152602001806131bb6021913960400191505060405180910390fd5b600061302861243f565b905060006130368383612fc5565b3060009081526008602052604090205490915061305390826124ab565b30600090815260086020908152604080832093909355600c9052205460ff16156117fc573060009081526009602052604090205461309190846124ab565b30600090815260096020526040902055505050565b600f546130b39083612554565b600f556010546130c390826124ab565b601055505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d617820545820616d6f756e74206d757374206265207375706572696f7220746f203125206f662074686520737570706c792e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e4f776e61626c653a2063616c6c6572206973206e6f74207468652063726561746f7245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dca72b5233c7c3367987df56e2749b2cbb064e317f57c7d04591416babedab7764736f6c634300060c0033
Deployed Bytecode
0x6080604052600436106103395760003560e01c80636bc87c3a116101ab578063a457c2d7116100f7578063c49b9a8011610095578063ea2f0b371161006f578063ea2f0b3714610b32578063ec28438a14610b65578063f0f165af14610b8f578063f2fde38b14610bb957610340565b8063c49b9a8014610a98578063d0d41fe114610ac4578063dd62ed3e14610af757610340565b8063a9059cbb116100d1578063a9059cbb146109ed578063a9ef40d614610a26578063b7ea78b514610a59578063beee20dc14610a6e57610340565b8063a457c2d71461098a578063a5ece941146109c3578063a6334231146109d857610340565b80638bd7f63311610164578063906e9dd01161013e578063906e9dd01461090357806395d89b411461093657806399061beb1461094b578063a073d37f1461097557610340565b80638bd7f6331461088b5780638da5cb5b146108c45780638ee88c53146108d957610340565b80636bc87c3a146107d157806370a08231146107e6578063715018a614610819578063751039fc1461082e5780637d1db4a51461084357806388f820201461085857610340565b8063395093511161028557806349bd5a5e116102235780635342acb4116101fd5780635342acb414610741578063557ed1ba14610774578063602bc62b1461078957806365b8dbc01461079e57610340565b806349bd5a5e146106e45780634a74bb02146106f957806352390c021461070e57610340565b80633bd5d1731161025f5780633bd5d17314610640578063437823ec1461066a5780634549b0391461069d57806348112396146106cf57610340565b806339509351146105dd5780633ad10ef6146106165780633b124fe71461062b57610340565b806318160ddd116102f25780632d838119116102cc5780632d838119146105405780632f05205c1461056a578063313ce5671461057f5780633685d419146105aa57610340565b806318160ddd146104b557806323b872dd146104ca5780632a4555921461050d57610340565b806302d05d3f14610345578063061c82d01461037657806306fdde03146103a2578063095ea7b31461042c57806313114a9d146104795780631694505e146104a057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610bec565b604080516001600160a01b039092168252519081900360200190f35b34801561038257600080fd5b506103a06004803603602081101561039957600080fd5b5035610bfb565b005b3480156103ae57600080fd5b506103b7610ca9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ccd565b604080519115158252519081900360200190f35b34801561048557600080fd5b5061048e610ceb565b60408051918252519081900360200190f35b3480156104ac57600080fd5b5061035a610cf1565b3480156104c157600080fd5b5061048e610d00565b3480156104d657600080fd5b50610465600480360360608110156104ed57600080fd5b506001600160a01b03813581169160208101359091169060400135610d0b565b34801561051957600080fd5b506103a06004803603602081101561053057600080fd5b50356001600160a01b0316610e64565b34801561054c57600080fd5b5061048e6004803603602081101561056357600080fd5b5035610ede565b34801561057657600080fd5b50610465610f40565b34801561058b57600080fd5b50610594610f49565b6040805160ff9092168252519081900360200190f35b3480156105b657600080fd5b506103a0600480360360208110156105cd57600080fd5b50356001600160a01b0316610f4e565b3480156105e957600080fd5b506104656004803603604081101561060057600080fd5b506001600160a01b03813516906020013561110f565b34801561062257600080fd5b5061035a61115d565b34801561063757600080fd5b5061048e61116c565b34801561064c57600080fd5b506103a06004803603602081101561066357600080fd5b5035611172565b34801561067657600080fd5b506103a06004803603602081101561068d57600080fd5b50356001600160a01b031661124c565b3480156106a957600080fd5b5061048e600480360360408110156106c057600080fd5b508035906020013515156112c8565b3480156106db57600080fd5b5061035a61135f565b3480156106f057600080fd5b5061035a61136e565b34801561070557600080fd5b5061046561137d565b34801561071a57600080fd5b506103a06004803603602081101561073157600080fd5b50356001600160a01b031661138d565b34801561074d57600080fd5b506104656004803603602081101561076457600080fd5b50356001600160a01b0316611513565b34801561078057600080fd5b5061048e611531565b34801561079557600080fd5b5061048e611535565b3480156107aa57600080fd5b506103a0600480360360208110156107c157600080fd5b50356001600160a01b031661153b565b3480156107dd57600080fd5b5061048e611633565b3480156107f257600080fd5b5061048e6004803603602081101561080957600080fd5b50356001600160a01b0316611639565b34801561082557600080fd5b506103a061169b565b34801561083a57600080fd5b506103a061173d565b34801561084f57600080fd5b5061048e6117a2565b34801561086457600080fd5b506104656004803603602081101561087b57600080fd5b50356001600160a01b03166117a8565b34801561089757600080fd5b506103a0600480360360408110156108ae57600080fd5b506001600160a01b0381351690602001356117c6565b3480156108d057600080fd5b5061035a611801565b3480156108e557600080fd5b506103a0600480360360208110156108fc57600080fd5b5035611810565b34801561090f57600080fd5b506103a06004803603602081101561092657600080fd5b50356001600160a01b03166118be565b34801561094257600080fd5b506103b7611938565b34801561095757600080fd5b506103a06004803603602081101561096e57600080fd5b503561195c565b34801561098157600080fd5b5061048e6119b9565b34801561099657600080fd5b50610465600480360360408110156109ad57600080fd5b506001600160a01b0381351690602001356119bf565b3480156109cf57600080fd5b5061035a611a27565b3480156109e457600080fd5b506103a0611a36565b3480156109f957600080fd5b5061046560048036036040811015610a1057600080fd5b506001600160a01b038135169060200135611a9d565b348015610a3257600080fd5b506103a060048036036020811015610a4957600080fd5b50356001600160a01b0316611ab1565b348015610a6557600080fd5b5061048e611b2b565b348015610a7a57600080fd5b506103a060048036036020811015610a9157600080fd5b5035611b31565b348015610aa457600080fd5b506103a060048036036020811015610abb57600080fd5b50351515611c04565b348015610ad057600080fd5b506103a060048036036020811015610ae757600080fd5b50356001600160a01b0316611caf565b348015610b0357600080fd5b5061048e60048036036040811015610b1a57600080fd5b506001600160a01b0381358116916020013516611d29565b348015610b3e57600080fd5b506103a060048036036020811015610b5557600080fd5b50356001600160a01b0316611d54565b348015610b7157600080fd5b506103a060048036036020811015610b8857600080fd5b5035611dcd565b348015610b9b57600080fd5b506103a060048036036020811015610bb257600080fd5b5035611e79565b348015610bc557600080fd5b506103a060048036036020811015610bdc57600080fd5b50356001600160a01b0316611ed6565b6001546001600160a01b031690565b610c03611fce565b6000546001600160a01b03908116911614610c53576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600a8110610ca4576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601255565b60408051808201909152600a815269119b1bdada4811dbdb1960b21b602082015290565b6000610ce1610cda611fce565b8484611fd2565b5060015b92915050565b60105490565b6018546001600160a01b031681565b66038d7ea4c6800090565b6004546000906001600160a01b03848116911614801590610d3a57506019546001600160a01b03848116911614155b8015610d5457506005546001600160a01b03848116911614155b8015610d6e57506006546001600160a01b03848116911614155b8015610d8857506018546001600160a01b03848116911614155b15610ddf576000610d9884611639565b90506011548382011115610ddd5760405162461bcd60e51b815260040180806020018281038252603e81526020018061324d603e913960400191505060405180910390fd5b505b610dea8484846120be565b610e5a84610df6611fce565b610e55856040518060600160405280602881526020016131dc602891396001600160a01b038a166000908152600a6020526040812090610e34611fce565b6001600160a01b0316815260208101919091526040016000205491906123a8565b611fd2565b5060019392505050565b610e6c611fce565b6000546001600160a01b03908116911614610ebc576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000600f54821115610f215760405162461bcd60e51b815260040180806020018281038252602a8152602001806130ee602a913960400191505060405180910390fd5b6000610f2b61243f565b9050610f378382612462565b9150505b919050565b600e5460ff1681565b600990565b610f56611fce565b6000546001600160a01b03908116911614610fa6576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff16611013576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b600d5481101561110b57816001600160a01b0316600d828154811061103757fe5b6000918252602090912001546001600160a01b0316141561110357600d8054600019810190811061106457fe5b600091825260209091200154600d80546001600160a01b03909216918390811061108a57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d8054806110dc57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561110b565b600101611016565b5050565b6000610ce161111c611fce565b84610e5585600a600061112d611fce565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906124ab565b6006546001600160a01b031681565b60125481565b600061117c611fce565b6001600160a01b0381166000908152600c602052604090205490915060ff16156111d75760405162461bcd60e51b815260040180806020018281038252602c8152602001806132f6602c913960400191505060405180910390fd5b60006111e283612505565b505050506001600160a01b03841660009081526008602052604090205491925061120e91905082612554565b6001600160a01b038316600090815260086020526040902055600f546112349082612554565b600f5560105461124490846124ab565b601055505050565b611254611fce565b6000546001600160a01b039081169116146112a4576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b600066038d7ea4c68000831115611326576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161134557600061133684612505565b50939550610ce5945050505050565b600061135084612505565b50929550610ce5945050505050565b6004546001600160a01b031681565b6019546001600160a01b031681565b601954600160a81b900460ff1681565b611395611fce565b6000546001600160a01b039081169116146113e5576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600c602052604090205460ff1615611453576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260086020526040902054156114ad576001600160a01b03811660009081526008602052604090205461149390610ede565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b03166000908152600b602052604090205460ff1690565b4290565b60035490565b611543611fce565b6000546001600160a01b03908116911614611593576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6018546001600160a01b03828116911614156115e4576040805162461bcd60e51b815260206004820152600b60248201526a29b0b6b2903937baba32b960a91b604482015290519081900360640190fd5b601880546001600160a01b0319166001600160a01b03838116918217928390556040519216917f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a350565b60145481565b6001600160a01b0381166000908152600c602052604081205460ff161561167957506001600160a01b038116600090815260096020526040902054610f3b565b6001600160a01b038216600090815260086020526040902054610ce590610ede565b6116a3611fce565b6000546001600160a01b039081169116146116f3576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611745611fce565b6000546001600160a01b03908116911614611795576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b66038d7ea4c68000601155565b60165481565b6001600160a01b03166000908152600c602052604090205460ff1690565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156117fc573d6000803e3d6000fd5b505050565b6000546001600160a01b031690565b611818611fce565b6000546001600160a01b03908116911614611868576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600a81106118b9576040805162461bcd60e51b8152602060048201526019602482015278546178206665652063616e6e6f74206578636565642031302560381b604482015290519081900360640190fd5b601455565b6118c6611fce565b6000546001600160a01b03908116911614611916576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600a81526909199b1bdada59dbdb1960b21b602082015290565b611964611fce565b6000546001600160a01b039081169116146119b4576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b601155565b60175490565b6000610ce16119cc611fce565b84610e558560405180606001604052806025815260200161332260259139600a60006119f6611fce565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906123a8565b6005546001600160a01b031681565b611a3e611fce565b6000546001600160a01b03908116911614611a8e576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600e805460ff19166001179055565b6000610ce1611aaa611fce565b84846120be565b611ab9611fce565b6000546001600160a01b03908116911614611b09576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60115481565b611b39611fce565b6001546001600160a01b03908116911614611b855760405162461bcd60e51b815260040180806020018281038252602281526020018061328b6022913960400191505060405180910390fd5b60008111611bc45760405162461bcd60e51b81526004018080602001828103825260298152602001806132246029913960400191505060405180910390fd5b611bcc610bec565b6001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561110b573d6000803e3d6000fd5b611c0c611fce565b6000546001600160a01b03908116911614611c5c576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b60198054821515600160a81b810260ff60a81b199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b611cb7611fce565b6000546001600160a01b03908116911614611d07576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b611d5c611fce565b6000546001600160a01b03908116911614611dac576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b611dd5611fce565b6000546001600160a01b03908116911614611e25576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b611e3766038d7ea4c680006064612462565b8111611e745760405162461bcd60e51b81526004018080602001828103825260338152602001806131606033913960400191505060405180910390fd5b601655565b611e81611fce565b6000546001600160a01b03908116911614611ed1576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b601755565b611ede611fce565b6000546001600160a01b03908116911614611f2e576040805162461bcd60e51b81526020600482018190526024820152600080516020613204833981519152604482015290519081900360640190fd5b6001600160a01b038116611f735760405162461bcd60e51b81526004018080602001828103825260268152602001806131186026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0383166120175760405162461bcd60e51b81526004018080602001828103825260248152602001806132d26024913960400191505060405180910390fd5b6001600160a01b03821661205c5760405162461bcd60e51b815260040180806020018281038252602281526020018061313e6022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166121035760405162461bcd60e51b81526004018080602001828103825260258152602001806132ad6025913960400191505060405180910390fd5b6001600160a01b0382166121485760405162461bcd60e51b81526004018080602001828103825260238152602001806130cb6023913960400191505060405180910390fd5b600081116121875760405162461bcd60e51b81526004018080602001828103825260298152602001806132246029913960400191505060405180910390fd5b61218f611801565b6001600160a01b0316836001600160a01b0316141580156121c957506121b3611801565b6001600160a01b0316826001600160a01b031614155b1561220f5760165481111561220f5760405162461bcd60e51b81526004018080602001828103825260288152602001806131936028913960400191505060405180910390fd5b600061221a30611639565b6017549091508110801590819061223b5750601954600160a01b900460ff16155b801561225557506019546001600160a01b03868116911614155b801561226a5750601954600160a81b900460ff165b156122785761227882612596565b6001600160a01b0385166000908152600b602052604090205460019060ff16806122ba57506001600160a01b0385166000908152600b602052604090205460ff165b156122c3575060005b6004546001600160a01b038681169116148015906122ef57506019546001600160a01b03868116911614155b801561230957506005546001600160a01b03868116911614155b801561232357506006546001600160a01b03868116911614155b801561233d57506018546001600160a01b03868116911614155b1561239457600061234d86611639565b905060115485820111156123925760405162461bcd60e51b815260040180806020018281038252603e81526020018061324d603e913960400191505060405180910390fd5b505b6123a08686868461263c565b505050505050565b600081848411156124375760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156123fc5781810151838201526020016123e4565b50505050905090810190601f1680156124295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600080600061244c6127f7565b909250905061245b8282612462565b9250505090565b60006124a483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061296e565b9392505050565b6000828201838110156124a4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600080600080600061251c8a6129d3565b925092509250600080600061253a8d868661253561243f565b612a15565b919f909e50909c50959a5093985091965092945050505050565b60006124a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123a8565b6019805460ff60a01b1916600160a01b17905560006125b6826003612462565b905060006125c48383612554565b9050476125d082612a65565b60006125dc4783612554565b6005549091506125ff906001600160a01b03166125fa836002612462565b6117c6565b600654479061261a906001600160a01b0316600283046117c6565b6126278560028304612c0b565b50506019805460ff60a01b1916905550505050565b600e5460ff166126835761264e611801565b6001600160a01b0316846001600160a01b0316148061267a57506007546001600160a01b038581169116145b61268357600080fd5b8061269057612690612cc3565b6001600160a01b0384166000908152600c602052604090205460ff1680156126d157506001600160a01b0383166000908152600c602052604090205460ff16155b156126e6576126e1848484612cf5565b6127e4565b6001600160a01b0384166000908152600c602052604090205460ff1615801561272757506001600160a01b0383166000908152600c602052604090205460ff165b15612737576126e1848484612e19565b6001600160a01b0384166000908152600c602052604090205460ff1615801561277957506001600160a01b0383166000908152600c602052604090205460ff16155b15612789576126e1848484612ec2565b6001600160a01b0384166000908152600c602052604090205460ff1680156127c957506001600160a01b0383166000908152600c602052604090205460ff165b156127d9576126e1848484612f06565b6127e4848484612ec2565b806127f1576127f1612f79565b50505050565b600f54600090819066038d7ea4c68000825b600d54811015612932578260086000600d848154811061282557fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061288a57508160096000600d848154811061286357fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156128a657600f5466038d7ea4c680009450945050505061296a565b6128e660086000600d84815481106128ba57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612554565b925061292860096000600d84815481106128fc57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612554565b9150600101612809565b50600f546129479066038d7ea4c68000612462565b82101561296457600f5466038d7ea4c6800093509350505061296a565b90925090505b9091565b600081836129bd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156123fc5781810151838201526020016123e4565b5060008385816129c957fe5b0495945050505050565b6000806000806129e285612f87565b905060006129ef86612fa9565b90506000612a0782612a018986612554565b90612554565b979296509094509092505050565b6000808080612a248886612fc5565b90506000612a328887612fc5565b90506000612a408888612fc5565b90506000612a5282612a018686612554565b939b939a50919850919650505050505050565b60408051600280825260608083018452926020830190803683370190505090503081600081518110612a9357fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612ae757600080fd5b505afa158015612afb573d6000803e3d6000fd5b505050506040513d6020811015612b1157600080fd5b5051815182906001908110612b2257fe5b6001600160a01b039283166020918202929092010152601854612b489130911684611fd2565b60185460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015612bce578181015183820152602001612bb6565b505050509050019650505050505050600060405180830381600087803b158015612bf757600080fd5b505af11580156123a0573d6000803e3d6000fd5b601854612c239030906001600160a01b031684611fd2565b6018546006546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b158015612c9857600080fd5b505af1158015612cac573d6000803e3d6000fd5b50505050506040513d60608110156127f157600080fd5b601254158015612cd35750601454155b15612cdd57612cf3565b6012805460135560148054601555600091829055555b565b600080600080600080612d0787612505565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612d399088612554565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d689087612554565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612d9790866124ab565b6001600160a01b038916600090815260086020526040902055612db98161301e565b612dc384836130a6565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612e2b87612505565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612e5d9087612554565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612e9390846124ab565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612d9790866124ab565b600080600080600080612ed487612505565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d689087612554565b600080600080600080612f1887612505565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612f4a9088612554565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612e5d9087612554565b601354601255601554601455565b6000610ce56064612fa360125485612fc590919063ffffffff16565b90612462565b6000610ce56064612fa360145485612fc590919063ffffffff16565b600082612fd457506000610ce5565b82820282848281612fe157fe5b04146124a45760405162461bcd60e51b81526004018080602001828103825260218152602001806131bb6021913960400191505060405180910390fd5b600061302861243f565b905060006130368383612fc5565b3060009081526008602052604090205490915061305390826124ab565b30600090815260086020908152604080832093909355600c9052205460ff16156117fc573060009081526009602052604090205461309190846124ab565b30600090815260096020526040902055505050565b600f546130b39083612554565b600f556010546130c390826124ab565b601055505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d617820545820616d6f756e74206d757374206265207375706572696f7220746f203125206f662074686520737570706c792e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e4f776e61626c653a2063616c6c6572206973206e6f74207468652063726561746f7245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dca72b5233c7c3367987df56e2749b2cbb064e317f57c7d04591416babedab7764736f6c634300060c0033
Deployed Bytecode Sourcemap
15235:20487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6434:83;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;6434:83:0;;;;;;;;;;;;;;33396:158;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33396:158:0;;:::i;:::-;;17840:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18771:163;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18771:163:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20392:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16767:41;;;;;;;;;;;;;:::i;18126:97::-;;;;;;;;;;;;;:::i;19039:704::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19039:704:0;;;;;;;;;;;;;;;;;:::i;34080:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34080:120:0;-1:-1:-1;;;;;34080:120:0;;:::i;21575:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21575:253:0;;:::i;16025:28::-;;;;;;;;;;;;;:::i;18032:85::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22181:479;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22181:479:0;-1:-1:-1;;;;;22181:479:0;;:::i;19752:220::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19752:220:0;;;;;;;;:::i;15579:46::-;;;;;;;;;;;;;:::i;16468:26::-;;;;;;;;;;;;;:::i;20737:379::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20737:379:0;;:::i;33153:113::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33153:113:0;-1:-1:-1;;;;;33153:113:0;;:::i;21128:438::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21128:438:0;;;;;;;;;:::i;15354:82::-;;;;;;;;;;;;;:::i;16815:28::-;;;;;;;;;;;;;:::i;16881:40::-;;;;;;;;;;;;;:::i;21837:335::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21837:335:0;-1:-1:-1;;;;;21837:335:0;;:::i;33019:125::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33019:125:0;-1:-1:-1;;;;;33019:125:0;;:::i;7297:78::-;;;;;;;;;;;;;:::i;7198:90::-;;;;;;;;;;;;;:::i;34808:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34808:292:0;-1:-1:-1;;;;;34808:292:0;;:::i;16552:32::-;;;;;;;;;;;;;:::i;18232:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18232:198:0;-1:-1:-1;;;;;18232:198:0;;:::i;6788:148::-;;;;;;;;;;;;;:::i;18942:88::-;;;;;;;;;;;;;:::i;16654:43::-;;;;;;;;;;;;;:::i;20261:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20261:122:0;-1:-1:-1;;;;;20261:122:0;;:::i;35496:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;35496:128:0;;;;;;;;:::i;6346:79::-;;;;;;;;;;;;;:::i;33563:196::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33563:196:0;;:::i;34384:140::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34384:140:0;-1:-1:-1;;;;;34384:140:0;;:::i;17934:89::-;;;;;;;;;;;;;:::i;20620:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20620:108:0;;:::i;20490:122::-;;;;;;;;;;;;;:::i;19981:271::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19981:271:0;;;;;;;;:::i;15459:84::-;;;;;;;;;;;;;:::i;33993:78::-;;;;;;;;;;;;;:::i;18439:169::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18439:169:0;;;;;;;;:::i;34536:132::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34536:132:0;-1:-1:-1;;;;;34536:132:0;;:::i;16410:48::-;;;;;;;;;;;;;:::i;35288:199::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35288:199:0;;:::i;35106:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35106:173:0;;;;:::i;34680:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34680:116:0;-1:-1:-1;;;;;34680:116:0;;:::i;18617:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18617:145:0;;;;;;;;;;:::i;33275:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33275:112:0;-1:-1:-1;;;;;33275:112:0;;:::i;33768:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33768:216:0;;:::i;34209:166::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34209:166:0;;:::i;6945:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6945:244:0;-1:-1:-1;;;;;6945:244:0;;:::i;6434:83::-;6501:8;;-1:-1:-1;;;;;6501:8:0;6434:83;:::o;33396:158::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;33487:2:::1;33478:6;:11;33470:49;;;::::0;;-1:-1:-1;;;33470:49:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33470:49:0;;;;;;;;;;;;;::::1;;33530:7;:16:::0;33396:158::o;17840:85::-;17912:5;;;;;;;;;;;;-1:-1:-1;;;17912:5:0;;;;17840:85;:::o;18771:163::-;18848:4;18865:39;18874:12;:10;:12::i;:::-;18888:7;18897:6;18865:8;:39::i;:::-;-1:-1:-1;18922:4:0;18771:163;;;;;:::o;20392:89::-;20463:10;;20392:89;:::o;16767:41::-;;;-1:-1:-1;;;;;16767:41:0;;:::o;18126:97::-;16147:15;18126:97;:::o;19039:704::-;19179:14;;19139:4;;-1:-1:-1;;;;;19166:27:0;;;19179:14;;19166:27;;;;:57;;-1:-1:-1;19210:13:0;;-1:-1:-1;;;;;19197:26:0;;;19210:13;;19197:26;;19166:57;:90;;;;-1:-1:-1;19240:16:0;;-1:-1:-1;;;;;19227:29:0;;;19240:16;;19227:29;;19166:90;:117;;;;-1:-1:-1;19273:10:0;;-1:-1:-1;;;;;19260:23:0;;;19273:10;;19260:23;;19166:117;:159;;;;-1:-1:-1;19309:15:0;;-1:-1:-1;;;;;19288:37:0;;;19309:15;;19288:37;;19166:159;19162:369;;;19341:18;19362:20;19372:9;19362;:20::i;:::-;19341:41;;19430:17;;19419:6;19406:10;:19;19405:42;;19397:116;;;;-1:-1:-1;;;19397:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19162:369;;19545:36;19555:6;19563:9;19574:6;19545:9;:36::i;:::-;19592:121;19601:6;19609:12;:10;:12::i;:::-;19623:89;19661:6;19623:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19623:19:0;;;;;;:11;:19;;;;;;19643:12;:10;:12::i;:::-;-1:-1:-1;;;;;19623:33:0;;;;;;;;;;;;-1:-1:-1;19623:33:0;;;:89;:37;:89::i;:::-;19592:8;:121::i;:::-;-1:-1:-1;19731:4:0;19039:704;;;;;:::o;34080:120::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34161:15:::1;:31:::0;;-1:-1:-1;;;;;;34161:31:0::1;-1:-1:-1::0;;;;;34161:31:0;;;::::1;::::0;;;::::1;::::0;;34080:120::o;21575:253::-;21641:7;21680;;21669;:18;;21661:73;;;;-1:-1:-1;;;21661:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21745:19;21768:10;:8;:10::i;:::-;21745:33;-1:-1:-1;21796:24:0;:7;21745:33;21796:11;:24::i;:::-;21789:31;;;21575:253;;;;:::o;16025:28::-;;;;;;:::o;18032:85::-;16400:1;18032:85;:::o;22181:479::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22263:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22255:60;;;::::0;;-1:-1:-1;;;22255:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22331:9;22326:327;22350:9;:16:::0;22346:20;::::1;22326:327;;;22408:7;-1:-1:-1::0;;;;;22392:23:0::1;:9;22402:1;22392:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22392:12:0::1;:23;22388:254;;;22451:9;22461:16:::0;;-1:-1:-1;;22461:20:0;;;22451:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22436:9:::1;:12:::0;;-1:-1:-1;;;;;22451:31:0;;::::1;::::0;22446:1;;22436:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;22436:46:0::1;-1:-1:-1::0;;;;;22436:46:0;;::::1;;::::0;;22501:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;22540:11:::1;:20:::0;;;;:28;;-1:-1:-1;;22540:28:0::1;::::0;;22587:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22587:15:0;;;;;-1:-1:-1;;;;;;22587:15:0::1;::::0;;;;;22621:5:::1;;22388:254;22368:3;;22326:327;;;;22181:479:::0;:::o;19752:220::-;19842:4;19859:83;19868:12;:10;:12::i;:::-;19882:7;19891:50;19930:10;19891:11;:25;19903:12;:10;:12::i;:::-;-1:-1:-1;;;;;19891:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;19891:25:0;;;:34;;;;;;;;;;;:38;:50::i;15579:46::-;;;-1:-1:-1;;;;;15579:46:0;;:::o;16468:26::-;;;;:::o;20737:379::-;20791:14;20808:12;:10;:12::i;:::-;-1:-1:-1;;;;;20840:19:0;;;;;;:11;:19;;;;;;20791:29;;-1:-1:-1;20840:19:0;;20839:20;20831:77;;;;-1:-1:-1;;;20831:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20920:15;20944:19;20955:7;20944:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20992:15:0;;;;;;:7;:15;;;;;;20919:44;;-1:-1:-1;20992:28:0;;:15;-1:-1:-1;20919:44:0;20992:19;:28::i;:::-;-1:-1:-1;;;;;20974:15:0;;;;;;:7;:15;;;;;:46;21041:7;;:20;;21053:7;21041:11;:20::i;:::-;21031:7;:30;21085:10;;:23;;21100:7;21085:14;:23::i;:::-;21072:10;:36;-1:-1:-1;;;20737:379:0:o;33153:113::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33224:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;33224:34:0::1;33254:4;33224:34;::::0;;33153:113::o;21128:438::-;21220:7;16147:15;21248:7;:18;;21240:62;;;;;-1:-1:-1;;;21240:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21318:17;21313:246;;21353:15;21377:19;21388:7;21377:10;:19::i;:::-;-1:-1:-1;21352:44:0;;-1:-1:-1;21411:14:0;;-1:-1:-1;;;;;21411:14:0;21313:246;21460:23;21491:19;21502:7;21491:10;:19::i;:::-;-1:-1:-1;21458:52:0;;-1:-1:-1;21525:22:0;;-1:-1:-1;;;;;21525:22:0;15354:82;;;-1:-1:-1;;;;;15354:82:0;;:::o;16815:28::-;;;-1:-1:-1;;;;;16815:28:0;;:::o;16881:40::-;;;-1:-1:-1;;;16881:40:0;;;;;:::o;21837:335::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21922:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;21921:21;21913:61;;;::::0;;-1:-1:-1;;;21913:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;21988:16:0;::::1;22007:1;21988:16:::0;;;:7:::1;:16;::::0;;;;;:20;21985:108:::1;;-1:-1:-1::0;;;;;22064:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22044:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22025:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;21985:108:::1;-1:-1:-1::0;;;;;22103:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22103:27:0::1;22126:4;22103:27:::0;;::::1;::::0;;;22141:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22141:23:0::1;::::0;;::::1;::::0;;21837:335::o;33019:125::-;-1:-1:-1;;;;;33109:27:0;33085:4;33109:27;;;:18;:27;;;;;;;;;33019:125::o;7297:78::-;7364:3;7297:78;:::o;7198:90::-;7271:9;;7198:90;:::o;34808:292::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34917:15:::1;::::0;-1:-1:-1;;;;;34895:38:0;;::::1;34917:15:::0;::::1;34895:38;;34887:62;;;::::0;;-1:-1:-1;;;34887:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;34887:62:0;;;;;;;;;;;;;::::1;;34969:15;:48:::0;;-1:-1:-1;;;;;;34969:48:0::1;-1:-1:-1::0;;;;;34969:48:0;;::::1;::::0;;::::1;::::0;;;;35033:59:::1;::::0;35075:15;::::1;::::0;35033:59:::1;::::0;-1:-1:-1;;35033:59:0::1;34808:292:::0;:::o;16552:32::-;;;;:::o;18232:198::-;-1:-1:-1;;;;;18322:20:0;;18298:7;18322:20;;;:11;:20;;;;;;;;18318:49;;;-1:-1:-1;;;;;;18351:16:0;;;;;;:7;:16;;;;;;18344:23;;18318:49;-1:-1:-1;;;;;18405:16:0;;;;;;:7;:16;;;;;;18385:37;;:19;:37::i;6788:148::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;6895:1:::1;6879:6:::0;;6858:40:::1;::::0;-1:-1:-1;;;;;6879:6:0;;::::1;::::0;6858:40:::1;::::0;6895:1;;6858:40:::1;6926:1;6909:19:::0;;-1:-1:-1;;;;;;6909:19:0::1;::::0;;6788:148::o;18942:88::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;16147:15:::1;18995:17;:27:::0;18942:88::o;16654:43::-;;;;:::o;20261:122::-;-1:-1:-1;;;;;20355:20:0;20331:4;20355:20;;;:11;:20;;;;;;;;;20261:122::o;35496:128::-;35590:26;;-1:-1:-1;;;;;35590:18:0;;;:26;;;;;35609:6;;35590:26;;;;35609:6;35590:18;:26;;;;;;;;;;;;;;;;;;;;;35496:128;;:::o;6346:79::-;6384:7;6411:6;-1:-1:-1;;;;;6411:6:0;6346:79;:::o;33563:196::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;33680:2:::1;33665:12;:17;33657:55;;;::::0;;-1:-1:-1;;;33657:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;33657:55:0;;;;;;;;;;;;;::::1;;33723:13;:28:::0;33563:196::o;34384:140::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34480:16:::1;:36:::0;;-1:-1:-1;;;;;;34480:36:0::1;-1:-1:-1::0;;;;;34480:36:0;;;::::1;::::0;;;::::1;::::0;;34384:140::o;17934:89::-;18008:7;;;;;;;;;;;;-1:-1:-1;;;18008:7:0;;;;17934:89;:::o;20620:108::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;20694:17:::1;:26:::0;20620:108::o;20490:122::-;20581:23;;20490:122;:::o;19981:271::-;20076:4;20093:129;20102:12;:10;:12::i;:::-;20116:7;20125:96;20164:15;20125:96;;;;;;;;;;;;;;;;;:11;:25;20137:12;:10;:12::i;:::-;-1:-1:-1;;;;;20125:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;20125:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;15459:84::-;;;-1:-1:-1;;;;;15459:84:0;;:::o;33993:78::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34048:8:::1;:15:::0;;-1:-1:-1;;34048:15:0::1;34059:4;34048:15;::::0;;33993:78::o;18439:169::-;18519:4;18536:42;18546:12;:10;:12::i;:::-;18560:9;18571:6;18536:9;:42::i;34536:132::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34628:14:::1;:32:::0;;-1:-1:-1;;;;;;34628:32:0::1;-1:-1:-1::0;;;;;34628:32:0;;;::::1;::::0;;;::::1;::::0;;34536:132::o;16410:48::-;;;;:::o;35288:199::-;6708:12;:10;:12::i;:::-;6696:8;;-1:-1:-1;;;;;6696:8:0;;;:24;;;6688:71;;;;-1:-1:-1;;;6688:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35386:1:::1;35377:6;:10;35369:64;;;;-1:-1:-1::0;;;35369:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35452:9;:7;:9::i;:::-;-1:-1:-1::0;;;;;35444:27:0::1;:35;35472:6;35444:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;35106:173:::0;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;35185:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;35185:32:0;::::1;-1:-1:-1::0;;;;35185:32:0;;::::1;::::0;;;::::1;::::0;;;35233:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;35106:173:::0;:::o;34680:116::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34764:10:::1;:24:::0;;-1:-1:-1;;;;;;34764:24:0::1;-1:-1:-1::0;;;;;34764:24:0;;;::::1;::::0;;;::::1;::::0;;34680:116::o;18617:145::-;-1:-1:-1;;;;;18727:18:0;;;18700:7;18727:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18617:145::o;33275:112::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33344:27:0::1;33374:5;33344:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;33344:35:0::1;::::0;;33275:112::o;33768:216::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;33867:16:::1;16147:15;33879:3;33867:11;:16::i;:::-;33853:11;:30;33845:94;;;;-1:-1:-1::0;;;33845:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33950:12;:26:::0;33768:216::o;34209:166::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;34317:23:::1;:50:::0;34209:166::o;6945:244::-;6576:12;:10;:12::i;:::-;6566:6;;-1:-1:-1;;;;;6566:6:0;;;:22;;;6558:67;;;;;-1:-1:-1;;;6558:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6558:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7034:22:0;::::1;7026:73;;;;-1:-1:-1::0;;;7026:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7136:6;::::0;;7115:38:::1;::::0;-1:-1:-1;;;;;7115:38:0;;::::1;::::0;7136:6;::::1;::::0;7115:38:::1;::::0;::::1;7164:6;:17:::0;;-1:-1:-1;;;;;;7164:17:0::1;-1:-1:-1::0;;;;;7164:17:0;;;::::1;::::0;;;::::1;::::0;;6945:244::o;464:106::-;552:10;464:106;:::o;22669:338::-;-1:-1:-1;;;;;22762:19:0;;22754:68;;;;-1:-1:-1;;;22754:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22841:21:0;;22833:68;;;;-1:-1:-1;;;22833:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22915:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22967:32;;;;;;;;;;;;;;;;;22669:338;;;:::o;23016:1499::-;-1:-1:-1;;;;;23138:18:0;;23130:68;;;;-1:-1:-1;;;23130:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23217:16:0;;23209:64;;;;-1:-1:-1;;;23209:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23301:1;23292:6;:10;23284:64;;;;-1:-1:-1;;;23284:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23370:7;:5;:7::i;:::-;-1:-1:-1;;;;;23362:15:0;:4;-1:-1:-1;;;;;23362:15:0;;;:32;;;;;23387:7;:5;:7::i;:::-;-1:-1:-1;;;;;23381:13:0;:2;-1:-1:-1;;;;;23381:13:0;;;23362:32;23359:125;;;23427:12;;23417:6;:22;;23409:75;;;;-1:-1:-1;;;23409:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23501:28;23532:24;23550:4;23532:9;:24::i;:::-;23622:23;;23501:55;;-1:-1:-1;23598:47:0;;;;;;;23674:57;;-1:-1:-1;23715:16:0;;-1:-1:-1;;;23715:16:0;;;;23714:17;23674:57;:95;;;;-1:-1:-1;23756:13:0;;-1:-1:-1;;;;;23748:21:0;;;23756:13;;23748:21;;23674:95;:133;;;;-1:-1:-1;23786:21:0;;-1:-1:-1;;;23786:21:0;;;;23674:133;23656:229;;;23837:36;23852:20;23837:14;:36::i;:::-;-1:-1:-1;;;;;24021:24:0;;23901:12;24021:24;;;:18;:24;;;;;;23916:4;;24021:24;;;:50;;-1:-1:-1;;;;;;24049:22:0;;;;;;:18;:22;;;;;;;;24021:50;24018:96;;;-1:-1:-1;24097:5:0;24018:96;24139:14;;-1:-1:-1;;;;;24133:20:0;;;24139:14;;24133:20;;;;:43;;-1:-1:-1;24163:13:0;;-1:-1:-1;;;;;24157:19:0;;;24163:13;;24157:19;;24133:43;:69;;;;-1:-1:-1;24186:16:0;;-1:-1:-1;;;;;24180:22:0;;;24186:16;;24180:22;;24133:69;:89;;;;-1:-1:-1;24212:10:0;;-1:-1:-1;;;;;24206:16:0;;;24212:10;;24206:16;;24133:89;:124;;;;-1:-1:-1;24241:15:0;;-1:-1:-1;;;;;24227:30:0;;;24241:15;;24227:30;;24133:124;24129:327;;;24273:18;24294:13;24304:2;24294:9;:13::i;:::-;24273:34;;24355:17;;24344:6;24331:10;:19;24330:42;;24322:116;;;;-1:-1:-1;;;24322:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24129:327;;24469:38;24484:4;24489:2;24492:6;24499:7;24469:14;:38::i;:::-;23016:1499;;;;;;:::o;1873:193::-;1959:7;1995:12;1987:6;;;;1979:29;;;;-1:-1:-1;;;1979:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2031:5:0;;;1873:193::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;2339:132::-;2397:7;2424:39;2428:1;2431;2424:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2417:46;2339:132;-1:-1:-1;;;2339:132:0:o;1537:182::-;1595:7;1627:5;;;1651:6;;;;1643:46;;;;;-1:-1:-1;;;1643:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;29991:419;30050:7;30059;30068;30077;30086;30095;30116:23;30141:12;30155:18;30177:20;30189:7;30177:11;:20::i;:::-;30115:82;;;;;;30209:15;30226:23;30251:12;30267:50;30279:7;30288:4;30294:10;30306;:8;:10::i;:::-;30267:11;:50::i;:::-;30208:109;;;;-1:-1:-1;30208:109:0;;-1:-1:-1;30368:15:0;;-1:-1:-1;30385:4:0;;-1:-1:-1;30391:10:0;;-1:-1:-1;29991:419:0;;-1:-1:-1;;;;;29991:419:0:o;1728:136::-;1786:7;1813:43;1817:1;1820;1813:43;;;;;;;;;;;;;;;;;:3;:43::i;24524:831::-;17212:16;:23;;-1:-1:-1;;;;17212:23:0;-1:-1:-1;;;17212:23:0;;;;24637:27:::1;:20:::0;24662:1:::1;24637:24;:27::i;:::-;24612:52:::0;-1:-1:-1;24683:20:0::1;24706:40;:20:::0;24612:52;24706:24:::1;:40::i;:::-;24683:63:::0;-1:-1:-1;24788:21:0::1;24853:30;24683:63:::0;24853:16:::1;:30::i;:::-;24929:26;24958:41;:21;24984:14:::0;24958:25:::1;:41::i;:::-;25037:16;::::0;24929:70;;-1:-1:-1;25013:68:0::1;::::0;-1:-1:-1;;;;;25037:16:0::1;25055:25;24929:70:::0;25078:1:::1;25055:22;:25::i;:::-;25013:23;:68::i;:::-;25233:10;::::0;25131:21:::1;::::0;25209:66:::1;::::0;-1:-1:-1;;;;;25233:10:0::1;25273:1;25131:21:::0;25245:29:::1;25209:23;:66::i;:::-;25286:58;25299:14:::0;25342:1:::1;25315:25:::0;:28:::1;25286:12;:58::i;:::-;-1:-1:-1::0;;17258:16:0;:24;;-1:-1:-1;;;;17258:24:0;;;-1:-1:-1;;;;24524:831:0:o;26515:979::-;26629:8;;;;26625:143;;26671:7;:5;:7::i;:::-;-1:-1:-1;;;;;26661:17:0;:6;-1:-1:-1;;;;;26661:17:0;;:46;;;-1:-1:-1;26692:15:0;;-1:-1:-1;;;;;26682:25:0;;;26692:15;;26682:25;26661:46;26653:55;;;;;;26785:7;26781:40;;26807:14;:12;:14::i;:::-;-1:-1:-1;;;;;26839:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;26863:22:0;;;;;;:11;:22;;;;;;;;26862:23;26839:46;26835:597;;;26902:48;26924:6;26932:9;26943:6;26902:21;:48::i;:::-;26835:597;;;-1:-1:-1;;;;;26973:19:0;;;;;;:11;:19;;;;;;;;26972:20;:46;;;;-1:-1:-1;;;;;;26996:22:0;;;;;;:11;:22;;;;;;;;26972:46;26968:464;;;27035:46;27055:6;27063:9;27074:6;27035:19;:46::i;26968:464::-;-1:-1:-1;;;;;27104:19:0;;;;;;:11;:19;;;;;;;;27103:20;:47;;;;-1:-1:-1;;;;;;27128:22:0;;;;;;:11;:22;;;;;;;;27127:23;27103:47;27099:333;;;27167:44;27185:6;27193:9;27204:6;27167:17;:44::i;27099:333::-;-1:-1:-1;;;;;27233:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;27256:22:0;;;;;;:11;:22;;;;;;;;27233:45;27229:203;;;27295:48;27317:6;27325:9;27336:6;27295:21;:48::i;27229:203::-;27376:44;27394:6;27402:9;27413:6;27376:17;:44::i;:::-;27449:7;27445:41;;27471:15;:13;:15::i;:::-;26515:979;;;;:::o;31368:561::-;31465:7;;31418;;;;16147:15;31418:7;31525:289;31549:9;:16;31545:20;;31525:289;;;31615:7;31591;:21;31599:9;31609:1;31599:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31599:12:0;31591:21;;;;;;;;;;;;;:31;;:66;;;31650:7;31626;:21;31634:9;31644:1;31634:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31634:12:0;31626:21;;;;;;;;;;;;;:31;31591:66;31587:97;;;31667:7;;16147:15;31659:25;;;;;;;;;31587:97;31709:34;31721:7;:21;31729:9;31739:1;31729:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31729:12:0;31721:21;;;;;;;;;;;;;31709:7;;:11;:34::i;:::-;31699:44;;31768:34;31780:7;:21;31788:9;31798:1;31788:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31788:12:0;31780:21;;;;;;;;;;;;;31768:7;;:11;:34::i;:::-;31758:44;-1:-1:-1;31567:3:0;;31525:289;;;-1:-1:-1;31838:7:0;;:20;;16147:15;31838:11;:20::i;:::-;31828:7;:30;31824:61;;;31868:7;;16147:15;31860:25;;;;;;;;31824:61;31904:7;;-1:-1:-1;31913:7:0;-1:-1:-1;31368:561:0;;;:::o;2480:279::-;2566:7;2601:12;2594:5;2586:28;;;;-1:-1:-1;;;2586:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:9;2641:1;2637;:5;;;;;;;2480:279;-1:-1:-1;;;;;2480:279:0:o;30419:330::-;30479:7;30488;30497;30517:12;30532:24;30548:7;30532:15;:24::i;:::-;30517:39;;30567:18;30588:30;30610:7;30588:21;:30::i;:::-;30567:51;-1:-1:-1;30629:23:0;30655:33;30567:51;30655:17;:7;30667:4;30655:11;:17::i;:::-;:21;;:33::i;:::-;30629:59;30724:4;;-1:-1:-1;30730:10:0;;-1:-1:-1;30419:330:0;;-1:-1:-1;;;30419:330:0:o;30758:429::-;30873:7;;;;30929:24;:7;30941:11;30929;:24::i;:::-;30911:42;-1:-1:-1;30964:12:0;30979:21;:4;30988:11;30979:8;:21::i;:::-;30964:36;-1:-1:-1;31011:18:0;31032:27;:10;31047:11;31032:14;:27::i;:::-;31011:48;-1:-1:-1;31070:23:0;31096:33;31011:48;31096:17;:7;31108:4;31096:11;:17::i;:33::-;31148:7;;;;-1:-1:-1;31174:4:0;;-1:-1:-1;30758:429:0;;-1:-1:-1;;;;;;;30758:429:0:o;25896:607::-;26046:16;;;26060:1;26046:16;;;26022:21;26046:16;;;;;26022:21;26046:16;;;;;;;;;;-1:-1:-1;26046:16:0;26022:40;;26091:4;26073;26078:1;26073:7;;;;;;;;-1:-1:-1;;;;;26073:23:0;;;:7;;;;;;;;;;:23;;;;26117:15;;:22;;;-1:-1:-1;;;26117:22:0;;;;:15;;;;;:20;;:22;;;;;26073:7;;26117:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26117:22:0;26107:7;;:4;;26112:1;;26107:7;;;;;;-1:-1:-1;;;;;26107:32:0;;;:7;;;;;;;;;:32;26185:15;;26153:62;;26170:4;;26185:15;26203:11;26153:8;:62::i;:::-;26255:15;;:240;;-1:-1:-1;;;26255:240:0;;;;;;;;:15;:240;;;;;;26433:4;26255:240;;;;;;26469:15;26255:240;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26255:15:0;;;;:66;;26336:11;;26406:4;;26433;26469:15;26255:240;;;;;;;;;;;;;;;;:15;:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25364:523;25547:15;;25515:62;;25532:4;;-1:-1:-1;;;;;25547:15:0;25565:11;25515:8;:62::i;:::-;25621:15;;25825:10;;25621:255;;;-1:-1:-1;;;25621:255:0;;25693:4;25621:255;;;;;;;;;;:15;:255;;;;;;;;;;-1:-1:-1;;;;;25825:10:0;;;25621:255;;;;25850:15;25621:255;;;;;;:15;;;;;:31;;25660:9;;25621:255;;;;;;;;;;;;;;;25660:9;25621:15;:255;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32640:236;32686:7;;:12;:34;;;;-1:-1:-1;32702:13:0;;:18;32686:34;32683:46;;;32722:7;;32683:46;32760:7;;;32742:15;:25;32802:13;;;32778:21;:37;-1:-1:-1;32829:11:0;;;;32851:17;32640:236;:::o;28609:566::-;28712:15;28729:23;28754:12;28768:23;28793:12;28807:18;28829:19;28840:7;28829:10;:19::i;:::-;-1:-1:-1;;;;;28877:15:0;;;;;;:7;:15;;;;;;28711:137;;-1:-1:-1;28711:137:0;;-1:-1:-1;28711:137:0;;-1:-1:-1;28711:137:0;-1:-1:-1;28711:137:0;-1:-1:-1;28711:137:0;-1:-1:-1;28877:28:0;;28897:7;28877:19;:28::i;:::-;-1:-1:-1;;;;;28859:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28934:7;:15;;;;:28;;28954:7;28934:19;:28::i;:::-;-1:-1:-1;;;;;28916:15:0;;;;;;;:7;:15;;;;;;:46;;;;28994:18;;;;;;;:39;;29017:15;28994:22;:39::i;:::-;-1:-1:-1;;;;;28973:18:0;;;;;;:7;:18;;;;;:60;29047:26;29062:10;29047:14;:26::i;:::-;29084:23;29096:4;29102;29084:11;:23::i;:::-;29140:9;-1:-1:-1;;;;;29123:44:0;29132:6;-1:-1:-1;;;;;29123:44:0;;29151:15;29123:44;;;;;;;;;;;;;;;;;;28609:566;;;;;;;;;:::o;28014:586::-;28115:15;28132:23;28157:12;28171:23;28196:12;28210:18;28232:19;28243:7;28232:10;:19::i;:::-;-1:-1:-1;;;;;28280:15:0;;;;;;:7;:15;;;;;;28114:137;;-1:-1:-1;28114:137:0;;-1:-1:-1;28114:137:0;;-1:-1:-1;28114:137:0;-1:-1:-1;28114:137:0;-1:-1:-1;28114:137:0;-1:-1:-1;28280:28:0;;28114:137;28280:19;:28::i;:::-;-1:-1:-1;;;;;28262:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;28340:18;;;;;:7;:18;;;;;:39;;28363:15;28340:22;:39::i;:::-;-1:-1:-1;;;;;28319:18:0;;;;;;:7;:18;;;;;;;;:60;;;;28411:7;:18;;;;:39;;28434:15;28411:22;:39::i;27503:502::-;27602:15;27619:23;27644:12;27658:23;27683:12;27697:18;27719:19;27730:7;27719:10;:19::i;:::-;-1:-1:-1;;;;;27767:15:0;;;;;;:7;:15;;;;;;27601:137;;-1:-1:-1;27601:137:0;;-1:-1:-1;27601:137:0;;-1:-1:-1;27601:137:0;-1:-1:-1;27601:137:0;-1:-1:-1;27601:137:0;-1:-1:-1;27767:28:0;;27601:137;27767:19;:28::i;29184:642::-;29287:15;29304:23;29329:12;29343:23;29368:12;29382:18;29404:19;29415:7;29404:10;:19::i;:::-;-1:-1:-1;;;;;29452:15:0;;;;;;:7;:15;;;;;;29286:137;;-1:-1:-1;29286:137:0;;-1:-1:-1;29286:137:0;;-1:-1:-1;29286:137:0;-1:-1:-1;29286:137:0;-1:-1:-1;29286: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;32885:125::-;32939:15;;32929:7;:25;32981:21;;32965:13;:37;32885:125::o;32302:154::-;32366:7;32393:55;32432:5;32393:20;32405:7;;32393;:11;;:20;;;;:::i;:::-;:24;;:55::i;32465:166::-;32535:7;32562:61;32607:5;32562:26;32574:13;;32562:7;:11;;:26;;;;:::i;2075:252::-;2133:7;2157:6;2153:47;;-1:-1:-1;2187:1:0;2180:8;;2153:47;2225:5;;;2229:1;2225;:5;:1;2249:5;;;;;:10;2241:56;;;;-1:-1:-1;;;2241:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31938:355;32001:19;32024:10;:8;:10::i;:::-;32001:33;-1:-1:-1;32045:18:0;32066:27;:10;32001:33;32066:14;:27::i;:::-;32145:4;32129:22;;;;:7;:22;;;;;;32045:48;;-1:-1:-1;32129:38:0;;32045:48;32129:26;:38::i;:::-;32120:4;32104:22;;;;:7;:22;;;;;;;;:63;;;;32181:11;:26;;;;;;32178:107;;;32263:4;32247:22;;;;:7;:22;;;;;;:38;;32274:10;32247:26;:38::i;:::-;32238:4;32222:22;;;;:7;:22;;;;;:63;31938:355;;;:::o;29835:147::-;29913:7;;:17;;29925:4;29913:11;:17::i;:::-;29903:7;:27;29954:10;;:20;;29969:4;29954:14;:20::i;:::-;29941:10;:33;-1:-1:-1;;29835:147:0:o
Swarm Source
ipfs://dca72b5233c7c3367987df56e2749b2cbb064e317f57c7d04591416babedab77
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.