Polygon Sponsored slots available. Book your slot here!
Contract Overview
[ Download CSV Export ]
Contract Name:
PolyCatsToken
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-01-02 */ // SPDX-License-Identifier: Unlicensed // // 5% Auto LP // 4% Reflections // 1% Marketing // // PolyCats.net // T.me/PolyCats // pragma solidity ^0.8.4; 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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = 0x354A7ec7D2C8b1Cbe63E64c0C161ACf2d1EA4aE4; emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { 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; } } 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 Mint(address indexed sender, uint amount0, uint amount1); 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 mint(address to) external returns (uint liquidity); 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 PolyCatsToken is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; 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; address private _developmentWalletAddress = 0x2B18E66Bb3AF95a20ACbAEbB244CB23683485aEb; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "Poly Cats"; string private _symbol = "CATS"; uint8 private _decimals = 18; uint256 public _taxFee = 40; uint256 private _previousTaxFee = _taxFee; uint256 public _developmentFee = 10; uint256 private _previousDevelopmentFee = _developmentFee; uint256 public _liquidityFee = 50; uint256 private _previousLiquidityFee = _liquidityFee; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxTxAmount = 3500000 * 10**18; uint256 private numTokensSellToAddToLiquidity = 3500000 * 10**18; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); 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( 0xA102072A4C07F06EC3B4900FDC4C7B80b6c57429 ); // Create a quickswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address( this ), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true ; _isExcludedFromFee[address( this )] = true ; emit Transfer(address( 0 ), _msgSender(), _tTotal); } function name ( ) public view returns ( string memory ) { return _name; } function symbol ( ) public view returns ( string memory ) { return _symbol; } function decimals ( ) public view returns ( uint8 ) { return _decimals; } function totalSupply ( ) public view override returns ( uint256 ) { return _tTotal; } function balanceOf ( address account ) public view override returns ( uint256 ) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer ( address recipient, uint256 amount ) public override returns ( bool ) { _transfer(_msgSender(), recipient, amount); return true ; } function allowance ( address owner, address spender ) public view override returns ( uint256 ) { return _allowances[owner][spender]; } function approve ( address spender, uint256 amount ) public override returns ( bool ) { _approve(_msgSender(), spender, amount); return true ; } function transferFrom ( address sender, address recipient, uint256 amount ) public override returns ( bool ) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance" )); return true ; } function increaseAllowance ( address spender, uint256 addedValue ) public virtual returns ( bool ) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true ; } function decreaseAllowance ( address spender, uint256 subtractedValue ) public virtual returns ( bool ) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero" )); return true ; } function isExcludedFromReward ( address account ) public view returns ( bool ) { return _isExcluded[account]; } function totalFees ( ) public view returns ( uint256 ) { return _tFeeTotal; } function deliver ( uint256 tAmount ) public { address sender = _msgSender(); require (!_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken ( uint256 tAmount, bool deductTransferFee ) public view returns ( uint256 ) { require (tAmount <= _tTotal, "Amount must be less than supply" ); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection ( uint256 rAmount ) public view returns ( uint256 ) { require (rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward ( address account ) public onlyOwner ( ) { // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); 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 _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 excludeFromFee ( address account ) public onlyOwner { _isExcludedFromFee[account] = true ; } function includeInFee ( address account ) public onlyOwner { _isExcludedFromFee[account] = false ; } function setTaxFeePercent ( uint256 taxFee ) external onlyOwner ( ) { _taxFee = taxFee; } function setLiquidityFeePercent ( uint256 liquidityFee ) external onlyOwner ( ) { _liquidityFee = liquidityFee; } function setMaxTxPercent ( uint256 maxTxPercent ) external onlyOwner ( ) { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10 ** 2 ); } function setSwapAndLiquifyEnabled ( bool _enabled ) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _reflectFee ( uint256 rFee, uint256 tFee ) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues ( uint256 tAmount ) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues ( uint256 tAmount ) private view returns ( uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues ( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate ( ) private view returns ( uint256 ) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply ( ) private view returns ( uint256, uint256 ) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0 ; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity ( uint256 tLiquidity ) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address( this )] = _rOwned[address( this )].add(rLiquidity); if (_isExcluded[address( this )]) _tOwned[address( this )] = _tOwned[address( this )].add(tLiquidity); } function calculateTaxFee ( uint256 _amount ) private view returns ( uint256 ) { return _amount.mul(_taxFee).div( 10 ** 2 ); } function calculateLiquidityFee ( uint256 _amount ) private view returns ( uint256 ) { return _amount.mul(_liquidityFee).div( 10 ** 2 ); } function removeAllFee ( ) private { if (_taxFee == 0 && _liquidityFee == 0 ) return ; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0 ; _liquidityFee = 0 ; } function restoreAllFee ( ) private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee ( address account ) public view returns ( bool ) { return _isExcludedFromFee[account]; } function _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 )); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; //add liquidity swapAndLiquify(contractTokenBalance); } //indicates if fee should be deducted from transfer bool takeFee = true ; //if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFee[ from ] || _isExcludedFromFee[to]){ takeFee = false ; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer( from ,to,amount,takeFee); } function swapAndLiquify ( uint256 contractTokenBalance ) private lockTheSwap { // split the contract balance into halves uint256 half = contractTokenBalance.div( 2 ); uint256 otherHalf = contractTokenBalance.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address( this ).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address( this ).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } 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 ), block.timestamp ); } function addLiquidity ( uint256 tokenAmount, uint256 ethAmount ) private { // approve token transfer to cover all possible scenarios _approve(address( this ), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{ value : ethAmount}( address( this ), tokenAmount, 0 , // slippage is unavoidable 0 , // slippage is unavoidable owner(), block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer ( address sender, address recipient, uint256 amount,bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard ( address sender, address recipient, uint256 tAmount ) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded ( address sender, address recipient, uint256 tAmount ) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded ( address sender, address recipient, uint256 tAmount ) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"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"},{"inputs":[],"name":"_developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600780546001600160a01b031916732b18e66bb3af95a20acbaebb244cb23683485aeb1790556a52b7d2dcc80cd2e4000000600881905562000049906000196200051c565b6200005790600019620004bb565b60099081556040805180820190915281815268506f6c79204361747360b81b60209091019081526200008d91600b9190620003e5565b50604080518082019091526004808252634341545360e01b6020909201918252620000bb91600c91620003e5565b50600d805460ff191660129081179091556028600e819055600f55600a60108190556011556032908190556013556014805461ff0019166101001790556a02e5276153cd3fb380000060158190556016553480156200011957600080fd5b50600080546001600160a01b03191673354a7ec7d2c8b1cbe63e64c0c161acf2d1ea4ae490811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36009543360009081526001602090815260409182902092909255805163c45a015560e01b8152905173a102072a4c07f06ec3b4900fdc4c7b80b6c5742992839263c45a01559260048083019392829003018186803b158015620001cf57600080fd5b505afa158015620001e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020a91906200048b565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025357600080fd5b505afa15801562000268573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028e91906200048b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d757600080fd5b505af1158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031291906200048b565b6001600160601b0319606091821b811660a0529082901b16608052600160046000620003466000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260049092529020805490911660011790556200038e3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620003d691815260200190565b60405180910390a3506200053d565b828054620003f390620004df565b90600052602060002090601f01602090048101928262000417576000855562000462565b82601f106200043257805160ff191683800117855562000462565b8280016001018555821562000462579182015b828111156200046257825182559160200191906001019062000445565b506200047092915062000474565b5090565b5b8082111562000470576000815560010162000475565b6000602082840312156200049d578081fd5b81516001600160a01b0381168114620004b4578182fd5b9392505050565b600082821015620004da57634e487b7160e01b81526011600452602481fd5b500390565b600181811c90821680620004f457607f821691505b602082108114156200051657634e487b7160e01b600052602260045260246000fd5b50919050565b6000826200053857634e487b7160e01b81526012600452602481fd5b500690565b60805160601c60a05160601c6124db620005936000396000818161043b01526114740152600081816102c201528181611ac801528181611b9e01528181611bda01528181611c4c0152611c7301526124db6000f3fe6080604052600436106102085760003560e01c806352390c021161011857806395d89b41116100a0578063d14751851161006f578063d147518514610622578063d543dbeb14610638578063dd62ed3e14610658578063ea2f0b371461069e578063f2fde38b146106be57600080fd5b806395d89b41146105ad578063a457c2d7146105c2578063a9059cbb146105e2578063c49b9a801461060257600080fd5b8063715018a6116100e7578063715018a61461050b5780637d1db4a51461052057806388f82020146105365780638da5cb5b1461056f5780638ee88c531461058d57600080fd5b806352390c021461047c5780635342acb41461049c5780636bc87c3a146104d557806370a08231146104eb57600080fd5b8063313ce5671161019b5780633bd5d1731161016a5780633bd5d173146103c9578063437823ec146103e95780634549b0391461040957806349bd5a5e146104295780634a74bb021461045d57600080fd5b8063313ce567146103515780633685d4191461037357806339509351146103935780633b124fe7146103b357600080fd5b80631694505e116101d75780631694505e146102b057806318160ddd146102fc57806323b872dd146103115780632d8381191461033157600080fd5b8063061c82d01461021457806306fdde0314610236578063095ea7b31461026157806313114a9d1461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061023461022f3660046121fe565b6106de565b005b34801561024257600080fd5b5061024b610716565b604051610258919061226e565b60405180910390f35b34801561026d57600080fd5b5061028161027c3660046121b9565b6107a8565b6040519015158152602001610258565b34801561029d57600080fd5b50600a545b604051908152602001610258565b3480156102bc57600080fd5b506102e47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610258565b34801561030857600080fd5b506008546102a2565b34801561031d57600080fd5b5061028161032c366004612179565b6107bf565b34801561033d57600080fd5b506102a261034c3660046121fe565b610828565b34801561035d57600080fd5b50600d5460405160ff9091168152602001610258565b34801561037f57600080fd5b5061023461038e366004612109565b6108ac565b34801561039f57600080fd5b506102816103ae3660046121b9565b610a9b565b3480156103bf57600080fd5b506102a2600e5481565b3480156103d557600080fd5b506102346103e43660046121fe565b610ad1565b3480156103f557600080fd5b50610234610404366004612109565b610bbb565b34801561041557600080fd5b506102a2610424366004612216565b610c09565b34801561043557600080fd5b506102e47f000000000000000000000000000000000000000000000000000000000000000081565b34801561046957600080fd5b5060145461028190610100900460ff1681565b34801561048857600080fd5b50610234610497366004612109565b610c96565b3480156104a857600080fd5b506102816104b7366004612109565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156104e157600080fd5b506102a260125481565b3480156104f757600080fd5b506102a2610506366004612109565b610de9565b34801561051757600080fd5b50610234610e48565b34801561052c57600080fd5b506102a260155481565b34801561054257600080fd5b50610281610551366004612109565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561057b57600080fd5b506000546001600160a01b03166102e4565b34801561059957600080fd5b506102346105a83660046121fe565b610ebc565b3480156105b957600080fd5b5061024b610eeb565b3480156105ce57600080fd5b506102816105dd3660046121b9565b610efa565b3480156105ee57600080fd5b506102816105fd3660046121b9565b610f49565b34801561060e57600080fd5b5061023461061d3660046121e4565b610f56565b34801561062e57600080fd5b506102a260105481565b34801561064457600080fd5b506102346106533660046121fe565b610fd4565b34801561066457600080fd5b506102a2610673366004612141565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156106aa57600080fd5b506102346106b9366004612109565b611024565b3480156106ca57600080fd5b506102346106d9366004612109565b61106f565b6000546001600160a01b031633146107115760405162461bcd60e51b8152600401610708906122c1565b60405180910390fd5b600e55565b6060600b8054610725906123d4565b80601f0160208091040260200160405190810160405280929190818152602001828054610751906123d4565b801561079e5780601f106107735761010080835404028352916020019161079e565b820191906000526020600020905b81548152906001019060200180831161078157829003601f168201915b5050505050905090565b60006107b5338484611159565b5060015b92915050565b60006107cc84848461127d565b61081e843361081985604051806060016040528060288152602001612459602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061152e565b611159565b5060019392505050565b600060095482111561088f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610708565b600061089961155a565b90506108a5838261157d565b9392505050565b6000546001600160a01b031633146108d65760405162461bcd60e51b8152600401610708906122c1565b6001600160a01b03811660009081526005602052604090205460ff1661093e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610708565b60005b600654811015610a9757816001600160a01b03166006828154811061097657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610a8557600680546109a1906001906123bd565b815481106109bf57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600680546001600160a01b0390921691839081106109f957634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556006805480610a5f57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610a8f8161240f565b915050610941565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107b59185906108199086611589565b3360008181526005602052604090205460ff1615610b465760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610708565b6000610b5183611595565b505050506001600160a01b038416600090815260016020526040902054919250610b7d919050826115e4565b6001600160a01b038316600090815260016020526040902055600954610ba390826115e4565b600955600a54610bb39084611589565b600a55505050565b6000546001600160a01b03163314610be55760405162461bcd60e51b8152600401610708906122c1565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600854831115610c5d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610708565b81610c7c576000610c6d84611595565b509395506107b9945050505050565b6000610c8784611595565b509295506107b9945050505050565b6000546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610708906122c1565b6001600160a01b03811660009081526005602052604090205460ff1615610d295760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610708565b6001600160a01b03811660009081526001602052604090205415610d83576001600160a01b038116600090815260016020526040902054610d6990610828565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff1615610e2657506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546107b990610828565b6000546001600160a01b03163314610e725760405162461bcd60e51b8152600401610708906122c1565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610ee65760405162461bcd60e51b8152600401610708906122c1565b601255565b6060600c8054610725906123d4565b60006107b5338461081985604051806060016040528060258152602001612481602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061152e565b60006107b533848461127d565b6000546001600160a01b03163314610f805760405162461bcd60e51b8152600401610708906122c1565b601480548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610fc990831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610ffe5760405162461bcd60e51b8152600401610708906122c1565b61101e6064611018836008546115f090919063ffffffff16565b9061157d565b60155550565b6000546001600160a01b0316331461104e5760405162461bcd60e51b8152600401610708906122c1565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146110995760405162461bcd60e51b8152600401610708906122c1565b6001600160a01b0381166110fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111bb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610708565b6001600160a01b03821661121c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610708565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610708565b6001600160a01b0382166113435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610708565b600081116113a55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610708565b6000546001600160a01b038481169116148015906113d157506000546001600160a01b03838116911614155b15611439576015548111156114395760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610708565b600061144430610de9565b9050601554811061145457506015545b6016548110801590819061146b575060145460ff16155b80156114a957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156114bc5750601454610100900460ff165b156114cf5760165491506114cf826115fc565b6001600160a01b03851660009081526004602052604090205460019060ff168061151157506001600160a01b03851660009081526004602052604090205460ff165b1561151a575060005b6115268686868461169a565b505050505050565b600081848411156115525760405162461bcd60e51b8152600401610708919061226e565b505050900390565b6000806000611567611817565b9092509050611576828261157d565b9250505090565b60006108a5828461237e565b60006108a58284612366565b60008060008060008060008060006115ac8a6119d1565b92509250925060008060006115ca8d86866115c561155a565b611a13565b919f909e50909c50959a5093985091965092945050505050565b60006108a582846123bd565b60006108a5828461239e565b6014805460ff19166001179055600061161682600261157d565b9050600061162483836115e4565b90504761163083611a63565b600061163c47836115e4565b90506116488382611c46565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506014805460ff19169055505050565b806116a7576116a7611d5b565b6001600160a01b03841660009081526005602052604090205460ff1680156116e857506001600160a01b03831660009081526005602052604090205460ff16155b156116fd576116f8848484611d89565b6117fb565b6001600160a01b03841660009081526005602052604090205460ff1615801561173e57506001600160a01b03831660009081526005602052604090205460ff165b1561174e576116f8848484611eaf565b6001600160a01b03841660009081526005602052604090205460ff1615801561179057506001600160a01b03831660009081526005602052604090205460ff16155b156117a0576116f8848484611f58565b6001600160a01b03841660009081526005602052604090205460ff1680156117e057506001600160a01b03831660009081526005602052604090205460ff165b156117f0576116f8848484611f9c565b6117fb848484611f58565b8061181157611811600f54600e55601354601255565b50505050565b6009546008546000918291825b6006548110156119a15782600160006006848154811061185457634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806118cd57508160026000600684815481106118a657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156118e357600954600854945094505050509091565b611937600160006006848154811061190b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906115e4565b925061198d600260006006848154811061196157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906115e4565b9150806119998161240f565b915050611824565b506008546009546119b19161157d565b8210156119c8576009546008549350935050509091565b90939092509050565b6000806000806119e08561200f565b905060006119ed8661202b565b90506000611a05826119ff89866115e4565b906115e4565b979296509094509092505050565b6000808080611a2288866115f0565b90506000611a3088876115f0565b90506000611a3e88886115f0565b90506000611a50826119ff86866115e4565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611aa657634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1f57600080fd5b505afa158015611b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b579190612125565b81600181518110611b7857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050611bc3307f000000000000000000000000000000000000000000000000000000000000000084611159565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c189085906000908690309042906004016122f6565b600060405180830381600087803b158015611c3257600080fd5b505af1158015611526573d6000803e3d6000fd5b611c71307f000000000000000000000000000000000000000000000000000000000000000084611159565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611cb86000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d549190612241565b5050505050565b600e54158015611d6b5750601254155b15611d7257565b600e8054600f556012805460135560009182905555565b600080600080600080611d9b87611595565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611dcd90886115e4565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611dfc90876115e4565b6001600160a01b03808b1660009081526001602052604080822093909355908a1681522054611e2b9086611589565b6001600160a01b038916600090815260016020526040902055611e4d81612047565b611e5784836120d0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e9c91815260200190565b60405180910390a3505050505050505050565b600080600080600080611ec187611595565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611ef390876115e4565b6001600160a01b03808b16600090815260016020908152604080832094909455918b16815260029091522054611f299084611589565b6001600160a01b038916600090815260026020908152604080832093909355600190522054611e2b9086611589565b600080600080600080611f6a87611595565b6001600160a01b038f16600090815260016020526040902054959b50939950919750955093509150611dfc90876115e4565b600080600080600080611fae87611595565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611fe090886115e4565b6001600160a01b038a16600090815260026020908152604080832093909355600190522054611ef390876115e4565b60006107b96064611018600e54856115f090919063ffffffff16565b60006107b96064611018601254856115f090919063ffffffff16565b600061205161155a565b9050600061205f83836115f0565b3060009081526001602052604090205490915061207c9082611589565b3060009081526001602090815260408083209390935560059052205460ff16156120cb57306000908152600260205260409020546120ba9084611589565b306000908152600260205260409020555b505050565b6009546120dd90836115e4565b600955600a546120ed9082611589565b600a555050565b8035801515811461210457600080fd5b919050565b60006020828403121561211a578081fd5b81356108a581612440565b600060208284031215612136578081fd5b81516108a581612440565b60008060408385031215612153578081fd5b823561215e81612440565b9150602083013561216e81612440565b809150509250929050565b60008060006060848603121561218d578081fd5b833561219881612440565b925060208401356121a881612440565b929592945050506040919091013590565b600080604083850312156121cb578182fd5b82356121d681612440565b946020939093013593505050565b6000602082840312156121f5578081fd5b6108a5826120f4565b60006020828403121561220f578081fd5b5035919050565b60008060408385031215612228578182fd5b82359150612238602084016120f4565b90509250929050565b600080600060608486031215612255578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561229a5785810183015185820160400152820161227e565b818111156122ab5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156123455784516001600160a01b031683529383019391830191600101612320565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156123795761237961242a565b500190565b60008261239957634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156123b8576123b861242a565b500290565b6000828210156123cf576123cf61242a565b500390565b600181811c908216806123e857607f821691505b6020821081141561240957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124235761242361242a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461245557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220257065200054aebf6a45d98078ef7a684ba9c68053c8ba066c0fe7f0479b367864736f6c63430008040033
Deployed ByteCode Sourcemap
15535:19802:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23899:120;;;;;;;;;;-1:-1:-1;23899:120:0;;;;;:::i;:::-;;:::i;:::-;;18076:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19236:197;;;;;;;;;;-1:-1:-1;19236:197:0;;;;;:::i;:::-;;:::i;:::-;;;3870:14:1;;3863:22;3845:41;;3833:2;3818:18;19236:197:0;3800:92:1;20547:117:0;;;;;;;;;;-1:-1:-1;20646:10:0;;20547:117;;;9631:25:1;;;9619:2;9604:18;20547:117:0;9586:76:1;16667:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3049:32:1;;;3031:51;;3019:2;3004:18;16667:51:0;2986:102:1;18447:129:0;;;;;;;;;;-1:-1:-1;18561:7:0;;18447:129;;19443:353;;;;;;;;;;-1:-1:-1;19443:353:0;;;;;:::i;:::-;;:::i;21579:293::-;;;;;;;;;;-1:-1:-1;21579:293:0;;;;;:::i;:::-;;:::i;18324:113::-;;;;;;;;;;-1:-1:-1;18420:9:0;;18324:113;;18420:9;;;;11121:36:1;;11109:2;11094:18;18324:113:0;11076:87:1;22383:537:0;;;;;;;;;;-1:-1:-1;22383:537:0;;;;;:::i;:::-;;:::i;19806:254::-;;;;;;;;;;-1:-1:-1;19806:254:0;;;;;:::i;:::-;;:::i;16377:27::-;;;;;;;;;;;;;;;;20672:401;;;;;;;;;;-1:-1:-1;20672:401:0;;;;;:::i;:::-;;:::i;23608:135::-;;;;;;;;;;-1:-1:-1;23608:135:0;;;;;:::i;:::-;;:::i;21083:488::-;;;;;;;;;;-1:-1:-1;21083:488:0;;;;;:::i;:::-;;:::i;16725:38::-;;;;;;;;;;;;;;;16798:40;;;;;;;;;;-1:-1:-1;16798:40:0;;;;;;;;;;;21882:493;;;;;;;;;;-1:-1:-1;21882:493:0;;;;;:::i;:::-;;:::i;28233:155::-;;;;;;;;;;-1:-1:-1;28233:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;28353:27:0;28321:4;28353:27;;;:18;:27;;;;;;;;;28233:155;16565:33;;;;;;;;;;;;;;;;18584:242;;;;;;;;;;-1:-1:-1;18584:242:0;;;;;:::i;:::-;;:::i;7197:148::-;;;;;;;;;;;;;:::i;16845:46::-;;;;;;;;;;;;;;;;20387:152;;;;;;;;;;-1:-1:-1;20387:152:0;;;;;:::i;:::-;-1:-1:-1;;;;;20511:20:0;20479:4;20511:20;;;:11;:20;;;;;;;;;20387:152;6978:87;;;;;;;;;;-1:-1:-1;7024:7:0;7051:6;-1:-1:-1;;;;;7051:6:0;6978:87;;24027:144;;;;;;;;;;-1:-1:-1;24027:144:0;;;;;:::i;:::-;;:::i;18199:117::-;;;;;;;;;;;;;:::i;20070:309::-;;;;;;;;;;-1:-1:-1;20070:309:0;;;;;:::i;:::-;;:::i;18834:203::-;;;;;;;;;;-1:-1:-1;18834:203:0;;;;;:::i;:::-;;:::i;24381:191::-;;;;;;;;;;-1:-1:-1;24381:191:0;;;;;:::i;:::-;;:::i;16459:35::-;;;;;;;;;;;;;;;;24179:192;;;;;;;;;;-1:-1:-1;24179:192:0;;;;;:::i;:::-;;:::i;19047:179::-;;;;;;;;;;-1:-1:-1;19047:179:0;;;;;:::i;:::-;-1:-1:-1;;;;;19191:18:0;;;19156:7;19191:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19047:179;23751:134;;;;;;;;;;-1:-1:-1;23751:134:0;;;;;:::i;:::-;;:::i;7351:244::-;;;;;;;;;;-1:-1:-1;7351:244:0;;;;;:::i;:::-;;:::i;23899:120::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;;;;;;;;;23995:7:::1;:16:::0;23899:120::o;18076:113::-;18135:13;18176:5;18167:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:113;:::o;19236:197::-;19335:4;19356:39;3243:10;19379:7;19388:6;19356:8;:39::i;:::-;-1:-1:-1;19419:4:0;19236:197;;;;;:::o;19443:353::-;19565:4;19586:36;19596:6;19604:9;19615:6;19586:9;:36::i;:::-;19633:125;19642:6;3243:10;19664:93;19702:6;19664:93;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19664:19:0;;;;;;:11;:19;;;;;;;;3243:10;19664:33;;;;;;;;;;:37;:93::i;:::-;19633:8;:125::i;:::-;-1:-1:-1;19782:4:0;19443:353;;;;;:::o;21579:293::-;21669:7;21716;;21705;:18;;21695:79;;;;-1:-1:-1;;;21695:79:0;;5346:2:1;21695:79:0;;;5328:21:1;5385:2;5365:18;;;5358:30;5424:34;5404:18;;;5397:62;-1:-1:-1;;;5475:18:1;;;5468:40;5525:19;;21695:79:0;5318:232:1;21695:79:0;21785:19;21808:10;:8;:10::i;:::-;21785:33;-1:-1:-1;21840:24:0;:7;21785:33;21840:11;:24::i;:::-;21831:33;21579:293;-1:-1:-1;;;21579:293:0:o;22383:537::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22491:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22481:66;;;::::0;-1:-1:-1;;;22481:66:0;;6567:2:1;22481:66:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;22481:66:0::1;6539:177:1::0;22481:66:0::1;22567:9;22560:353;22590:9;:16:::0;22586:20;::::1;22560:353;;;22652:7;-1:-1:-1::0;;;;;22636:23:0::1;:9;22646:1;22636:12;;;;;;-1:-1:-1::0;;;22636:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;22636:12:0::1;:23;22630:272;;;22695:9;22705:16:::0;;:22:::1;::::0;22726:1:::1;::::0;22705:22:::1;:::i;:::-;22695:35;;;;;;-1:-1:-1::0;;;22695:35:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;22680:9:::1;:12:::0;;-1:-1:-1;;;;;22695:35:0;;::::1;::::0;22690:1;;22680:12;::::1;;;-1:-1:-1::0;;;22680:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:50:::0;;-1:-1:-1;;;;;;22680:50:0::1;-1:-1:-1::0;;;;;22680:50:0;;::::1;;::::0;;22749:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:22;;;22792:11:::1;:20:::0;;;;:30;;-1:-1:-1;;22792:30:0::1;::::0;;22843:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;22843:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;22843:15:0;;;;;-1:-1:-1;;;;;;22843:15:0::1;::::0;;;;;22560:353:::1;22383:537:::0;:::o;22630:272::-:1;22608:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22560:353;;;;22383:537:::0;:::o;19806:254::-;3243:10;19918:4;19971:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19971:34:0;;;;;;;;;;19918:4;;19939:83;;19962:7;;19971:50;;20010:10;19971:38;:50::i;20672:401::-;3243:10;20740:14;20793:19;;;:11;:19;;;;;;;;20792:20;20782:83;;;;-1:-1:-1;;;20782:83:0;;9274:2:1;20782:83:0;;;9256:21:1;9313:2;9293:18;;;9286:30;9352:34;9332:18;;;9325:62;-1:-1:-1;;;9403:18:1;;;9396:42;9455:19;;20782:83:0;9246:234:1;20782:83:0;20877:15;20901:19;20912:7;20901:10;:19::i;:::-;-1:-1:-1;;;;;;;;;20949:15:0;;;;;;:7;:15;;;;;;20876:44;;-1:-1:-1;20949:28:0;;:15;-1:-1:-1;20876:44:0;20949:19;:28::i;:::-;-1:-1:-1;;;;;20931:15:0;;;;;;:7;:15;;;;;:46;20998:7;;:20;;21010:7;20998:11;:20::i;:::-;20988:7;:30;21042:10;;:23;;21057:7;21042:14;:23::i;:::-;21029:10;:36;-1:-1:-1;;;20672:401:0:o;23608:135::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23697:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:36;;-1:-1:-1;;23697:36:0::1;23729:4;23697:36;::::0;;23608:135::o;21083:488::-;21197:7;21244;;21233;:18;;21223:68;;;;-1:-1:-1;;;21223:68:0;;6923:2:1;21223:68:0;;;6905:21:1;6962:2;6942:18;;;6935:30;7001:33;6981:18;;;6974:61;7052:18;;21223:68:0;6895:181:1;21223:68:0;21311:17;21304:260;;21346:15;21370:19;21381:7;21370:10;:19::i;:::-;-1:-1:-1;21345:44:0;;-1:-1:-1;21406:16:0;;-1:-1:-1;;;;;21406:16:0;21304:260;21461:23;21492:19;21503:7;21492:10;:19::i;:::-;-1:-1:-1;21459:52:0;;-1:-1:-1;21528:24:0;;-1:-1:-1;;;;;21528:24:0;21882:493;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22109:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22108:21;22098:67;;;::::0;-1:-1:-1;;;22098:67:0;;6567:2:1;22098:67:0::1;::::0;::::1;6549:21:1::0;6606:2;6586:18;;;6579:30;6645:29;6625:18;;;6618:57;6692:18;;22098:67:0::1;6539:177:1::0;22098:67:0::1;-1:-1:-1::0;;;;;22183:16:0;::::1;22204:1;22183:16:::0;;;:7:::1;:16;::::0;;;;;:22;22178:114:::1;;-1:-1:-1::0;;;;;22263:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22243:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22224:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22178:114:::1;-1:-1:-1::0;;;;;22302:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:29;;-1:-1:-1;;22302:29:0::1;22327:4;22302:29:::0;;::::1;::::0;;;22344:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22344:23:0::1;::::0;;::::1;::::0;;21882:493::o;18584:242::-;-1:-1:-1;;;;;18710:20:0;;18678:7;18710:20;;;:11;:20;;;;;;;;18704:55;;;-1:-1:-1;;;;;;18743:16:0;;;;;:7;:16;;;;;;;18584:242::o;18704:55::-;-1:-1:-1;;;;;18801:16:0;;;;;;:7;:16;;;;;;18781:37;;:19;:37::i;7197:148::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;7304:1:::1;7288:6:::0;;7267:40:::1;::::0;-1:-1:-1;;;;;7288:6:0;;::::1;::::0;7267:40:::1;::::0;7304:1;;7267:40:::1;7335:1;7318:19:::0;;-1:-1:-1;;;;;;7318:19:0::1;::::0;;7197:148::o;24027:144::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;24135:13:::1;:28:::0;24027:144::o;18199:117::-;18260:13;18301:7;18292:16;;;;;:::i;20070:309::-;20187:4;20208:133;3243:10;20231:7;20240:100;20279:15;20240:100;;;;;;;;;;;;;;;;;3243:10;20240:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20240:34:0;;;;;;;;;;;;:38;:100::i;18834:203::-;18936:4;18957:42;3243:10;18981:9;18992:6;18957:9;:42::i;24381:191::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;24478:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;24478:32:0;;::::1;;::::0;;24526:38:::1;::::0;::::1;::::0;::::1;::::0;24502:8;3870:14:1;3863:22;3845:41;;3833:2;3818:18;;3800:92;24526:38:0::1;;;;;;;;24381:191:::0;:::o;24179:192::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;24295::::1;24341:9;24295:25;24307:12;24295:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:68::i;:::-;24280:12;:83:::0;-1:-1:-1;24179:192:0:o;23751:134::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23838:27:0::1;23870:5;23838:27:::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;23838:37:0::1;::::0;;23751:134::o;7351:244::-;7024:7;7051:6;-1:-1:-1;;;;;7051:6:0;3243:10;7111:23;7103:68;;;;-1:-1:-1;;;7103:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7440:22:0;::::1;7432:73;;;::::0;-1:-1:-1;;;7432:73:0;;5757:2:1;7432:73:0::1;::::0;::::1;5739:21:1::0;5796:2;5776:18;;;5769:30;5835:34;5815:18;;;5808:62;-1:-1:-1;;;5886:18:1;;;5879:36;5932:19;;7432:73:0::1;5729:228:1::0;7432:73:0::1;7542:6;::::0;;7521:38:::1;::::0;-1:-1:-1;;;;;7521:38:0;;::::1;::::0;7542:6;::::1;::::0;7521:38:::1;::::0;::::1;7570:6;:17:::0;;-1:-1:-1;;;;;;7570:17:0::1;-1:-1:-1::0;;;;;7570:17:0;;;::::1;::::0;;;::::1;::::0;;7351:244::o;28396:375::-;-1:-1:-1;;;;;28509:23:0;;28499:78;;;;-1:-1:-1;;;28499:78:0;;8869:2:1;28499:78:0;;;8851:21:1;8908:2;8888:18;;;8881:30;8947:34;8927:18;;;8920:62;-1:-1:-1;;;8998:18:1;;;8991:34;9042:19;;28499:78:0;8841:226:1;28499:78:0;-1:-1:-1;;;;;28600:25:0;;28590:78;;;;-1:-1:-1;;;28590:78:0;;6164:2:1;28590:78:0;;;6146:21:1;6203:2;6183:18;;;6176:30;6242:34;6222:18;;;6215:62;-1:-1:-1;;;6293:18:1;;;6286:32;6335:19;;28590:78:0;6136:224:1;28590:78:0;-1:-1:-1;;;;;28679:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28731:32;;9631:25:1;;;28731:32:0;;9604:18:1;28731:32:0;;;;;;;28396:375;;;:::o;28779:1607::-;-1:-1:-1;;;;;28927:24:0;;28915:82;;;;-1:-1:-1;;;28915:82:0;;8463:2:1;28915:82:0;;;8445:21:1;8502:2;8482:18;;;8475:30;8541:34;8521:18;;;8514:62;-1:-1:-1;;;8592:18:1;;;8585:35;8637:19;;28915:82:0;8435:227:1;28915:82:0;-1:-1:-1;;;;;29020:20:0;;29010:74;;;;-1:-1:-1;;;29010:74:0;;4942:2:1;29010:74:0;;;4924:21:1;4981:2;4961:18;;;4954:30;5020:34;5000:18;;;4993:62;-1:-1:-1;;;5071:18:1;;;5064:33;5114:19;;29010:74:0;4914:225:1;29010:74:0;29118:1;29107:6;:12;29097:74;;;;-1:-1:-1;;;29097:74:0;;8053:2:1;29097:74:0;;;8035:21:1;8092:2;8072:18;;;8065:30;8131:34;8111:18;;;8104:62;-1:-1:-1;;;8182:18:1;;;8175:39;8231:19;;29097:74:0;8025:231:1;29097:74:0;7024:7;7051:6;-1:-1:-1;;;;;29191:17:0;;;7051:6;;29191:17;;;;:34;;-1:-1:-1;7024:7:0;7051:6;-1:-1:-1;;;;;29212:13:0;;;7051:6;;29212:13;;29191:34;29184:139;;;29262:12;;29252:6;:22;;29242:81;;;;-1:-1:-1;;;29242:81:0;;7283:2:1;29242:81:0;;;7265:21:1;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;-1:-1:-1;;;7412:18:1;;;7405:38;7460:19;;29242:81:0;7255:230:1;29242:81:0;29334:28;29365;29385:4;29365:9;:28::i;:::-;29334:59;;29435:12;;29411:20;:36;29406:114;;-1:-1:-1;29496:12:0;;29406:114;29581:29;;29557:53;;;;;;;29643;;-1:-1:-1;29680:16:0;;;;29679:17;29643:53;:95;;;;;29725:13;-1:-1:-1;;;;;29715:23:0;:4;-1:-1:-1;;;;;29715:23:0;;;29643:95;:133;;;;-1:-1:-1;29755:21:0;;;;;;;29643:133;29623:328;;;29826:29;;29803:52;;29903:36;29918:20;29903:14;:36::i;:::-;-1:-1:-1;;;;;30155:28:0;;30026:12;30155:28;;;:18;:28;;;;;;30043:4;;30155:28;;;:54;;-1:-1:-1;;;;;;30187:22:0;;;;;;:18;:22;;;;;;;;30155:54;30150:106;;;-1:-1:-1;30237:5:0;30150:106;30336:42;30353:4;30360:2;30363:6;30370:7;30336:14;:42::i;:::-;28779:1607;;;;;;:::o;2495:206::-;2581:7;2642:12;2634:6;;;;2626:29;;;;-1:-1:-1;;;2626:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2677:5:0;;;2495:206::o;26151:193::-;26214:7;26239:15;26256;26275:19;:17;:19::i;:::-;26238:56;;-1:-1:-1;26238:56:0;-1:-1:-1;26316:20:0;26238:56;;26316:11;:20::i;:::-;26307:29;;;;26151:193;:::o;2287:98::-;2345:7;2372:5;2376:1;2372;:5;:::i;1975:98::-;2033:7;2060:5;2064:1;2060;:5;:::i;24851:451::-;24934:7;24943;24952;24961;24970;24979;25004:23;25029:12;25043:18;25065:20;25077:7;25065:11;:20::i;:::-;25003:82;;;;;;25097:15;25114:23;25139:12;25155:50;25167:7;25176:4;25182:10;25194;:8;:10::i;:::-;25155:11;:50::i;:::-;25096:109;;;;-1:-1:-1;25096:109:0;;-1:-1:-1;25260:15:0;;-1:-1:-1;25277:4:0;;-1:-1:-1;25283:10:0;;-1:-1:-1;24851:451:0;;-1:-1:-1;;;;;24851:451:0:o;2079:98::-;2137:7;2164:5;2168:1;2164;:5;:::i;2183:98::-;2241:7;2268:5;2272:1;2268;:5;:::i;30394:1035::-;17257:16;:23;;-1:-1:-1;;17257:23:0;17276:4;17257:23;;;:16;30569:31:::1;:20:::0;30596:1:::1;30569:24;:31::i;:::-;30554:46:::0;-1:-1:-1;30611:17:0::1;30631:30;:20:::0;30554:46;30631:24:::1;:30::i;:::-;30611:50:::0;-1:-1:-1;30978:25:0::1;31050:22;31067:4:::0;31050:16:::1;:22::i;:::-;31209:18;31230:45;:25;31260:14:::0;31230:29:::1;:45::i;:::-;31209:66;;31327:35;31340:9;31351:10;31327:12;:35::i;:::-;31378:43;::::0;;10857:25:1;;;10913:2;10898:18;;10891:34;;;10941:18;;;10934:34;;;31378:43:0::1;::::0;10845:2:1;10830:18;31378:43:0::1;;;;;;;-1:-1:-1::0;;17303:16:0;:24;;-1:-1:-1;;17303:24:0;;;-1:-1:-1;;;30394:1035:0:o;32738:870::-;32869:7;32863:42;;32891:14;:12;:14::i;:::-;-1:-1:-1;;;;;32924:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;32948:22:0;;;;;;:11;:22;;;;;;;;32947:23;32924:46;32918:627;;;32987:48;33009:6;33017:9;33028:6;32987:21;:48::i;:::-;32918:627;;;-1:-1:-1;;;;;33066:19:0;;;;;;:11;:19;;;;;;;;33065:20;:46;;;;-1:-1:-1;;;;;;33089:22:0;;;;;;:11;:22;;;;;;;;33065:46;33059:486;;;33128:46;33148:6;33156:9;33167:6;33128:19;:46::i;33059:486::-;-1:-1:-1;;;;;33205:19:0;;;;;;:11;:19;;;;;;;;33204:20;:47;;;;-1:-1:-1;;;;;;33229:22:0;;;;;;:11;:22;;;;;;;;33228:23;33204:47;33198:347;;;33268:44;33286:6;33294:9;33305:6;33268:17;:44::i;33198:347::-;-1:-1:-1;;;;;33342:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;33365:22:0;;;;;;:11;:22;;;;;;;;33342:45;33336:209;;;33404:48;33426:6;33434:9;33445:6;33404:21;:48::i;33336:209::-;33489:44;33507:6;33515:9;33526:6;33489:17;:44::i;:::-;33563:7;33557:43;;33585:15;28154;;28144:7;:25;28196:21;;28180:13;:37;28086:139;33585:15;32738:870;;;;:::o;26354:615::-;26477:7;;26513;;26426;;;;;26539:303;26569:9;:16;26565:20;;26539:303;;;26639:7;26615;:21;26623:9;26633:1;26623:12;;;;;;-1:-1:-1;;;26623:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26623:12:0;26615:21;;;;;;;;;;;;;:31;;:66;;;26674:7;26650;:21;26658:9;26668:1;26658:12;;;;;;-1:-1:-1;;;26658:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26658:12:0;26650:21;;;;;;;;;;;;;:31;26615:66;26609:103;;;26695:7;;26704;;26685:27;;;;;;;26354:615;;:::o;26609:103::-;26737:34;26749:7;:21;26757:9;26767:1;26757:12;;;;;;-1:-1:-1;;;26757:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26757:12:0;26749:21;;;;;;;;;;;;;26737:7;;:11;:34::i;:::-;26727:44;;26796:34;26808:7;:21;26816:9;26826:1;26816:12;;;;;;-1:-1:-1;;;26816:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26816:12:0;26808:21;;;;;;;;;;;;;26796:7;;:11;:34::i;:::-;26786:44;-1:-1:-1;26587:3:0;;;;:::i;:::-;;;;26539:303;;;-1:-1:-1;26882:7:0;;26870;;:20;;:11;:20::i;:::-;26860:7;:30;26854:67;;;26904:7;;26913;;26894:27;;;;;;26354:615;;:::o;26854:67::-;26944:7;;26953;;-1:-1:-1;26354:615:0;-1:-1:-1;26354:615:0:o;25310:362::-;25394:7;25403;25412;25436:12;25451:24;25467:7;25451:15;:24::i;:::-;25436:39;;25486:18;25507:30;25529:7;25507:21;:30::i;:::-;25486:51;-1:-1:-1;25548:23:0;25574:33;25486:51;25574:17;:7;25586:4;25574:11;:17::i;:::-;:21;;:33::i;:::-;25548:59;25647:4;;-1:-1:-1;25653:10:0;;-1:-1:-1;25310:362:0;;-1:-1:-1;;;25310:362:0:o;25682:461::-;25821:7;;;;25881:24;:7;25893:11;25881;:24::i;:::-;25863:42;-1:-1:-1;25916:12:0;25931:21;:4;25940:11;25931:8;:21::i;:::-;25916:36;-1:-1:-1;25963:18:0;25984:27;:10;25999:11;25984:14;:27::i;:::-;25963:48;-1:-1:-1;26022:23:0;26048:33;25963:48;26048:17;:7;26060:4;26048:11;:17::i;:33::-;26104:7;;;;-1:-1:-1;26130:4:0;;-1:-1:-1;25682:461:0;;-1:-1:-1;;;;;;;25682:461:0:o;31437:645::-;31609:22;;;31627:1;31609:22;;;;;;;;31583:21;;31609:22;;;;;;;;;;-1:-1:-1;31609:22:0;31583:48;;31666:4;31642;31649:1;31642:11;;;;;;-1:-1:-1;;;31642:11:0;;;;;;;;;;;;;;:31;-1:-1:-1;;;;;31642:31:0;;;-1:-1:-1;;;;;31642:31:0;;;;;31698:15;-1:-1:-1;;;;;31698:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31684:4;31691:1;31684:11;;;;;;-1:-1:-1;;;31684:11:0;;;;;;;;;;;;;;:36;-1:-1:-1;;;;;31684:36:0;;;-1:-1:-1;;;;;31684:36:0;;;;;31731:66;31750:4;31767:15;31785:11;31731:8;:66::i;:::-;31838:236;;-1:-1:-1;;;31838:236:0;;-1:-1:-1;;;;;31838:15:0;:66;;;;:236;;31919:11;;31947:1;;31997:4;;32026;;32048:15;;31838:236;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32090:563;32258:66;32277:4;32294:15;32312:11;32258:8;:66::i;:::-;32369:15;-1:-1:-1;;;;;32369:31:0;;32412:9;32447:4;32469:11;32497:1;32548;32597:7;7024;7051:6;-1:-1:-1;;;;;7051:6:0;;6978:87;32597:7;32369:276;;;;;;-1:-1:-1;;;;;;32369:276:0;;;-1:-1:-1;;;;;3452:15:1;;;32369:276:0;;;3434:34:1;3484:18;;;3477:34;;;;3527:18;;;3520:34;;;;3570:18;;;3563:34;3634:15;;;3613:19;;;3606:44;32619:15:0;3666:19:1;;;3659:35;3368:19;;32369:276:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32090:563;;:::o;27810:268::-;27874:7;;:14;:40;;;;-1:-1:-1;27894:13:0;;:20;27874:40;27869:60;;;27810:268::o;27869:60::-;27957:7;;;27939:15;:25;27999:13;;;27975:21;:37;-1:-1:-1;28023:13:0;;;;28049:19;27810:268::o;34752:582::-;34871:15;34888:23;34913:12;34927:23;34952:12;34966:18;34988:19;34999:7;34988:10;:19::i;:::-;-1:-1:-1;;;;;35036:15:0;;;;;;:7;:15;;;;;;34870:137;;-1:-1:-1;34870:137:0;;-1:-1:-1;34870:137:0;;-1:-1:-1;34870:137:0;-1:-1:-1;34870:137:0;-1:-1:-1;34870:137:0;-1:-1:-1;35036:28:0;;35056:7;35036:19;:28::i;:::-;-1:-1:-1;;;;;35018:15:0;;;;;;:7;:15;;;;;;;;:46;;;;35093:7;:15;;;;:28;;35113:7;35093:19;:28::i;:::-;-1:-1:-1;;;;;35075:15:0;;;;;;;:7;:15;;;;;;:46;;;;35153:18;;;;;;;:39;;35176:15;35153:22;:39::i;:::-;-1:-1:-1;;;;;35132:18:0;;;;;;:7;:18;;;;;:60;35206:26;35221:10;35206:14;:26::i;:::-;35243:23;35255:4;35261;35243:11;:23::i;:::-;35299:9;-1:-1:-1;;;;;35282:44:0;35291:6;-1:-1:-1;;;;;35282:44:0;;35310:15;35282:44;;;;9631:25:1;;9619:2;9604:18;;9586:76;35282:44:0;;;;;;;;34752:582;;;;;;;;;:::o;34142:602::-;34259:15;34276:23;34301:12;34315:23;34340:12;34354:18;34376:19;34387:7;34376:10;:19::i;:::-;-1:-1:-1;;;;;34424:15:0;;;;;;:7;:15;;;;;;34258:137;;-1:-1:-1;34258:137:0;;-1:-1:-1;34258:137:0;;-1:-1:-1;34258:137:0;-1:-1:-1;34258:137:0;-1:-1:-1;34258:137:0;-1:-1:-1;34424:28:0;;34258:137;34424:19;:28::i;:::-;-1:-1:-1;;;;;34406:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;34484:18;;;;;:7;:18;;;;;:39;;34507:15;34484:22;:39::i;:::-;-1:-1:-1;;;;;34463:18:0;;;;;;:7;:18;;;;;;;;:60;;;;34555:7;:18;;;;:39;;34578:15;34555:22;:39::i;33616:518::-;33731:15;33748:23;33773:12;33787:23;33812:12;33826:18;33848:19;33859:7;33848:10;:19::i;:::-;-1:-1:-1;;;;;33896:15:0;;;;;;:7;:15;;;;;;33730:137;;-1:-1:-1;33730:137:0;;-1:-1:-1;33730:137:0;;-1:-1:-1;33730:137:0;-1:-1:-1;33730:137:0;-1:-1:-1;33730:137:0;-1:-1:-1;33896:28:0;;33730:137;33896:19;:28::i;22932:658::-;23051:15;23068:23;23093:12;23107:23;23132:12;23146:18;23168:19;23179:7;23168:10;:19::i;:::-;-1:-1:-1;;;;;23216:15:0;;;;;;:7;:15;;;;;;23050:137;;-1:-1:-1;23050:137:0;;-1:-1:-1;23050:137:0;;-1:-1:-1;23050:137:0;-1:-1:-1;23050:137:0;-1:-1:-1;23050:137:0;-1:-1:-1;23216:28:0;;23236:7;23216:19;:28::i;:::-;-1:-1:-1;;;;;23198:15:0;;;;;;:7;:15;;;;;;;;:46;;;;23273:7;:15;;;;:28;;23293:7;23273:19;:28::i;27392:194::-;27480:7;27515:63;27556:9;27515:20;27527:7;;27515;:11;;:20;;;;:::i;27596:206::-;27690:7;27725:69;27772:9;27725:26;27737:13;;27725:7;:11;;:26;;;;:::i;26983:395::-;27062:19;27085:10;:8;:10::i;:::-;27062:33;-1:-1:-1;27106:18:0;27127:27;:10;27062:33;27127:14;:27::i;:::-;27212:4;27194:26;;;;:7;:26;;;;;;27106:48;;-1:-1:-1;27194:42:0;;27106:48;27194:30;:42::i;:::-;27183:4;27165:26;;;;:7;:26;;;;;;;;:71;;;;27254:11;:30;;;;;;27249:121;;;27346:4;27328:26;;;;:7;:26;;;;;;:42;;27359:10;27328:30;:42::i;:::-;27317:4;27299:26;;;;:7;:26;;;;;:71;27249:121;26983:395;;;:::o;24678:163::-;24772:7;;:17;;24784:4;24772:11;:17::i;:::-;24762:7;:27;24813:10;;:20;;24828:4;24813:14;:20::i;:::-;24800:10;:33;-1:-1:-1;;24678:163:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1649:6;1657;1710:2;1698:9;1689:7;1685:23;1681:32;1678:2;;;1731:6;1723;1716:22;1678:2;1775:9;1762:23;1794:31;1819:5;1794:31;:::i;:::-;1844:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1668:238:1:o;1911:190::-;1967:6;2020:2;2008:9;1999:7;1995:23;1991:32;1988:2;;;2041:6;2033;2026:22;1988:2;2069:26;2085:9;2069:26;:::i;2106:190::-;2165:6;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;2239:6;2231;2224:22;2186:2;-1:-1:-1;2267:23:1;;2176:120;-1:-1:-1;2176:120:1:o;2301:258::-;2366:6;2374;2427:2;2415:9;2406:7;2402:23;2398:32;2395:2;;;2448:6;2440;2433:22;2395:2;2489:9;2476:23;2466:33;;2518:35;2549:2;2538:9;2534:18;2518:35;:::i;:::-;2508:45;;2385:174;;;;;:::o;2564:316::-;2652:6;2660;2668;2721:2;2709:9;2700:7;2696:23;2692:32;2689:2;;;2742:6;2734;2727:22;2689:2;2776:9;2770:16;2760:26;;2826:2;2815:9;2811:18;2805:25;2795:35;;2870:2;2859:9;2855:18;2849:25;2839:35;;2679:201;;;;;:::o;4132:603::-;4244:4;4273:2;4302;4291:9;4284:21;4334:6;4328:13;4377:6;4372:2;4361:9;4357:18;4350:34;4402:4;4415:140;4429:6;4426:1;4423:13;4415:140;;;4524:14;;;4520:23;;4514:30;4490:17;;;4509:2;4486:26;4479:66;4444:10;;4415:140;;;4573:6;4570:1;4567:13;4564:2;;;4643:4;4638:2;4629:6;4618:9;4614:22;4610:31;4603:45;4564:2;-1:-1:-1;4719:2:1;4698:15;-1:-1:-1;;4694:29:1;4679:45;;;;4726:2;4675:54;;4253:482;-1:-1:-1;;;4253:482:1:o;7490:356::-;7692:2;7674:21;;;7711:18;;;7704:30;7770:34;7765:2;7750:18;;7743:62;7837:2;7822:18;;7664:182::o;9667:983::-;9929:4;9977:3;9966:9;9962:19;10008:6;9997:9;9990:25;10034:2;10072:6;10067:2;10056:9;10052:18;10045:34;10115:3;10110:2;10099:9;10095:18;10088:31;10139:6;10174;10168:13;10205:6;10197;10190:22;10243:3;10232:9;10228:19;10221:26;;10282:2;10274:6;10270:15;10256:29;;10303:4;10316:195;10330:6;10327:1;10324:13;10316:195;;;10395:13;;-1:-1:-1;;;;;10391:39:1;10379:52;;10486:15;;;;10451:12;;;;10427:1;10345:9;10316:195;;;-1:-1:-1;;;;;;;10567:32:1;;;;10562:2;10547:18;;10540:60;-1:-1:-1;;;10631:3:1;10616:19;10609:35;10528:3;9938:712;-1:-1:-1;;;9938:712:1:o;11168:128::-;11208:3;11239:1;11235:6;11232:1;11229:13;11226:2;;;11245:18;;:::i;:::-;-1:-1:-1;11281:9:1;;11216:80::o;11301:217::-;11341:1;11367;11357:2;;-1:-1:-1;;;11392:31:1;;11446:4;11443:1;11436:15;11474:4;11399:1;11464:15;11357:2;-1:-1:-1;11503:9:1;;11347:171::o;11523:168::-;11563:7;11629:1;11625;11621:6;11617:14;11614:1;11611:21;11606:1;11599:9;11592:17;11588:45;11585:2;;;11636:18;;:::i;:::-;-1:-1:-1;11676:9:1;;11575:116::o;11696:125::-;11736:4;11764:1;11761;11758:8;11755:2;;;11769:18;;:::i;:::-;-1:-1:-1;11806:9:1;;11745:76::o;11826:380::-;11905:1;11901:12;;;;11948;;;11969:2;;12023:4;12015:6;12011:17;12001:27;;11969:2;12076;12068:6;12065:14;12045:18;12042:38;12039:2;;;12122:10;12117:3;12113:20;12110:1;12103:31;12157:4;12154:1;12147:15;12185:4;12182:1;12175:15;12039:2;;11881:325;;;:::o;12211:135::-;12250:3;-1:-1:-1;;12271:17:1;;12268:2;;;12291:18;;:::i;:::-;-1:-1:-1;12338:1:1;12327:13;;12258:88::o;12351:127::-;12412:10;12407:3;12403:20;12400:1;12393:31;12443:4;12440:1;12433:15;12467:4;12464:1;12457:15;12483:131;-1:-1:-1;;;;;12558:31:1;;12548:42;;12538:2;;12604:1;12601;12594:12;12538:2;12528:86;:::o
Swarm Source
ipfs://257065200054aebf6a45d98078ef7a684ba9c68053c8ba066c0fe7f0479b3678
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.