Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 AC
Holders
47
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
376,011.788832582673076422 ACValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ApeCapital
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-05 */ /* APECAPITAL apecapital.finance Telegram: https://t.me/ApecapitalERC Total Supply 1 billion 2% redistribution, 10% treasury and marketing */ pragma solidity ^0.8.0; pragma experimental ABIEncoderV2; // SPDX-License-Identifier:MIT 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 transFer(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) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{value: weiValue}( data ); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address payable private _owner; address payable private _previousOwner; uint256 private _lockTime; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = payable(msg.sender); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = payable(address(0)); } function transferOwnership(address payable newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = payable(address(0)); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require( _previousOwner == msg.sender, "You don't have permission to unlock" ); require( block.timestamp > _lockTime, "Contract is locked until defined days" ); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; _previousOwner = payable(address(0)); } } interface IPancakeFactory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IPancakePair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IPancakeRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Factory is IPancakeRouter01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } library Utils { using SafeMath for uint256; function swapTokensForEth(address routerAddress, uint256 tokenAmount) internal { IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress); // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniSwapRouter.WETH(); // make the swap uniSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of BNB path, address(this), block.timestamp + 360 ); } function swapETHForTokens( address routerAddress, address recipient, uint256 ethAmount ) internal { IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress); // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = uniSwapRouter.WETH(); path[1] = address(this); // make the swap uniSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: ethAmount }( 0, // accept any amount of BNB path, address(recipient), block.timestamp + 360 ); } function addLiquidity( address routerAddress, address owner, uint256 tokenAmount, uint256 ethAmount ) internal { IUniswapV2Factory uniSwapRouter = IUniswapV2Factory(routerAddress); // add the liquidity uniSwapRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner, block.timestamp + 360 ); } } abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } modifier isHuman() { require(tx.origin == msg.sender, "sorry humans only"); _; } } contract ApeCapital is Context, IERC20, Ownable, ReentrancyGuard { 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; mapping(address => bool) private _isExcludedFromMaxTx; mapping(address => bool) public _isSniper; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1 * 1e9 * 1e18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public _startingTimeOfbuy; // can be set only once uint256 public antiSnipingTime = 60 seconds; string private _name = "ApeCapital"; string private _symbol = "AC"; uint8 private _decimals = 18; IUniswapV2Factory public uniSwapRouter; address public immutable uniSwapPair; address payable public marketWallet; uint256 public _maxTxAmount = _tTotal.mul(50).div(100); // should be 1% percent per transaction uint256 minTokenNumberToSell = _tTotal.div(10000); // 0.00001% amount will trigger swap and add liquidity bool public swapAndLiquifyEnabled = false; // should be true to turn on to liquidate the pool bool public reflectionFeesdiabled = false; // should be false to charge fee bool inSwapAndLiquify = false; bool public _antiwhale = true; bool public _buyingOpen; //once switched on, can never be switched off. uint256 public _holderDistributionFee = 20; // 2% will be distributed among holder as token divideneds uint256 private _previousHolderDistributionFee = _holderDistributionFee; uint256 public _liquidityFee = 0; // 0% will be added to the liquidity pool uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketFee = 100; // 10% will go to the treasury wallet uint256 private _previousMarketFee = _marketFee; // uint256 public marketPercentage = 770; // uint256 public poolPercentage = 230; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event ClaimBNBSuccessfully( address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(address payable _marketWallet) { _rOwned[owner()] = _rTotal; marketWallet = _marketWallet; IUniswapV2Factory _uniSwapRouter = IUniswapV2Factory( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D //uinswap router // 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 //pancakeswap testnet router ); // Create a pancake pair for this new token uniSwapPair = IPancakeFactory(_uniSwapRouter.factory()).createPair( address(this), _uniSwapRouter.WETH() ); // set the rest of the contract variables uniSwapRouter = _uniSwapRouter; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; // exclude from max tx _isExcludedFromMaxTx[owner()] = true; _isExcludedFromMaxTx[address(this)] = true; emit Transfer(address(this), owner(), _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, "WE: 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, "WE: 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 = tAmount.mul(_getRate()); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function AntiWhale(bool value) external onlyOwner { _antiwhale = value; } function startBuying() external onlyOwner { require(!_buyingOpen, "WE: Already enabled"); _buyingOpen = true; _startingTimeOfbuy = block.timestamp; swapAndLiquifyEnabled = true; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { uint256 rAmount = tAmount.mul(_getRate()); return rAmount; } else { uint256 rAmount = tAmount.mul(_getRate()); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(_getRate()) ); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner { require(!_isExcluded[account], "Account is already excluded"); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _rOwned[account] = _tOwned[account].mul(_getRate()); _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function addSniperInList(address _account) external onlyOwner { require( _account != address(uniSwapRouter), "WE: We can not blacklist uniSwapRouter" ); require(!_isSniper[_account], "WE: sniper already exist"); _isSniper[_account] = true; } function removeSniperFromList(address _account) external onlyOwner { require(_isSniper[_account], "WE: Not a sniper"); _isSniper[_account] = false; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } // for 1% input 1 function setMaxTxPercent(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = _tTotal.mul(maxTxAmount).div(100); } function setMinTokenNumberToSell(uint256 _amount) public onlyOwner { minTokenNumberToSell = _amount; } function setExcludeFromMaxTx(address _address, bool value) public onlyOwner { _isExcludedFromMaxTx[_address] = value; } function setHolderDistributionFeePercent(uint256 holderFee) external onlyOwner { _holderDistributionFee = holderFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner { _liquidityFee = liquidityFee; } function setMarketFeePercent(uint256 marketFee) external onlyOwner { _marketFee = marketFee; } function setSwapAndLiquifyEnabled(bool _state) public onlyOwner { swapAndLiquifyEnabled = _state; emit SwapAndLiquifyEnabledUpdated(_state); } function setReflectionFees(bool _state) external onlyOwner { reflectionFeesdiabled = _state; } function setMarketAddress(address payable _marketAddress) external onlyOwner { marketWallet = _marketAddress; } function setPancakeRouter(IUniswapV2Factory _uniSwapRouter) external onlyOwner { uniSwapRouter = _uniSwapRouter; } function setTimeForSniping(uint256 _time) external onlyOwner { antiSnipingTime = _time; } //to receive BNB from uniSwapRouter when swapping receive() external payable {} function totalFeePerTx(uint256 tAmount) internal view returns (uint256) { uint256 percentage = tAmount .mul(_holderDistributionFee.add(_liquidityFee).add(_marketFee)) .div(1e3); return percentage; } function _reflectFee(uint256 tAmount) private { uint256 tFee = tAmount.mul(_holderDistributionFee).div(1e3); uint256 rFee = tFee.mul(_getRate()); _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } 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 _takeLiquidityPoolFee(uint256 tAmount, uint256 currentRate) internal { uint256 tPoolFee = tAmount.mul(_liquidityFee).div(1e3); uint256 rPoolFee = tPoolFee.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rPoolFee); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tPoolFee); emit Transfer(_msgSender(), address(this), tPoolFee); } function _takeMarketFee(uint256 tAmount, uint256 currentRate) internal { uint256 tMarketFee = tAmount.mul(_marketFee).div(1e3); uint256 rMarketFee = tMarketFee.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rMarketFee); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketFee); emit Transfer(_msgSender(), address(this), tMarketFee); } function removeAllFee() private { _previousHolderDistributionFee = _holderDistributionFee; _previousLiquidityFee = _liquidityFee; _previousMarketFee = _marketFee; _holderDistributionFee = 0; _liquidityFee = 0; _marketFee = 0; } function restoreAllFee() private { _holderDistributionFee = _previousHolderDistributionFee; _liquidityFee = _previousLiquidityFee; _marketFee = _previousMarketFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "WE: approve from the zero address"); require(spender != address(0), "WE: 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), "WE: transfer from the zero address"); require(to != address(0), "WE: transfer to the zero address"); require(amount > 0, "WE: Transfer amount must be greater than zero"); require(!_isSniper[to], "WE: Sniper detected"); require(!_isSniper[from], "WE: Sniper detected"); if ( _isExcludedFromMaxTx[from] == false && _isExcludedFromMaxTx[to] == false // by default false ) { require(amount <= _maxTxAmount, "amount exceed max limit"); if (!_antiwhale) { require(to != uniSwapPair, "WE: antiwhale is not enabled yet"); } if (!_buyingOpen) { require(from != uniSwapPair, "WE: Buying is not enabled yet"); } if ( block.timestamp < _startingTimeOfbuy + antiSnipingTime && from != address(uniSwapRouter) ) { if (from == uniSwapPair) { _isSniper[to] = true; } else if (to == uniSwapPair) { _isSniper[from] = true; } } } // swap and liquify swapAndLiquify(from, to); //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] || reflectionFeesdiabled ) { takeFee = false; } if (to != uniSwapPair && from != uniSwapPair) { takeFee = false; } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from, to, amount, takeFee); } //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]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidityPoolFee(tAmount, currentRate); _takeMarketFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidityPoolFee(tAmount, currentRate); _takeMarketFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidityPoolFee(tAmount, currentRate); _takeMarketFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { uint256 currentRate = _getRate(); uint256 tTransferAmount = tAmount.sub(totalFeePerTx(tAmount)); uint256 rAmount = tAmount.mul(currentRate); uint256 rTransferAmount = rAmount.sub( totalFeePerTx(tAmount).mul(currentRate) ); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidityPoolFee(tAmount, currentRate); _takeMarketFee(tAmount, currentRate); _reflectFee(tAmount); emit Transfer(sender, recipient, tTransferAmount); } function swapAndLiquify(address from, address to) private { // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap + liquidity lock? // also, don't get caught in a circular liquidity event. // also, don't swap & liquify if sender is pancake pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool shouldSell = contractTokenBalance >= minTokenNumberToSell; if ( !inSwapAndLiquify && shouldSell && from != uniSwapPair && swapAndLiquifyEnabled && !(from == address(this) && to == address(uniSwapPair)) // swap 1 time ) { contractTokenBalance = minTokenNumberToSell; uint256 totalPercent = _liquidityFee.add(_marketFee); uint256 lpPercent = (_liquidityFee).mul(1e4).div(totalPercent).div( 2 ); uint256 mPercent = _marketFee.mul(1e4).div(totalPercent); // approve contract _approve( address(this), address(uniSwapRouter), contractTokenBalance ); // add liquidity // split the contract balance into 2 pieces uint256 otherPiece = contractTokenBalance.mul(lpPercent).div(1e4); uint256 tokenAmountToBeSwapped = contractTokenBalance.sub( otherPiece ); Utils.swapTokensForEth( address(uniSwapRouter), tokenAmountToBeSwapped ); uint256 deltaBalance = address(this).balance; totalPercent = lpPercent.add(mPercent); uint256 EthToBeAddedToLiquidity = deltaBalance.mul(lpPercent).div( totalPercent ); // add liquidity to pancake Utils.addLiquidity( address(uniSwapRouter), owner(), otherPiece, EthToBeAddedToLiquidity ); marketWallet.transfer(deltaBalance.mul(mPercent).div(totalPercent)); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"_marketWallet","type":"address"}],"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimBNBSuccessfully","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"transFer","type":"event"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"AntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_antiwhale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_holderDistributionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketFee","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":"_startingTimeOfbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"addSniperInList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipingTime","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":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"removeSniperFromList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"holderFee","type":"uint256"}],"name":"setHolderDistributionFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_marketAddress","type":"address"}],"name":"setMarketAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFee","type":"uint256"}],"name":"setMarketFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenNumberToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Factory","name":"_uniSwapRouter","type":"address"}],"name":"setPancakeRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setReflectionFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"setTimeForSniping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBuying","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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniSwapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniSwapRouter","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526b033b2e3c9fd0803ce8000000600c81905562000024906000196200079c565b620000329060001962000745565b600d55603c60105560408051808201909152600a80825269105c1950d85c1a5d185b60b21b60209092019182526200006d91601191620005ee565b5060408051808201909152600280825261414360f01b60209092019182526200009991601291620005ee565b5060138054601260ff19909116179055600c54620000e190606490620000cd906032620004d4602090811b62001b3b17901c565b6200056860201b62001bba1790919060201c565b60155562000102612710600c546200056860201b62001bba1790919060201c565b6016556017805463ffffffff19166301000000179055601460188190556019556000601a819055601b556064601c819055601d553480156200014357600080fd5b5060405162003c3338038062003c33833981016040819052620001669162000694565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600355600d5460046000620001c46000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355601480546001600160a01b03191693851693909317909255815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200024557600080fd5b505afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062000694565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c957600080fd5b505afa158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000694565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200034d57600080fd5b505af115801562000362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000388919062000694565b60601b6001600160601b03191660805260138054610100600160a81b0319166101006001600160a01b03841602179055600160076000620003d16000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260079092528120805490921660019081179092556009906200042a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260099092529020805490911660011790556200047d6000546001600160a01b031690565b6001600160a01b0316306001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c54604051620004c491815260200190565b60405180910390a35050620007f8565b600082620004e55750600062000562565b6000620004f3838562000723565b9050826200050285836200070c565b146200055f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200055f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005b260201b60201c565b60008183620005d65760405162461bcd60e51b8152600401620005569190620006b4565b506000620005e584866200070c565b95945050505050565b828054620005fc906200075f565b90600052602060002090601f0160209004810192826200062057600085556200066b565b82601f106200063b57805160ff19168380011785556200066b565b828001600101855582156200066b579182015b828111156200066b5782518255916020019190600101906200064e565b50620006799291506200067d565b5090565b5b808211156200067957600081556001016200067e565b600060208284031215620006a757600080fd5b81516200055f81620007df565b600060208083528351808285015260005b81811015620006e357858101830151858201604001528201620006c5565b81811115620006f6576000604083870101525b50601f01601f1916929092016040019392505050565b6000826200071e576200071e620007c9565b500490565b6000816000190483118215151615620007405762000740620007b3565b500290565b6000828210156200075a576200075a620007b3565b500390565b600181811c908216806200077457607f821691505b602082108114156200079657634e487b7160e01b600052602260045260246000fd5b50919050565b600082620007ae57620007ae620007c9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b0381168114620007f557600080fd5b50565b60805160601c6133e46200084f6000396000818161092701528181611f9a0152818161202e015281816120e6015281816121480152818161220d0152818161224a0152818161243e015261249d01526133e46000f3fe60806040526004361061036f5760003560e01c8063715018a6116101c6578063c49b9a80116100f7578063e4440a8611610095578063f8316c901161006f578063f8316c9014610a2f578063fa58fc2d14610a4f578063fae9261214610a6f578063fc6f4cbb14610a8f57600080fd5b8063e4440a86146109cf578063ea2f0b37146109ef578063f2fde38b14610a0f57600080fd5b8063d837df05116100d1578063d837df0514610915578063dd46706414610949578063dd62ed3e14610969578063dd7bd775146109af57600080fd5b8063c49b9a80146108c0578063c7d5b8ed146108e0578063d543dbeb146108f557600080fd5b80639cb1258211610164578063a8a037f51161013e578063a8a037f514610849578063a9059cbb14610869578063b6c5232414610889578063c04bd6e01461089e57600080fd5b80639cb12582146107f4578063a457c2d714610814578063a69df4b51461083457600080fd5b806388f82020116101a057806388f82020146107685780638da5cb5b146107a15780638ee88c53146107bf57806395d89b41146107df57600080fd5b8063715018a6146107275780637d1db4a51461073c57806384d6ff2f1461075257600080fd5b80633fd149d6116102a05780635342acb41161023e578063639423691161021857806363942369146106bb57806365d60e56146106d15780636bc87c3a146106f157806370a082311461070757600080fd5b80635342acb4146106255780635b89029c1461065e5780635d01ff3d1461067e57600080fd5b80634a74bb021161027a5780634a74bb02146105aa5780634bcc2616146105c45780634ce4898f146105e457806352390c021461060557600080fd5b80633fd149d614610554578063437823ec1461056a5780634549b0391461058a57600080fd5b8063313ce5671161030d57806339265989116102e757806339265989146104de57806339509351146104fe5780633bd5d1731461051e5780633c8d355f1461053e57600080fd5b8063313ce5671461047a5780633685d4191461049c57806338d6f847146104be57600080fd5b806318160ddd1161034957806318160ddd146103f55780631fca803d1461040a57806323b872dd1461043a5780632d8381191461045a57600080fd5b806306fdde031461037b578063095ea7b3146103a657806313114a9d146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aae565b60405161039d919061312c565b60405180910390f35b3480156103b257600080fd5b506103c66103c136600461307b565b610b40565b604051901515815260200161039d565b3480156103e257600080fd5b50600e545b60405190815260200161039d565b34801561040157600080fd5b50600c546103e7565b34801561041657600080fd5b506103c6610425366004612f92565b600a6020526000908152604090205460ff1681565b34801561044657600080fd5b506103c6610455366004613005565b610b57565b34801561046657600080fd5b506103e76104753660046130c2565b610bc0565b34801561048657600080fd5b5060135460405160ff909116815260200161039d565b3480156104a857600080fd5b506104bc6104b7366004612f92565b610c49565b005b3480156104ca57600080fd5b506104bc6104d9366004612f92565b610e47565b3480156104ea57600080fd5b506104bc6104f93660046130c2565b610f70565b34801561050a57600080fd5b506103c661051936600461307b565b610f9f565b34801561052a57600080fd5b506104bc6105393660046130c2565b610fd5565b34801561054a57600080fd5b506103e760105481565b34801561056057600080fd5b506103e7600f5481565b34801561057657600080fd5b506104bc610585366004612f92565b6110c2565b34801561059657600080fd5b506103e76105a53660046130db565b611110565b3480156105b657600080fd5b506017546103c69060ff1681565b3480156105d057600080fd5b506104bc6105df3660046130c2565b6111c5565b3480156105f057600080fd5b506017546103c6906301000000900460ff1681565b34801561061157600080fd5b506104bc610620366004612f92565b6111f4565b34801561063157600080fd5b506103c6610640366004612f92565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561066a57600080fd5b506104bc610679366004613046565b611347565b34801561068a57600080fd5b506013546106a39061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b3480156106c757600080fd5b506103e760185481565b3480156106dd57600080fd5b506104bc6106ec3660046130a7565b61139c565b3480156106fd57600080fd5b506103e7601a5481565b34801561071357600080fd5b506103e7610722366004612f92565b6113e0565b34801561073357600080fd5b506104bc61143f565b34801561074857600080fd5b506103e760155481565b34801561075e57600080fd5b506103e7601c5481565b34801561077457600080fd5b506103c6610783366004612f92565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156107ad57600080fd5b506000546001600160a01b03166106a3565b3480156107cb57600080fd5b506104bc6107da3660046130c2565b6114a1565b3480156107eb57600080fd5b506103906114d0565b34801561080057600080fd5b506104bc61080f3660046130c2565b6114df565b34801561082057600080fd5b506103c661082f36600461307b565b61150e565b34801561084057600080fd5b506104bc61155d565b34801561085557600080fd5b506104bc6108643660046130a7565b611674565b34801561087557600080fd5b506103c661088436600461307b565b6116bc565b34801561089557600080fd5b506002546103e7565b3480156108aa57600080fd5b506017546103c690640100000000900460ff1681565b3480156108cc57600080fd5b506104bc6108db3660046130a7565b6116c9565b3480156108ec57600080fd5b506104bc61173a565b34801561090157600080fd5b506104bc6109103660046130c2565b6117d0565b34801561092157600080fd5b506106a37f000000000000000000000000000000000000000000000000000000000000000081565b34801561095557600080fd5b506104bc6109643660046130c2565b611820565b34801561097557600080fd5b506103e7610984366004612fcc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156109bb57600080fd5b506104bc6109ca366004612f92565b6118a5565b3480156109db57600080fd5b506014546106a3906001600160a01b031681565b3480156109fb57600080fd5b506104bc610a0a366004612f92565b61194b565b348015610a1b57600080fd5b506104bc610a2a366004612f92565b611996565b348015610a3b57600080fd5b506104bc610a4a366004612f92565b611a6e565b348015610a5b57600080fd5b506104bc610a6a3660046130c2565b611ac0565b348015610a7b57600080fd5b506104bc610a8a366004612f92565b611aef565b348015610a9b57600080fd5b506017546103c690610100900460ff1681565b606060118054610abd90613297565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae990613297565b8015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b6000610b4d338484611bfc565b5060015b92915050565b6000610b64848484611d13565b610bb68433610bb185604051806060016040528060258152602001613348602591396001600160a01b038a166000908152600660209081526040808320338452909152902054919061229a565b611bfc565b5060019392505050565b6000600d54821115610c2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610c366122d4565b9050610c428382611bba565b9392505050565b6000546001600160a01b03163314610c735760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16610cdb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b60005b600b54811015610e4357816001600160a01b0316600b8281548110610d0557610d05613319565b6000918252602090912001546001600160a01b03161415610e3157600b8054610d3090600190613280565b81548110610d4057610d40613319565b600091825260209091200154600b80546001600160a01b039092169183908110610d6c57610d6c613319565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610dc4610da56122d4565b6001600160a01b03841660009081526005602052604090205490611b3b565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610e0b57610e0b613303565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e3b816132d2565b915050610cde565b5050565b6000546001600160a01b03163314610e715760405162461bcd60e51b8152600401610c2390613181565b6013546001600160a01b03828116610100909204161415610ee35760405162461bcd60e51b815260206004820152602660248201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706044820152652937baba32b960d11b6064820152608401610c23565b6001600160a01b0381166000908152600a602052604090205460ff1615610f4c5760405162461bcd60e51b815260206004820152601860248201527f57453a20736e6970657220616c726561647920657869737400000000000000006044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c2390613181565b601c55565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b4d918590610bb190866122f7565b3360008181526008602052604090205460ff161561104a5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c23565b600061105e6110576122d4565b8490611b3b565b6001600160a01b0383166000908152600460205260409020549091506110849082612356565b6001600160a01b038316600090815260046020526040902055600d546110aa9082612356565b600d55600e546110ba90846122f7565b600e55505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156111645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c23565b8161118657600061117d6111766122d4565b8590611b3b565b9150610b519050565b60006111936111766122d4565b905060006111bb6111b46111a56122d4565b6111ae88612398565b90611b3b565b8390612356565b9250610b51915050565b6000546001600160a01b031633146111ef5760405162461bcd60e51b8152600401610c2390613181565b601655565b6000546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16156112875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b6001600160a01b038116600090815260046020526040902054156112e1576001600160a01b0381166000908152600460205260409020546112c790610bc0565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c65760405162461bcd60e51b8152600401610c2390613181565b601780549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff161561141d57506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610b5190610bc0565b6000546001600160a01b031633146114695760405162461bcd60e51b8152600401610c2390613181565b600080546040516001600160a01b039091169060008051602061336d833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114cb5760405162461bcd60e51b8152600401610c2390613181565b601a55565b606060128054610abd90613297565b6000546001600160a01b031633146115095760405162461bcd60e51b8152600401610c2390613181565b601855565b6000610b4d3384610bb18560405180606001604052806022815260200161338d602291393360009081526006602090815260408083206001600160a01b038d168452909152902054919061229a565b6001546001600160a01b031633146115c35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c23565b60025442116116225760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610c23565b600154600080546040516001600160a01b03938416939091169160008051602061336d83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b8152600401610c2390613181565b6017805491151563010000000263ff00000019909216919091179055565b6000610b4d338484611d13565b6000546001600160a01b031633146116f35760405162461bcd60e51b8152600401610c2390613181565b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146117645760405162461bcd60e51b8152600401610c2390613181565b601754640100000000900460ff16156117b55760405162461bcd60e51b815260206004820152601360248201527215d14e88105b1c9958591e48195b98589b1959606a1b6044820152606401610c23565b6017805442600f5564ff000000ff1916640100000001179055565b6000546001600160a01b031633146117fa5760405162461bcd60e51b8152600401610c2390613181565b61181a606461181483600c54611b3b90919063ffffffff16565b90611bba565b60155550565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c2390613181565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118798142613227565b600255600080546040516001600160a01b039091169060008051602061336d833981519152908390a350565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b0381166000908152600a602052604090205460ff1661192a5760405162461bcd60e51b815260206004820152601060248201526f2ba29d102737ba10309039b734b832b960811b6044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146119755760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146119c05760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b038116611a255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c23565b600080546040516001600160a01b038085169392169160008051602061336d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a985760405162461bcd60e51b8152600401610c2390613181565b601380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611aea5760405162461bcd60e51b8152600401610c2390613181565b601055565b6000546001600160a01b03163314611b195760405162461bcd60e51b8152600401610c2390613181565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611b4a57506000610b51565b6000611b568385613261565b905082611b63858361323f565b14610c425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c23565b6000610c4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ce565b6001600160a01b038316611c5c5760405162461bcd60e51b815260206004820152602160248201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c23565b6001600160a01b038216611cb25760405162461bcd60e51b815260206004820152601f60248201527f57453a20617070726f766520746f20746865207a65726f2061646472657373006044820152606401610c23565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d745760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c23565b6001600160a01b038216611dca5760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f20616464726573736044820152606401610c23565b60008111611e305760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610c23565b6001600160a01b0382166000908152600a602052604090205460ff1615611e8f5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b0383166000908152600a602052604090205460ff1615611eee5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b03831660009081526009602052604090205460ff16158015611f3057506001600160a01b03821660009081526009602052604090205460ff16155b156121a457601554811115611f875760405162461bcd60e51b815260206004820152601760248201527f616d6f756e7420657863656564206d6178206c696d69740000000000000000006044820152606401610c23565b6017546301000000900460ff1661201a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561201a5760405162461bcd60e51b815260206004820181905260248201527f57453a20616e74697768616c65206973206e6f7420656e61626c6564207965746044820152606401610c23565b601754640100000000900460ff166120ae577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156120ae5760405162461bcd60e51b815260206004820152601d60248201527f57453a20427579696e67206973206e6f7420656e61626c6564207965740000006044820152606401610c23565b601054600f546120be9190613227565b421080156120df57506013546001600160a01b038481166101009092041614155b156121a4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415612146576001600160a01b0382166000908152600a60205260409020805460ff191660011790556121a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614156121a4576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b6121ae83836123fc565b6001600160a01b03831660009081526007602052604090205460019060ff16806121f057506001600160a01b03831660009081526007602052604090205460ff165b806122025750601754610100900460ff165b1561220b575060005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561227f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b15612288575060005b6122948484848461263b565b50505050565b600081848411156122be5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb8486613280565b95945050505050565b60008060006122e1612783565b90925090506122f08282611bba565b9250505090565b6000806123048385613227565b905083811015610c425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c23565b6000610c4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b600080610c426103e86118146123c7601c546123c1601a546018546122f790919063ffffffff16565b906122f7565b8690611b3b565b600081836123ef5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb848661323f565b6000612407306113e0565b9050601554811061241757506015545b601654601754908210159062010000900460ff161580156124355750805b801561247357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b8015612481575060175460ff165b80156124d357506001600160a01b038416301480156124d157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b1561229457601654915060006124f6601c54601a546122f790919063ffffffff16565b9050600061251a600261181484611814612710601a54611b3b90919063ffffffff16565b9050600061253983611814612710601c54611b3b90919063ffffffff16565b905061255b30601360019054906101000a90046001600160a01b031687611bfc565b600061256d6127106118148886611b3b565b9050600061257b8783612356565b6013549091506125999061010090046001600160a01b031682612905565b476125a485856122f7565b955060006125b6876118148489611b3b565b6013549091506125e8906001600160a01b03610100909104166125e16000546001600160a01b031690565b8684612a68565b6014546001600160a01b03166108fc61260589611814868a611b3b565b6040518115909202916000818181858888f1935050505015801561262d573d6000803e3d6000fd5b505050505050505050505050565b806126655761266560188054601955601a8054601b55601c8054601d556000928390559082905555565b6001600160a01b03841660009081526008602052604090205460ff1680156126a657506001600160a01b03831660009081526008602052604090205460ff16155b156126bb576126b6848484612b2c565b612767565b6001600160a01b03841660009081526008602052604090205460ff161580156126fc57506001600160a01b03831660009081526008602052604090205460ff165b1561270c576126b6848484612c7f565b6001600160a01b03841660009081526008602052604090205460ff16801561274c57506001600160a01b03831660009081526008602052604090205460ff165b1561275c576126b6848484612d46565b612767848484612dd7565b8061229457612294601954601855601b54601a55601d54601c55565b600d54600c546000918291825b600b548110156128d5578260046000600b84815481106127b2576127b2613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281d57508160056000600b84815481106127f6576127f6613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283357600d54600c54945094505050509091565b61287960046000600b848154811061284d5761284d613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612356565b92506128c160056000600b848154811061289557612895613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612356565b9150806128cd816132d2565b915050612790565b50600c54600d546128e591611bba565b8210156128fc57600d54600c549350935050509091565b90939092509050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061293e5761293e613319565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf9190612faf565b816001815181106129e2576129e2613319565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612a1042610168613227565b6040518663ffffffff1660e01b8152600401612a309594939291906131b6565b600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612a8b42610168613227565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612af357600080fd5b505af1158015612b07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a5e91906130fe565b6000612b366122d4565b90506000612b4d612b4684612398565b8490612356565b90506000612b5b8484611b3b565b90506000612b6f6111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612b959086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612bc49083612356565b6001600160a01b038089166000908152600460205260408082209390935590881681522054612bf390826122f7565b6001600160a01b038716600090815260046020526040902055612c168585612e39565b612c208585612f0d565b612c2985612f2a565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c6e91815260200190565b60405180910390a350505050505050565b6000612c896122d4565b90506000612c99612b4684612398565b90506000612ca78484611b3b565b90506000612cbb6111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612ce19083612356565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612d1790846122f7565b6001600160a01b038716600090815260056020908152604080832093909355600490522054612bf390826122f7565b6000612d506122d4565b90506000612d60612b4684612398565b90506000612d6e8484611b3b565b90506000612d826111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612da89086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612ce19083612356565b6000612de16122d4565b90506000612df1612b4684612398565b90506000612dff8484611b3b565b90506000612e136111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612bc49083612356565b6000612e566103e8611814601a5486611b3b90919063ffffffff16565b90506000612e648284611b3b565b30600090815260046020526040902054909150612e8190826122f7565b3060009081526004602090815260408083209390935560089052205460ff1615612ed05730600090815260056020526040902054612ebf90836122f7565b306000908152600560205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612e566103e8611814601c5486611b3b90919063ffffffff16565b6000612f476103e861181460185485611b3b90919063ffffffff16565b90506000612f5d612f566122d4565b8390611b3b565b600d54909150612f6d9082612356565b600d55600e546110ba90836122f7565b80358015158114612f8d57600080fd5b919050565b600060208284031215612fa457600080fd5b8135610c428161332f565b600060208284031215612fc157600080fd5b8151610c428161332f565b60008060408385031215612fdf57600080fd5b8235612fea8161332f565b91506020830135612ffa8161332f565b809150509250929050565b60008060006060848603121561301a57600080fd5b83356130258161332f565b925060208401356130358161332f565b929592945050506040919091013590565b6000806040838503121561305957600080fd5b82356130648161332f565b915061307260208401612f7d565b90509250929050565b6000806040838503121561308e57600080fd5b82356130998161332f565b946020939093013593505050565b6000602082840312156130b957600080fd5b610c4282612f7d565b6000602082840312156130d457600080fd5b5035919050565b600080604083850312156130ee57600080fd5b8235915061307260208401612f7d565b60008060006060848603121561311357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131595785810183015185820160400152820161313d565b8181111561316b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132065784516001600160a01b0316835293830193918301916001016131e1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561323a5761323a6132ed565b500190565b60008261325c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561327b5761327b6132ed565b500290565b600082821015613292576132926132ed565b500390565b600181811c908216806132ab57607f821691505b602082108114156132cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132e6576132e66132ed565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461334457600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ffe073ac9467929a0a62da1ab51703b00175cd81ebace499e92bdce47f023b0f64736f6c63430008070033000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063715018a6116101c6578063c49b9a80116100f7578063e4440a8611610095578063f8316c901161006f578063f8316c9014610a2f578063fa58fc2d14610a4f578063fae9261214610a6f578063fc6f4cbb14610a8f57600080fd5b8063e4440a86146109cf578063ea2f0b37146109ef578063f2fde38b14610a0f57600080fd5b8063d837df05116100d1578063d837df0514610915578063dd46706414610949578063dd62ed3e14610969578063dd7bd775146109af57600080fd5b8063c49b9a80146108c0578063c7d5b8ed146108e0578063d543dbeb146108f557600080fd5b80639cb1258211610164578063a8a037f51161013e578063a8a037f514610849578063a9059cbb14610869578063b6c5232414610889578063c04bd6e01461089e57600080fd5b80639cb12582146107f4578063a457c2d714610814578063a69df4b51461083457600080fd5b806388f82020116101a057806388f82020146107685780638da5cb5b146107a15780638ee88c53146107bf57806395d89b41146107df57600080fd5b8063715018a6146107275780637d1db4a51461073c57806384d6ff2f1461075257600080fd5b80633fd149d6116102a05780635342acb41161023e578063639423691161021857806363942369146106bb57806365d60e56146106d15780636bc87c3a146106f157806370a082311461070757600080fd5b80635342acb4146106255780635b89029c1461065e5780635d01ff3d1461067e57600080fd5b80634a74bb021161027a5780634a74bb02146105aa5780634bcc2616146105c45780634ce4898f146105e457806352390c021461060557600080fd5b80633fd149d614610554578063437823ec1461056a5780634549b0391461058a57600080fd5b8063313ce5671161030d57806339265989116102e757806339265989146104de57806339509351146104fe5780633bd5d1731461051e5780633c8d355f1461053e57600080fd5b8063313ce5671461047a5780633685d4191461049c57806338d6f847146104be57600080fd5b806318160ddd1161034957806318160ddd146103f55780631fca803d1461040a57806323b872dd1461043a5780632d8381191461045a57600080fd5b806306fdde031461037b578063095ea7b3146103a657806313114a9d146103d657600080fd5b3661037657005b600080fd5b34801561038757600080fd5b50610390610aae565b60405161039d919061312c565b60405180910390f35b3480156103b257600080fd5b506103c66103c136600461307b565b610b40565b604051901515815260200161039d565b3480156103e257600080fd5b50600e545b60405190815260200161039d565b34801561040157600080fd5b50600c546103e7565b34801561041657600080fd5b506103c6610425366004612f92565b600a6020526000908152604090205460ff1681565b34801561044657600080fd5b506103c6610455366004613005565b610b57565b34801561046657600080fd5b506103e76104753660046130c2565b610bc0565b34801561048657600080fd5b5060135460405160ff909116815260200161039d565b3480156104a857600080fd5b506104bc6104b7366004612f92565b610c49565b005b3480156104ca57600080fd5b506104bc6104d9366004612f92565b610e47565b3480156104ea57600080fd5b506104bc6104f93660046130c2565b610f70565b34801561050a57600080fd5b506103c661051936600461307b565b610f9f565b34801561052a57600080fd5b506104bc6105393660046130c2565b610fd5565b34801561054a57600080fd5b506103e760105481565b34801561056057600080fd5b506103e7600f5481565b34801561057657600080fd5b506104bc610585366004612f92565b6110c2565b34801561059657600080fd5b506103e76105a53660046130db565b611110565b3480156105b657600080fd5b506017546103c69060ff1681565b3480156105d057600080fd5b506104bc6105df3660046130c2565b6111c5565b3480156105f057600080fd5b506017546103c6906301000000900460ff1681565b34801561061157600080fd5b506104bc610620366004612f92565b6111f4565b34801561063157600080fd5b506103c6610640366004612f92565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561066a57600080fd5b506104bc610679366004613046565b611347565b34801561068a57600080fd5b506013546106a39061010090046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b3480156106c757600080fd5b506103e760185481565b3480156106dd57600080fd5b506104bc6106ec3660046130a7565b61139c565b3480156106fd57600080fd5b506103e7601a5481565b34801561071357600080fd5b506103e7610722366004612f92565b6113e0565b34801561073357600080fd5b506104bc61143f565b34801561074857600080fd5b506103e760155481565b34801561075e57600080fd5b506103e7601c5481565b34801561077457600080fd5b506103c6610783366004612f92565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156107ad57600080fd5b506000546001600160a01b03166106a3565b3480156107cb57600080fd5b506104bc6107da3660046130c2565b6114a1565b3480156107eb57600080fd5b506103906114d0565b34801561080057600080fd5b506104bc61080f3660046130c2565b6114df565b34801561082057600080fd5b506103c661082f36600461307b565b61150e565b34801561084057600080fd5b506104bc61155d565b34801561085557600080fd5b506104bc6108643660046130a7565b611674565b34801561087557600080fd5b506103c661088436600461307b565b6116bc565b34801561089557600080fd5b506002546103e7565b3480156108aa57600080fd5b506017546103c690640100000000900460ff1681565b3480156108cc57600080fd5b506104bc6108db3660046130a7565b6116c9565b3480156108ec57600080fd5b506104bc61173a565b34801561090157600080fd5b506104bc6109103660046130c2565b6117d0565b34801561092157600080fd5b506106a37f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c81565b34801561095557600080fd5b506104bc6109643660046130c2565b611820565b34801561097557600080fd5b506103e7610984366004612fcc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156109bb57600080fd5b506104bc6109ca366004612f92565b6118a5565b3480156109db57600080fd5b506014546106a3906001600160a01b031681565b3480156109fb57600080fd5b506104bc610a0a366004612f92565b61194b565b348015610a1b57600080fd5b506104bc610a2a366004612f92565b611996565b348015610a3b57600080fd5b506104bc610a4a366004612f92565b611a6e565b348015610a5b57600080fd5b506104bc610a6a3660046130c2565b611ac0565b348015610a7b57600080fd5b506104bc610a8a366004612f92565b611aef565b348015610a9b57600080fd5b506017546103c690610100900460ff1681565b606060118054610abd90613297565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae990613297565b8015610b365780601f10610b0b57610100808354040283529160200191610b36565b820191906000526020600020905b815481529060010190602001808311610b1957829003601f168201915b5050505050905090565b6000610b4d338484611bfc565b5060015b92915050565b6000610b64848484611d13565b610bb68433610bb185604051806060016040528060258152602001613348602591396001600160a01b038a166000908152600660209081526040808320338452909152902054919061229a565b611bfc565b5060019392505050565b6000600d54821115610c2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b6000610c366122d4565b9050610c428382611bba565b9392505050565b6000546001600160a01b03163314610c735760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16610cdb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b60005b600b54811015610e4357816001600160a01b0316600b8281548110610d0557610d05613319565b6000918252602090912001546001600160a01b03161415610e3157600b8054610d3090600190613280565b81548110610d4057610d40613319565b600091825260209091200154600b80546001600160a01b039092169183908110610d6c57610d6c613319565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550610dc4610da56122d4565b6001600160a01b03841660009081526005602052604090205490611b3b565b6001600160a01b038316600090815260046020908152604080832093909355600581528282208290556008905220805460ff19169055600b805480610e0b57610e0b613303565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e3b816132d2565b915050610cde565b5050565b6000546001600160a01b03163314610e715760405162461bcd60e51b8152600401610c2390613181565b6013546001600160a01b03828116610100909204161415610ee35760405162461bcd60e51b815260206004820152602660248201527f57453a2057652063616e206e6f7420626c61636b6c69737420756e69537761706044820152652937baba32b960d11b6064820152608401610c23565b6001600160a01b0381166000908152600a602052604090205460ff1615610f4c5760405162461bcd60e51b815260206004820152601860248201527f57453a20736e6970657220616c726561647920657869737400000000000000006044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c2390613181565b601c55565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610b4d918590610bb190866122f7565b3360008181526008602052604090205460ff161561104a5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610c23565b600061105e6110576122d4565b8490611b3b565b6001600160a01b0383166000908152600460205260409020549091506110849082612356565b6001600160a01b038316600090815260046020526040902055600d546110aa9082612356565b600d55600e546110ba90846122f7565b600e55505050565b6000546001600160a01b031633146110ec5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000600c548311156111645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c23565b8161118657600061117d6111766122d4565b8590611b3b565b9150610b519050565b60006111936111766122d4565b905060006111bb6111b46111a56122d4565b6111ae88612398565b90611b3b565b8390612356565b9250610b51915050565b6000546001600160a01b031633146111ef5760405162461bcd60e51b8152600401610c2390613181565b601655565b6000546001600160a01b0316331461121e5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03811660009081526008602052604090205460ff16156112875760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c23565b6001600160a01b038116600090815260046020526040902054156112e1576001600160a01b0381166000908152600460205260409020546112c790610bc0565b6001600160a01b0382166000908152600560205260409020555b6001600160a01b03166000818152600860205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146113715760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113c65760405162461bcd60e51b8152600401610c2390613181565b601780549115156101000261ff0019909216919091179055565b6001600160a01b03811660009081526008602052604081205460ff161561141d57506001600160a01b031660009081526005602052604090205490565b6001600160a01b038216600090815260046020526040902054610b5190610bc0565b6000546001600160a01b031633146114695760405162461bcd60e51b8152600401610c2390613181565b600080546040516001600160a01b039091169060008051602061336d833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114cb5760405162461bcd60e51b8152600401610c2390613181565b601a55565b606060128054610abd90613297565b6000546001600160a01b031633146115095760405162461bcd60e51b8152600401610c2390613181565b601855565b6000610b4d3384610bb18560405180606001604052806022815260200161338d602291393360009081526006602090815260408083206001600160a01b038d168452909152902054919061229a565b6001546001600160a01b031633146115c35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c23565b60025442116116225760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c20646566696e6564604482015264206461797360d81b6064820152608401610c23565b600154600080546040516001600160a01b03938416939091169160008051602061336d83398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b0316331461169e5760405162461bcd60e51b8152600401610c2390613181565b6017805491151563010000000263ff00000019909216919091179055565b6000610b4d338484611d13565b6000546001600160a01b031633146116f35760405162461bcd60e51b8152600401610c2390613181565b6017805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146117645760405162461bcd60e51b8152600401610c2390613181565b601754640100000000900460ff16156117b55760405162461bcd60e51b815260206004820152601360248201527215d14e88105b1c9958591e48195b98589b1959606a1b6044820152606401610c23565b6017805442600f5564ff000000ff1916640100000001179055565b6000546001600160a01b031633146117fa5760405162461bcd60e51b8152600401610c2390613181565b61181a606461181483600c54611b3b90919063ffffffff16565b90611bba565b60155550565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610c2390613181565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556118798142613227565b600255600080546040516001600160a01b039091169060008051602061336d833981519152908390a350565b6000546001600160a01b031633146118cf5760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b0381166000908152600a602052604090205460ff1661192a5760405162461bcd60e51b815260206004820152601060248201526f2ba29d102737ba10309039b734b832b960811b6044820152606401610c23565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b6000546001600160a01b031633146119755760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6000546001600160a01b031633146119c05760405162461bcd60e51b8152600401610c2390613181565b6001600160a01b038116611a255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c23565b600080546040516001600160a01b038085169392169160008051602061336d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a985760405162461bcd60e51b8152600401610c2390613181565b601380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314611aea5760405162461bcd60e51b8152600401610c2390613181565b601055565b6000546001600160a01b03163314611b195760405162461bcd60e51b8152600401610c2390613181565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b600082611b4a57506000610b51565b6000611b568385613261565b905082611b63858361323f565b14610c425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c23565b6000610c4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ce565b6001600160a01b038316611c5c5760405162461bcd60e51b815260206004820152602160248201527f57453a20617070726f76652066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c23565b6001600160a01b038216611cb25760405162461bcd60e51b815260206004820152601f60248201527f57453a20617070726f766520746f20746865207a65726f2061646472657373006044820152606401610c23565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d745760405162461bcd60e51b815260206004820152602260248201527f57453a207472616e736665722066726f6d20746865207a65726f206164647265604482015261737360f01b6064820152608401610c23565b6001600160a01b038216611dca5760405162461bcd60e51b815260206004820181905260248201527f57453a207472616e7366657220746f20746865207a65726f20616464726573736044820152606401610c23565b60008111611e305760405162461bcd60e51b815260206004820152602d60248201527f57453a205472616e7366657220616d6f756e74206d757374206265206772656160448201526c746572207468616e207a65726f60981b6064820152608401610c23565b6001600160a01b0382166000908152600a602052604090205460ff1615611e8f5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b0383166000908152600a602052604090205460ff1615611eee5760405162461bcd60e51b815260206004820152601360248201527215d14e8814db9a5c195c8819195d1958dd1959606a1b6044820152606401610c23565b6001600160a01b03831660009081526009602052604090205460ff16158015611f3057506001600160a01b03821660009081526009602052604090205460ff16155b156121a457601554811115611f875760405162461bcd60e51b815260206004820152601760248201527f616d6f756e7420657863656564206d6178206c696d69740000000000000000006044820152606401610c23565b6017546301000000900460ff1661201a577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316826001600160a01b0316141561201a5760405162461bcd60e51b815260206004820181905260248201527f57453a20616e74697768616c65206973206e6f7420656e61626c6564207965746044820152606401610c23565b601754640100000000900460ff166120ae577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b031614156120ae5760405162461bcd60e51b815260206004820152601d60248201527f57453a20427579696e67206973206e6f7420656e61626c6564207965740000006044820152606401610c23565b601054600f546120be9190613227565b421080156120df57506013546001600160a01b038481166101009092041614155b156121a4577f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b03161415612146576001600160a01b0382166000908152600a60205260409020805460ff191660011790556121a4565b7f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316826001600160a01b031614156121a4576001600160a01b0383166000908152600a60205260409020805460ff191660011790555b6121ae83836123fc565b6001600160a01b03831660009081526007602052604090205460019060ff16806121f057506001600160a01b03831660009081526007602052604090205460ff165b806122025750601754610100900460ff165b1561220b575060005b7f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b03161415801561227f57507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316846001600160a01b031614155b15612288575060005b6122948484848461263b565b50505050565b600081848411156122be5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb8486613280565b95945050505050565b60008060006122e1612783565b90925090506122f08282611bba565b9250505090565b6000806123048385613227565b905083811015610c425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c23565b6000610c4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229a565b600080610c426103e86118146123c7601c546123c1601a546018546122f790919063ffffffff16565b906122f7565b8690611b3b565b600081836123ef5760405162461bcd60e51b8152600401610c23919061312c565b5060006122cb848661323f565b6000612407306113e0565b9050601554811061241757506015545b601654601754908210159062010000900460ff161580156124355750805b801561247357507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316846001600160a01b031614155b8015612481575060175460ff165b80156124d357506001600160a01b038416301480156124d157507f0000000000000000000000000da7a35ab9cdd5aa3c6eab67fee0cbd52742847c6001600160a01b0316836001600160a01b0316145b155b1561229457601654915060006124f6601c54601a546122f790919063ffffffff16565b9050600061251a600261181484611814612710601a54611b3b90919063ffffffff16565b9050600061253983611814612710601c54611b3b90919063ffffffff16565b905061255b30601360019054906101000a90046001600160a01b031687611bfc565b600061256d6127106118148886611b3b565b9050600061257b8783612356565b6013549091506125999061010090046001600160a01b031682612905565b476125a485856122f7565b955060006125b6876118148489611b3b565b6013549091506125e8906001600160a01b03610100909104166125e16000546001600160a01b031690565b8684612a68565b6014546001600160a01b03166108fc61260589611814868a611b3b565b6040518115909202916000818181858888f1935050505015801561262d573d6000803e3d6000fd5b505050505050505050505050565b806126655761266560188054601955601a8054601b55601c8054601d556000928390559082905555565b6001600160a01b03841660009081526008602052604090205460ff1680156126a657506001600160a01b03831660009081526008602052604090205460ff16155b156126bb576126b6848484612b2c565b612767565b6001600160a01b03841660009081526008602052604090205460ff161580156126fc57506001600160a01b03831660009081526008602052604090205460ff165b1561270c576126b6848484612c7f565b6001600160a01b03841660009081526008602052604090205460ff16801561274c57506001600160a01b03831660009081526008602052604090205460ff165b1561275c576126b6848484612d46565b612767848484612dd7565b8061229457612294601954601855601b54601a55601d54601c55565b600d54600c546000918291825b600b548110156128d5578260046000600b84815481106127b2576127b2613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061281d57508160056000600b84815481106127f6576127f6613319565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561283357600d54600c54945094505050509091565b61287960046000600b848154811061284d5761284d613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612356565b92506128c160056000600b848154811061289557612895613319565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612356565b9150806128cd816132d2565b915050612790565b50600c54600d546128e591611bba565b8210156128fc57600d54600c549350935050509091565b90939092509050565b60408051600280825260608201835284926000929190602083019080368337019050509050308160008151811061293e5761293e613319565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561299757600080fd5b505afa1580156129ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129cf9190612faf565b816001815181106129e2576129e2613319565b6001600160a01b039283166020918202929092010152821663791ac9478460008430612a1042610168613227565b6040518663ffffffff1660e01b8152600401612a309594939291906131b6565b600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b5050505050505050565b836001600160a01b03811663f305d7198330866000808a612a8b42610168613227565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612af357600080fd5b505af1158015612b07573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a5e91906130fe565b6000612b366122d4565b90506000612b4d612b4684612398565b8490612356565b90506000612b5b8484611b3b565b90506000612b6f6111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612b959086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612bc49083612356565b6001600160a01b038089166000908152600460205260408082209390935590881681522054612bf390826122f7565b6001600160a01b038716600090815260046020526040902055612c168585612e39565b612c208585612f0d565b612c2985612f2a565b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c6e91815260200190565b60405180910390a350505050505050565b6000612c896122d4565b90506000612c99612b4684612398565b90506000612ca78484611b3b565b90506000612cbb6111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612ce19083612356565b6001600160a01b03808916600090815260046020908152604080832094909455918916815260059091522054612d1790846122f7565b6001600160a01b038716600090815260056020908152604080832093909355600490522054612bf390826122f7565b6000612d506122d4565b90506000612d60612b4684612398565b90506000612d6e8484611b3b565b90506000612d826111b4856111ae88612398565b6001600160a01b038816600090815260056020526040902054909150612da89086612356565b6001600160a01b038816600090815260056020908152604080832093909355600490522054612ce19083612356565b6000612de16122d4565b90506000612df1612b4684612398565b90506000612dff8484611b3b565b90506000612e136111b4856111ae88612398565b6001600160a01b038816600090815260046020526040902054909150612bc49083612356565b6000612e566103e8611814601a5486611b3b90919063ffffffff16565b90506000612e648284611b3b565b30600090815260046020526040902054909150612e8190826122f7565b3060009081526004602090815260408083209390935560089052205460ff1615612ed05730600090815260056020526040902054612ebf90836122f7565b306000908152600560205260409020555b604051828152309033907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b6000612e566103e8611814601c5486611b3b90919063ffffffff16565b6000612f476103e861181460185485611b3b90919063ffffffff16565b90506000612f5d612f566122d4565b8390611b3b565b600d54909150612f6d9082612356565b600d55600e546110ba90836122f7565b80358015158114612f8d57600080fd5b919050565b600060208284031215612fa457600080fd5b8135610c428161332f565b600060208284031215612fc157600080fd5b8151610c428161332f565b60008060408385031215612fdf57600080fd5b8235612fea8161332f565b91506020830135612ffa8161332f565b809150509250929050565b60008060006060848603121561301a57600080fd5b83356130258161332f565b925060208401356130358161332f565b929592945050506040919091013590565b6000806040838503121561305957600080fd5b82356130648161332f565b915061307260208401612f7d565b90509250929050565b6000806040838503121561308e57600080fd5b82356130998161332f565b946020939093013593505050565b6000602082840312156130b957600080fd5b610c4282612f7d565b6000602082840312156130d457600080fd5b5035919050565b600080604083850312156130ee57600080fd5b8235915061307260208401612f7d565b60008060006060848603121561311357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156131595785810183015185820160400152820161313d565b8181111561316b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132065784516001600160a01b0316835293830193918301916001016131e1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561323a5761323a6132ed565b500190565b60008261325c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561327b5761327b6132ed565b500290565b600082821015613292576132926132ed565b500390565b600181811c908216806132ab57607f821691505b602082108114156132cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156132e6576132e66132ed565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461334457600080fd5b5056fe57453a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e057453a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ffe073ac9467929a0a62da1ab51703b00175cd81ebace499e92bdce47f023b0f64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313
-----Decoded View---------------
Arg [0] : _marketWallet (address): 0xcF6dD23f5a8ef7386DE1b8e7A12ff12eA19d1313
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cf6dd23f5a8ef7386de1b8e7a12ff12ea19d1313
Deployed Bytecode Sourcemap
20878:22788:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25549:193;;;;;;;;;;-1:-1:-1;25549:193:0;;;;;:::i;:::-;;:::i;:::-;;;4862:14:1;;4855:22;4837:41;;4825:2;4810:18;25549:193:0;4697:187:1;27042:87:0;;;;;;;;;;-1:-1:-1;27111:10:0;;27042:87;;;14559:25:1;;;14547:2;14532:18;27042:87:0;14413:177:1;24841:95:0;;;;;;;;;;-1:-1:-1;24921:7:0;;24841:95;;21362:41;;;;;;;;;;-1:-1:-1;21362:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25750:443;;;;;;;;;;-1:-1:-1;25750:443:0;;;;;:::i;:::-;;:::i;28466:322::-;;;;;;;;;;-1:-1:-1;28466:322:0;;;;;:::i;:::-;;:::i;24750:83::-;;;;;;;;;;-1:-1:-1;24816:9:0;;24750:83;;24816:9;;;;15722:36:1;;15710:2;15695:18;24750:83:0;15580:184:1;29136:547:0;;;;;;;;;;-1:-1:-1;29136:547:0;;;;;:::i;:::-;;:::i;:::-;;29691:308;;;;;;;;;;-1:-1:-1;29691:308:0;;;;;:::i;:::-;;:::i;31164:108::-;;;;;;;;;;-1:-1:-1;31164:108:0;;;;;:::i;:::-;;:::i;26201:300::-;;;;;;;;;;-1:-1:-1;26201:300:0;;;;;:::i;:::-;;:::i;27137:411::-;;;;;;;;;;-1:-1:-1;27137:411:0;;;;;:::i;:::-;;:::i;21697:43::-;;;;;;;;;;;;;;;;21633:33;;;;;;;;;;;;;;;;30187:111;;;;;;;;;;-1:-1:-1;30187:111:0;;;;;:::i;:::-;;:::i;27879:579::-;;;;;;;;;;-1:-1:-1;27879:579:0;;;;;:::i;:::-;;:::i;22211:41::-;;;;;;;;;;-1:-1:-1;22211:41:0;;;;;;;;30585:116;;;;;;;;;;-1:-1:-1;30585:116:0;;;;;:::i;:::-;;:::i;22427:29::-;;;;;;;;;;-1:-1:-1;22427:29:0;;;;;;;;;;;28796:332;;;;;;;;;;-1:-1:-1;28796:332:0;;;;;:::i;:::-;;:::i;34836:124::-;;;;;;;;;;-1:-1:-1;34836:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;34925:27:0;34901:4;34925:27;;;:18;:27;;;;;;;;;34836:124;30709:156;;;;;;;;;;-1:-1:-1;30709:156:0;;;;;:::i;:::-;;:::i;21864:38::-;;;;;;;;;;-1:-1:-1;21864:38:0;;;;;;;-1:-1:-1;;;;;21864:38:0;;;;;;-1:-1:-1;;;;;3817:32:1;;;3799:51;;3787:2;3772:18;21864:38:0;3653:203:1;22544:42:0;;;;;;;;;;;;;;;;31453:108;;;;;;;;;;-1:-1:-1;31453:108:0;;;;;:::i;:::-;;:::i;22732:32::-;;;;;;;;;;;;;;;;24944:198;;;;;;;;;;-1:-1:-1;24944:198:0;;;;;:::i;:::-;;:::i;7398:157::-;;;;;;;;;;;;;:::i;21996:54::-;;;;;;;;;;;;;;;;22875:31;;;;;;;;;;;;;;;;26914:120;;;;;;;;;;-1:-1:-1;26914:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;27006:20:0;26982:4;27006:20;;;:11;:20;;;;;;;;;26914:120;7184:79;;;;;;;;;;-1:-1:-1;7222:7:0;7249:6;-1:-1:-1;;;;;7249:6:0;7184:79;;31036:120;;;;;;;;;;-1:-1:-1;31036:120:0;;;;;:::i;:::-;;:::i;24655:87::-;;;;;;;;;;;;;:::i;30873:155::-;;;;;;;;;;-1:-1:-1;30873:155:0;;;;;:::i;:::-;;:::i;26509:397::-;;;;;;;;;;-1:-1:-1;26509:397:0;;;;;:::i;:::-;;:::i;8364:431::-;;;;;;;;;;;;;:::i;27556:87::-;;;;;;;;;;-1:-1:-1;27556:87:0;;;;;:::i;:::-;;:::i;25150:199::-;;;;;;;;;;-1:-1:-1;25150:199:0;;;;;:::i;:::-;;:::i;7892:89::-;;;;;;;;;;-1:-1:-1;7964:9:0;;7892:89;;22465:23;;;;;;;;;;-1:-1:-1;22465:23:0;;;;;;;;;;;31280:165;;;;;;;;;;-1:-1:-1;31280:165:0;;;;;:::i;:::-;;:::i;27651:220::-;;;;;;;;;;;;;:::i;30447:130::-;;;;;;;;;;-1:-1:-1;30447:130:0;;;;;:::i;:::-;;:::i;21909:36::-;;;;;;;;;;;;;;;8057:235;;;;;;;;;;-1:-1:-1;8057:235:0;;;;;:::i;:::-;;:::i;25357:184::-;;;;;;;;;;-1:-1:-1;25357:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;25506:18:0;;;25474:7;25506:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;25357:184;30007:172;;;;;;;;;;-1:-1:-1;30007:172:0;;;;;:::i;:::-;;:::i;21952:35::-;;;;;;;;;;-1:-1:-1;21952:35:0;;;;-1:-1:-1;;;;;21952:35:0;;;30306:110;;;;;;;;;;-1:-1:-1;30306:110:0;;;;;:::i;:::-;;:::i;7563:321::-;;;;;;;;;;-1:-1:-1;7563:321:0;;;;;:::i;:::-;;:::i;31725:151::-;;;;;;;;;;-1:-1:-1;31725:151:0;;;;;:::i;:::-;;:::i;31884:103::-;;;;;;;;;;-1:-1:-1;31884:103:0;;;;;:::i;:::-;;:::i;31569:148::-;;;;;;;;;;-1:-1:-1;31569:148:0;;;;;:::i;:::-;;:::i;22310:41::-;;;;;;;;;;-1:-1:-1;22310:41:0;;;;;;;;;;;24564:83;24601:13;24634:5;24627:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24564:83;:::o;25549:193::-;25651:4;25673:39;3112:10;25696:7;25705:6;25673:8;:39::i;:::-;-1:-1:-1;25730:4:0;25549:193;;;;;:::o;25750:443::-;25882:4;25899:36;25909:6;25917:9;25928:6;25899:9;:36::i;:::-;25946:217;25969:6;3112:10;26017:135;26073:6;26017:135;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26017:19:0;;;;;;:11;:19;;;;;;;;3112:10;26017:33;;;;;;;;;;:37;:135::i;:::-;25946:8;:217::i;:::-;-1:-1:-1;26181:4:0;25750:443;;;;;:::o;28466:322::-;28560:7;28618;;28607;:18;;28585:110;;;;-1:-1:-1;;;28585:110:0;;7100:2:1;28585:110:0;;;7082:21:1;7139:2;7119:18;;;7112:30;7178:34;7158:18;;;7151:62;-1:-1:-1;;;7229:18:1;;;7222:40;7279:19;;28585:110:0;;;;;;;;;28706:19;28728:10;:8;:10::i;:::-;28706:32;-1:-1:-1;28756:24:0;:7;28706:32;28756:11;:24::i;:::-;28749:31;28466:322;-1:-1:-1;;;28466:322:0:o;29136:547::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29216:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29208:60;;;::::0;-1:-1:-1;;;29208:60:0;;8274:2:1;29208:60:0::1;::::0;::::1;8256:21:1::0;8313:2;8293:18;;;8286:30;8352:29;8332:18;;;8325:57;8399:18;;29208:60:0::1;8072:351:1::0;29208:60:0::1;29284:9;29279:397;29303:9;:16:::0;29299:20;::::1;29279:397;;;29361:7;-1:-1:-1::0;;;;;29345:23:0::1;:9;29355:1;29345:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;29345:12:0::1;:23;29341:324;;;29404:9;29414:16:::0;;:20:::1;::::0;29433:1:::1;::::0;29414:20:::1;:::i;:::-;29404:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;29389:9:::1;:12:::0;;-1:-1:-1;;;;;29404:31:0;;::::1;::::0;29399:1;;29389:12;::::1;;;;;:::i;:::-;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;29389:46:0::1;;;;;-1:-1:-1::0;;;;;29389:46:0::1;;;;;;29473:32;29494:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;29473:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;29454:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;29524:7:::1;:16:::0;;;;;:20;;;29563:11:::1;:20:::0;;;:28;;-1:-1:-1;;29563:28:0::1;::::0;;29610:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;29610:15:0;;;;;-1:-1:-1;;;;;;29610:15:0::1;::::0;;;;;29279:397:::1;29136:547:::0;:::o;29341:324::-:1;29321:3:::0;::::1;::::0;::::1;:::i;:::-;;;;29279:397;;;;29136:547:::0;:::o;29691:308::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;29806:13:::1;::::0;-1:-1:-1;;;;;29786:34:0;;::::1;29806:13;::::0;;::::1;;29786:34;;29764:122;;;::::0;-1:-1:-1;;;29764:122:0;;5927:2:1;29764:122:0::1;::::0;::::1;5909:21:1::0;5966:2;5946:18;;;5939:30;6005:34;5985:18;;;5978:62;-1:-1:-1;;;6056:18:1;;;6049:36;6102:19;;29764:122:0::1;5725:402:1::0;29764:122:0::1;-1:-1:-1::0;;;;;29906:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;29905:20;29897:57;;;::::0;-1:-1:-1;;;29897:57:0;;12670:2:1;29897:57:0::1;::::0;::::1;12652:21:1::0;12709:2;12689:18;;;12682:30;12748:26;12728:18;;;12721:54;12792:18;;29897:57:0::1;12468:348:1::0;29897:57:0::1;-1:-1:-1::0;;;;;29965:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;29965:26:0::1;29987:4;29965:26;::::0;;29691:308::o;31164:108::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31242:10:::1;:22:::0;31164:108::o;26201:300::-;3112:10;26316:4;26410:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26410:34:0;;;;;;;;;;26316:4;;26338:133;;26388:7;;26410:50;;26449:10;26410:38;:50::i;27137:411::-;3112:10;27189:14;27252:19;;;:11;:19;;;;;;;;27251:20;27229:114;;;;-1:-1:-1;;;27229:114:0;;13023:2:1;27229:114:0;;;13005:21:1;13062:2;13042:18;;;13035:30;13101:34;13081:18;;;13074:62;-1:-1:-1;;;13152:18:1;;;13145:42;13204:19;;27229:114:0;12821:408:1;27229:114:0;27354:15;27372:23;27384:10;:8;:10::i;:::-;27372:7;;:11;:23::i;:::-;-1:-1:-1;;;;;27424:15:0;;;;;;:7;:15;;;;;;27354:41;;-1:-1:-1;27424:28:0;;27354:41;27424:19;:28::i;:::-;-1:-1:-1;;;;;27406:15:0;;;;;;:7;:15;;;;;:46;27473:7;;:20;;27485:7;27473:11;:20::i;:::-;27463:7;:30;27517:10;;:23;;27532:7;27517:14;:23::i;:::-;27504:10;:36;-1:-1:-1;;;27137:411:0:o;30187:111::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30256:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30256:34:0::1;30286:4;30256:34;::::0;;30187:111::o;27879:579::-;27997:7;28041;;28030;:18;;28022:62;;;;-1:-1:-1;;;28022:62:0;;10029:2:1;28022:62:0;;;10011:21:1;10068:2;10048:18;;;10041:30;10107:33;10087:18;;;10080:61;10158:18;;28022:62:0;9827:355:1;28022:62:0;28100:17;28095:356;;28134:15;28152:23;28164:10;:8;:10::i;:::-;28152:7;;:11;:23::i;:::-;28134:41;-1:-1:-1;28190:14:0;;-1:-1:-1;28190:14:0;28095:356;28237:15;28255:23;28267:10;:8;:10::i;28255:23::-;28237:41;;28293:23;28319:83;28349:38;28376:10;:8;:10::i;:::-;28349:22;28363:7;28349:13;:22::i;:::-;:26;;:38::i;:::-;28319:7;;:11;:83::i;:::-;28293:109;-1:-1:-1;28417:22:0;;-1:-1:-1;;28417:22:0;30585:116;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30663:20:::1;:30:::0;30585:116::o;28796:332::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28877:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;28876:21;28868:61;;;::::0;-1:-1:-1;;;28868:61:0;;8274:2:1;28868:61:0::1;::::0;::::1;8256:21:1::0;8313:2;8293:18;;;8286:30;8352:29;8332:18;;;8325:57;8399:18;;28868:61:0::1;8072:351:1::0;28868:61:0::1;-1:-1:-1::0;;;;;28944:16:0;::::1;28963:1;28944:16:::0;;;:7:::1;:16;::::0;;;;;:20;28940:109:::1;;-1:-1:-1::0;;;;;29020:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;29000:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;28981:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;28940:109:::1;-1:-1:-1::0;;;;;29059:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;29059:27:0::1;29082:4;29059:27:::0;;::::1;::::0;;;29097:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;29097:23:0::1;::::0;;::::1;::::0;;28796:332::o;30709:156::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30819:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;30819:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30709:156::o;31453:108::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31523:21:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;31523:30:0;;::::1;::::0;;;::::1;::::0;;31453:108::o;24944:198::-;-1:-1:-1;;;;;25034:20:0;;25010:7;25034:20;;;:11;:20;;;;;;;;25030:49;;;-1:-1:-1;;;;;;25063:16:0;;;;;:7;:16;;;;;;;24944:198::o;25030:49::-;-1:-1:-1;;;;;25117:16:0;;;;;;:7;:16;;;;;;25097:37;;:19;:37::i;7398:157::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;7505:1:::1;7489:6:::0;;7468:40:::1;::::0;-1:-1:-1;;;;;7489:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;7468:40:0;7505:1;;7468:40:::1;7544:1;7519:28:::0;;-1:-1:-1;;;;;;7519:28:0::1;::::0;;7398:157::o;31036:120::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31120:13:::1;:28:::0;31036:120::o;24655:87::-;24694:13;24727:7;24720:14;;;;;:::i;30873:155::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30986:22:::1;:34:::0;30873:155::o;26509:397::-;26629:4;26651:225;3112:10;26701:7;26723:142;26780:15;26723:142;;;;;;;;;;;;;;;;;3112:10;26723:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26723:34:0;;;;;;;;;;;;:38;:142::i;8364:431::-;8430:14;;-1:-1:-1;;;;;8430:14:0;8448:10;8430:28;8408:113;;;;-1:-1:-1;;;8408:113:0;;14211:2:1;8408:113:0;;;14193:21:1;14250:2;14230:18;;;14223:30;14289:34;14269:18;;;14262:62;-1:-1:-1;;;14340:18:1;;;14333:33;14383:19;;8408:113:0;14009:399:1;8408:113:0;8572:9;;8554:15;:27;8532:114;;;;-1:-1:-1;;;8532:114:0;;6334:2:1;8532:114:0;;;6316:21:1;6373:2;6353:18;;;6346:30;6412:34;6392:18;;;6385:62;-1:-1:-1;;;6463:18:1;;;6456:35;6508:19;;8532:114:0;6132:401:1;8532:114:0;8691:14;;;8683:6;;8662:44;;-1:-1:-1;;;;;8691:14:0;;;;8683:6;;;;-1:-1:-1;;;;;;;;;;;8662:44:0;;8726:14;;;;8717:23;;-1:-1:-1;;;;;;8717:23:0;;;-1:-1:-1;;;;;8726:14:0;;8717:23;;;;8751:36;;;8364:431::o;27556:87::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;27617:10:::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27617:18:0;;::::1;::::0;;;::::1;::::0;;27556:87::o;25150:199::-;25255:4;25277:42;3112:10;25301:9;25312:6;25277:9;:42::i;31280:165::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31355:21:::1;:30:::0;;-1:-1:-1;;31355:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31401:36:::1;::::0;4837:41:1;;;31401:36:0::1;::::0;4825:2:1;4810:18;31401:36:0::1;;;;;;;31280:165:::0;:::o;27651:220::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;27713:11:::1;::::0;;;::::1;;;27712:12;27704:44;;;::::0;-1:-1:-1;;;27704:44:0;;9681:2:1;27704:44:0::1;::::0;::::1;9663:21:1::0;9720:2;9700:18;;;9693:30;-1:-1:-1;;;9739:18:1;;;9732:49;9798:18;;27704:44:0::1;9479:343:1::0;27704:44:0::1;27759:11;:18:::0;;27809:15:::1;27788:18;:36:::0;-1:-1:-1;;27835:28:0;;;;;27651:220::o;30447:130::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;30536:33:::1;30565:3;30536:24;30548:11;30536:7;;:11;;:24;;;;:::i;:::-;:28:::0;::::1;:33::i;:::-;30521:12;:48:::0;-1:-1:-1;30447:130:0:o;8057:235::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;8138:6:::1;::::0;;;8121:23;;-1:-1:-1;;;;;;8121:23:0;;::::1;-1:-1:-1::0;;;;;8138:6:0;::::1;8121:23;::::0;;;8155:28:::1;::::0;;8206:22:::1;8224:4:::0;8206:15:::1;:22;:::i;:::-;8194:9;:34:::0;8281:1:::1;8265:6:::0;;8244:40:::1;::::0;-1:-1:-1;;;;;8265:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;8244:40:0;8281:1;;8244:40:::1;8057:235:::0;:::o;30007:172::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30093:19:0;::::1;;::::0;;;:9:::1;:19;::::0;;;;;::::1;;30085:48;;;::::0;-1:-1:-1;;;30085:48:0;;8630:2:1;30085:48:0::1;::::0;::::1;8612:21:1::0;8669:2;8649:18;;;8642:30;-1:-1:-1;;;8688:18:1;;;8681:46;8744:18;;30085:48:0::1;8428:340:1::0;30085:48:0::1;-1:-1:-1::0;;;;;30144:19:0::1;30166:5;30144:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;30144:27:0::1;::::0;;30007:172::o;30306:110::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30373:27:0::1;30403:5;30373:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;30373:35:0::1;::::0;;30306:110::o;7563:321::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7706:22:0;::::1;7684:110;;;::::0;-1:-1:-1;;;7684:110:0;;7511:2:1;7684:110:0::1;::::0;::::1;7493:21:1::0;7550:2;7530:18;;;7523:30;7589:34;7569:18;;;7562:62;-1:-1:-1;;;7640:18:1;;;7633:36;7686:19;;7684:110:0::1;7309:402:1::0;7684:110:0::1;7831:6;::::0;;7810:38:::1;::::0;-1:-1:-1;;;;;7810:38:0;;::::1;::::0;7831:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;7810:38:0;::::1;7859:6;:17:::0;;-1:-1:-1;;;;;;7859:17:0::1;-1:-1:-1::0;;;;;7859:17:0;;;::::1;::::0;;;::::1;::::0;;7563:321::o;31725:151::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31838:13:::1;:30:::0;;-1:-1:-1;;;;;31838:30:0;;::::1;;;-1:-1:-1::0;;;;;;31838:30:0;;::::1;::::0;;;::::1;::::0;;31725:151::o;31884:103::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31956:15:::1;:23:::0;31884:103::o;31569:148::-;7311:6;;-1:-1:-1;;;;;7311:6:0;3112:10;7311:22;7303:67;;;;-1:-1:-1;;;7303:67:0;;;;;;;:::i;:::-;31680:12:::1;:29:::0;;-1:-1:-1;;;;;;31680:29:0::1;-1:-1:-1::0;;;;;31680:29:0;;;::::1;::::0;;;::::1;::::0;;31569:148::o;1699:471::-;1757:7;2002:6;1998:47;;-1:-1:-1;2032:1:0;2025:8;;1998:47;2057:9;2069:5;2073:1;2069;:5;:::i;:::-;2057:17;-1:-1:-1;2102:1:0;2093:5;2097:1;2057:17;2093:5;:::i;:::-;:10;2085:56;;;;-1:-1:-1;;;2085:56:0;;11153:2:1;2085:56:0;;;11135:21:1;11192:2;11172:18;;;11165:30;11231:34;11211:18;;;11204:62;-1:-1:-1;;;11282:18:1;;;11275:31;11323:19;;2085:56:0;10951:397:1;2178:132:0;2236:7;2263:39;2267:1;2270;2263:39;;;;;;;;;;;;;;;;;:3;:39::i;34968:365::-;-1:-1:-1;;;;;35095:19:0;;35087:65;;;;-1:-1:-1;;;35087:65:0;;11916:2:1;35087:65:0;;;11898:21:1;11955:2;11935:18;;;11928:30;11994:34;11974:18;;;11967:62;-1:-1:-1;;;12045:18:1;;;12038:31;12086:19;;35087:65:0;11714:397:1;35087:65:0;-1:-1:-1;;;;;35171:21:0;;35163:65;;;;-1:-1:-1;;;35163:65:0;;6740:2:1;35163:65:0;;;6722:21:1;6779:2;6759:18;;;6752:30;6818:33;6798:18;;;6791:61;6869:18;;35163:65:0;6538:355:1;35163:65:0;-1:-1:-1;;;;;35241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;35293:32;;14559:25:1;;;35293:32:0;;14532:18:1;35293:32:0;;;;;;;34968:365;;;:::o;35341:1965::-;-1:-1:-1;;;;;35463:18:0;;35455:65;;;;-1:-1:-1;;;35455:65:0;;10750:2:1;35455:65:0;;;10732:21:1;10789:2;10769:18;;;10762:30;10828:34;10808:18;;;10801:62;-1:-1:-1;;;10879:18:1;;;10872:32;10921:19;;35455:65:0;10548:398:1;35455:65:0;-1:-1:-1;;;;;35539:16:0;;35531:61;;;;-1:-1:-1;;;35531:61:0;;13436:2:1;35531:61:0;;;13418:21:1;;;13455:18;;;13448:30;13514:34;13494:18;;;13487:62;13566:18;;35531:61:0;13234:356:1;35531:61:0;35620:1;35611:6;:10;35603:68;;;;-1:-1:-1;;;35603:68:0;;13797:2:1;35603:68:0;;;13779:21:1;13836:2;13816:18;;;13809:30;13875:34;13855:18;;;13848:62;-1:-1:-1;;;13926:18:1;;;13919:43;13979:19;;35603:68:0;13595:409:1;35603:68:0;-1:-1:-1;;;;;35691:13:0;;;;;;:9;:13;;;;;;;;35690:14;35682:46;;;;-1:-1:-1;;;35682:46:0;;8975:2:1;35682:46:0;;;8957:21:1;9014:2;8994:18;;;8987:30;-1:-1:-1;;;9033:18:1;;;9026:49;9092:18;;35682:46:0;8773:343:1;35682:46:0;-1:-1:-1;;;;;35748:15:0;;;;;;:9;:15;;;;;;;;35747:16;35739:48;;;;-1:-1:-1;;;35739:48:0;;8975:2:1;35739:48:0;;;8957:21:1;9014:2;8994:18;;;8987:30;-1:-1:-1;;;9033:18:1;;;9026:49;9092:18;;35739:48:0;8773:343:1;35739:48:0;-1:-1:-1;;;;;35818:26:0;;;;;;:20;:26;;;;;;;;:35;;;:85;;-1:-1:-1;;;;;;35870:24:0;;;;;;:20;:24;;;;;;;;:33;35818:85;35800:853;;;35968:12;;35958:6;:22;;35950:58;;;;-1:-1:-1;;;35950:58:0;;12318:2:1;35950:58:0;;;12300:21:1;12357:2;12337:18;;;12330:30;12396:25;12376:18;;;12369:53;12439:18;;35950:58:0;12116:347:1;35950:58:0;36028:10;;;;;;;36023:114;;36073:11;-1:-1:-1;;;;;36067:17:0;:2;-1:-1:-1;;;;;36067:17:0;;;36059:62;;;;-1:-1:-1;;;36059:62:0;;10389:2:1;36059:62:0;;;10371:21:1;;;10408:18;;;10401:30;10467:34;10447:18;;;10440:62;10519:18;;36059:62:0;10187:356:1;36059:62:0;36158:11;;;;;;;36153:114;;36206:11;-1:-1:-1;;;;;36198:19:0;:4;-1:-1:-1;;;;;36198:19:0;;;36190:61;;;;-1:-1:-1;;;36190:61:0;;9323:2:1;36190:61:0;;;9305:21:1;9362:2;9342:18;;;9335:30;9401:31;9381:18;;;9374:59;9450:18;;36190:61:0;9121:353:1;36190:61:0;36344:15;;36323:18;;:36;;;;:::i;:::-;36305:15;:54;:105;;;;-1:-1:-1;36396:13:0;;-1:-1:-1;;;;;36380:30:0;;;36396:13;;;;;36380:30;;36305:105;36283:359;;;36457:11;-1:-1:-1;;;;;36449:19:0;:4;-1:-1:-1;;;;;36449:19:0;;36445:182;;;-1:-1:-1;;;;;36493:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;36493:20:0;36509:4;36493:20;;;36445:182;;;36549:11;-1:-1:-1;;;;;36543:17:0;:2;-1:-1:-1;;;;;36543:17:0;;36539:88;;;-1:-1:-1;;;;;36585:15:0;;;;;;:9;:15;;;;;:22;;-1:-1:-1;;36585:22:0;36603:4;36585:22;;;36539:88;36694:24;36709:4;36715:2;36694:14;:24::i;:::-;-1:-1:-1;;;;;36926:24:0;;36792:12;36926:24;;;:18;:24;;;;;;36807:4;;36926:24;;;:63;;-1:-1:-1;;;;;;36967:22:0;;;;;;:18;:22;;;;;;;;36926:63;:101;;;-1:-1:-1;37006:21:0;;;;;;;36926:101;36908:173;;;-1:-1:-1;37064:5:0;36908:173;37101:11;-1:-1:-1;;;;;37095:17:0;:2;-1:-1:-1;;;;;37095:17:0;;;:40;;;;;37124:11;-1:-1:-1;;;;;37116:19:0;:4;-1:-1:-1;;;;;37116:19:0;;;37095:40;37091:88;;;-1:-1:-1;37162:5:0;37091:88;37257:41;37272:4;37278:2;37282:6;37290:7;37257:14;:41::i;:::-;35444:1862;35341:1965;;;:::o;1465:226::-;1585:7;1621:12;1613:6;;;;1605:29;;;;-1:-1:-1;;;1605:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1645:9:0;1657:5;1661:1;1657;:5;:::i;:::-;1645:17;1465:226;-1:-1:-1;;;;;1465:226:0:o;32602:164::-;32644:7;32665:15;32682;32701:19;:17;:19::i;:::-;32664:56;;-1:-1:-1;32664:56:0;-1:-1:-1;32738:20:0;32664:56;;32738:11;:20::i;:::-;32731:27;;;;32602:164;:::o;1132:181::-;1190:7;;1222:5;1226:1;1222;:5;:::i;:::-;1210:17;;1251:1;1246;:6;;1238:46;;;;-1:-1:-1;;;1238:46:0;;7918:2:1;1238:46:0;;;7900:21:1;7957:2;7937:18;;;7930:30;7996:29;7976:18;;;7969:57;8043:18;;1238:46:0;7716:351:1;1321:136:0;1379:7;1406:43;1410:1;1413;1406:43;;;;;;;;;;;;;;;;;:3;:43::i;32087:247::-;32150:7;32170:18;32191:107;32294:3;32191:84;32217:57;32263:10;;32217:41;32244:13;;32217:22;;:26;;:41;;;;:::i;:::-;:45;;:57::i;:::-;32191:7;;:25;:84::i;2318:312::-;2438:7;2473:12;2466:5;2458:28;;;;-1:-1:-1;;;2458:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2497:9:0;2509:5;2513:1;2509;:5;:::i;41321:2342::-;41672:28;41703:24;41721:4;41703:9;:24::i;:::-;41672:55;;41768:12;;41744:20;:36;41740:104;;-1:-1:-1;41820:12:0;;41740:104;41898:20;;41950:16;;41874:44;;;;;41950:16;;;;;41949:17;:44;;;;;41983:10;41949:44;:80;;;;;42018:11;-1:-1:-1;;;;;42010:19:0;:4;-1:-1:-1;;;;;42010:19:0;;;41949:80;:118;;;;-1:-1:-1;42046:21:0;;;;41949:118;:189;;;;-1:-1:-1;;;;;;42086:21:0;;42102:4;42086:21;:51;;;;;42125:11;-1:-1:-1;;;;;42111:26:0;:2;-1:-1:-1;;;;;42111:26:0;;42086:51;42084:54;41949:189;41931:1725;;;42203:20;;42180:43;;42240:20;42263:29;42281:10;;42263:13;;:17;;:29;;;;:::i;:::-;42240:52;;42307:17;42327:81;42392:1;42327:42;42356:12;42327:24;42347:3;42328:13;;42327:19;;:24;;;;:::i;:81::-;42307:101;;42423:16;42442:37;42466:12;42442:19;42457:3;42442:10;;:14;;:19;;;;:::i;:37::-;42423:56;;42529:135;42564:4;42596:13;;;;;;;;;-1:-1:-1;;;;;42596:13:0;42629:20;42529:8;:135::i;:::-;42770:18;42791:44;42831:3;42791:35;:20;42816:9;42791:24;:35::i;:44::-;42770:65;-1:-1:-1;42850:30:0;42883:68;:20;42770:65;42883:24;:68::i;:::-;43017:13;;42850:101;;-1:-1:-1;42968:119:0;;43017:13;;;-1:-1:-1;;;;;43017:13:0;42850:101;42968:22;:119::i;:::-;43127:21;43180:23;:9;43194:8;43180:13;:23::i;:::-;43165:38;-1:-1:-1;43220:31:0;43254:77;43165:38;43254:27;:12;43271:9;43254:16;:27::i;:77::-;43434:13;;43220:111;;-1:-1:-1;43389:171:0;;-1:-1:-1;;;;;43434:13:0;;;;;43467:7;7222;7249:6;-1:-1:-1;;;;;7249:6:0;;7184:79;43467:7;43493:10;43522:23;43389:18;:171::i;:::-;43577:12;;-1:-1:-1;;;;;43577:12:0;:67;43599:44;43630:12;43599:26;:12;43616:8;43599:16;:26::i;:44::-;43577:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42165:1491;;;;;;;41379:2284;;41321:2342;;:::o;37387:708::-;37543:7;37538:28;;37552:14;34411:22;;;34378:30;:55;34468:13;;;34444:21;:37;34513:10;;;34492:18;:31;-1:-1:-1;34536:26:0;;;;34573:17;;;;34601:14;34335:288;37552:14;-1:-1:-1;;;;;37583:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;37607:22:0;;;;;;:11;:22;;;;;;;;37606:23;37583:46;37579:467;;;37646:48;37668:6;37676:9;37687:6;37646:21;:48::i;:::-;37579:467;;;-1:-1:-1;;;;;37717:19:0;;;;;;:11;:19;;;;;;;;37716:20;:46;;;;-1:-1:-1;;;;;;37740:22:0;;;;;;:11;:22;;;;;;;;37716:46;37712:334;;;37779:46;37799:6;37807:9;37818:6;37779:19;:46::i;37712:334::-;-1:-1:-1;;;;;37847:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37870:22:0;;;;;;:11;:22;;;;;;;;37847:45;37843:203;;;37909:48;37931:6;37939:9;37950:6;37909:21;:48::i;37843:203::-;37990:44;38008:6;38016:9;38027:6;37990:17;:44::i;:::-;38063:7;38058:29;;38072:15;34700:30;;34675:22;:55;34757:21;;34741:13;:37;34802:18;;34789:10;:31;34631:197;32774:605;32872:7;;32908;;32825;;;;;32926:338;32950:9;:16;32946:20;;32926:338;;;33034:7;33010;:21;33018:9;33028:1;33018:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33018:12:0;33010:21;;;;;;;;;;;;;:31;;:83;;;33086:7;33062;:21;33070:9;33080:1;33070:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33070:12:0;33062:21;;;;;;;;;;;;;:31;33010:83;32988:146;;;33117:7;;33126;;33109:25;;;;;;;32774:605;;:::o;32988:146::-;33159:34;33171:7;:21;33179:9;33189:1;33179:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33179:12:0;33171:21;;;;;;;;;;;;;33159:7;;:11;:34::i;:::-;33149:44;;33218:34;33230:7;:21;33238:9;33248:1;33238:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33238:12:0;33230:21;;;;;;;;;;;;;33218:7;;:11;:34::i;:::-;33208:44;-1:-1:-1;32968:3:0;;;;:::i;:::-;;;;32926:338;;;-1:-1:-1;33300:7:0;;33288;;:20;;:11;:20::i;:::-;33278:7;:30;33274:61;;;33318:7;;33327;;33310:25;;;;;;32774:605;;:::o;33274:61::-;33354:7;;33363;;-1:-1:-1;32774:605:0;-1:-1:-1;32774:605:0:o;18192:633::-;18459:16;;;18473:1;18459:16;;;;;;;;18348:13;;18296:31;;18459:16;18473:1;18459:16;;;;;;;;;;-1:-1:-1;18459:16:0;18435:40;;18504:4;18486;18491:1;18486:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18486:23:0;;;-1:-1:-1;;;;;18486:23:0;;;;;18530:13;-1:-1:-1;;;;;18530:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18520:4;18525:1;18520:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18520:30:0;;;:7;;;;;;;;;:30;18589:64;;;18668:11;18694:1;18738:4;18765;18785:21;:15;18803:3;18785:21;:::i;:::-;18589:228;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18285:540;;18192:633;;:::o;19532:534::-;19747:13;-1:-1:-1;;;;;19804:29:0;;;19841:9;19874:4;19894:11;19695:31;;20006:5;20026:21;:15;20044:3;20026:21;:::i;:::-;19804:254;;;;;;-1:-1:-1;;;;;;19804:254:0;;;-1:-1:-1;;;;;4444:15:1;;;19804:254:0;;;4426:34:1;4476:18;;;4469:34;;;;4519:18;;;4512:34;;;;4562:18;;;4555:34;;;;4626:15;;;4605:19;;;4598:44;4658:19;;;4651:35;;;;4360:19;;19804:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;39652:791::-;39788:19;39810:10;:8;:10::i;:::-;39788:32;;39831:23;39857:35;39869:22;39883:7;39869:13;:22::i;:::-;39857:7;;:11;:35::i;:::-;39831:61;-1:-1:-1;39903:15:0;39921:24;:7;39933:11;39921;:24::i;:::-;39903:42;;39956:23;39982:76;40008:39;40035:11;40008:22;40022:7;40008:13;:22::i;39982:76::-;-1:-1:-1;;;;;40087:15:0;;;;;;:7;:15;;;;;;39956:102;;-1:-1:-1;40087:28:0;;40107:7;40087:19;:28::i;:::-;-1:-1:-1;;;;;40069:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40144:7;:15;;;;:28;;40164:7;40144:19;:28::i;:::-;-1:-1:-1;;;;;40126:15:0;;;;;;;:7;:15;;;;;;:46;;;;40204:18;;;;;;;:39;;40227:15;40204:22;:39::i;:::-;-1:-1:-1;;;;;40183:18:0;;;;;;:7;:18;;;;;:60;40254:43;40276:7;40285:11;40254:21;:43::i;:::-;40308:36;40323:7;40332:11;40308:14;:36::i;:::-;40355:20;40367:7;40355:11;:20::i;:::-;40408:9;-1:-1:-1;;;;;40391:44:0;40400:6;-1:-1:-1;;;;;40391:44:0;;40419:15;40391:44;;;;14559:25:1;;14547:2;14532:18;;14413:177;40391:44:0;;;;;;;;39777:666;;;;39652:791;;;:::o;38841:803::-;38975:19;38997:10;:8;:10::i;:::-;38975:32;;39018:23;39044:35;39056:22;39070:7;39056:13;:22::i;39044:35::-;39018:61;-1:-1:-1;39090:15:0;39108:24;:7;39120:11;39108;:24::i;:::-;39090:42;;39143:23;39169:76;39195:39;39222:11;39195:22;39209:7;39195:13;:22::i;39169:76::-;-1:-1:-1;;;;;39274:15:0;;;;;;:7;:15;;;;;;39143:102;;-1:-1:-1;39274:28:0;;39294:7;39274:19;:28::i;:::-;-1:-1:-1;;;;;39256:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;39334:18;;;;;:7;:18;;;;;:39;;39357:15;39334:22;:39::i;:::-;-1:-1:-1;;;;;39313:18:0;;;;;;:7;:18;;;;;;;;:60;;;;39405:7;:18;;;;:39;;39428:15;39405:22;:39::i;40451:862::-;40587:19;40609:10;:8;:10::i;:::-;40587:32;;40630:23;40656:35;40668:22;40682:7;40668:13;:22::i;40656:35::-;40630:61;-1:-1:-1;40702:15:0;40720:24;:7;40732:11;40720;:24::i;:::-;40702:42;;40755:23;40781:76;40807:39;40834:11;40807:22;40821:7;40807:13;:22::i;40781:76::-;-1:-1:-1;;;;;40886:15:0;;;;;;:7;:15;;;;;;40755:102;;-1:-1:-1;40886:28:0;;40906:7;40886:19;:28::i;:::-;-1:-1:-1;;;;;40868:15:0;;;;;;:7;:15;;;;;;;;:46;;;;40943:7;:15;;;;:28;;40963:7;40943:19;:28::i;38103:730::-;38235:19;38257:10;:8;:10::i;:::-;38235:32;;38278:23;38304:35;38316:22;38330:7;38316:13;:22::i;38304:35::-;38278:61;-1:-1:-1;38350:15:0;38368:24;:7;38380:11;38368;:24::i;:::-;38350:42;;38403:23;38429:76;38455:39;38482:11;38455:22;38469:7;38455:13;:22::i;38429:76::-;-1:-1:-1;;;;;38534:15:0;;;;;;:7;:15;;;;;;38403:102;;-1:-1:-1;38534:28:0;;38554:7;38534:19;:28::i;33387:472::-;33490:16;33509:35;33540:3;33509:26;33521:13;;33509:7;:11;;:26;;;;:::i;:35::-;33490:54;-1:-1:-1;33555:16:0;33574:25;33490:54;33587:11;33574:12;:25::i;:::-;33651:4;33635:22;;;;:7;:22;;;;;;33555:44;;-1:-1:-1;33635:36:0;;33555:44;33635:26;:36::i;:::-;33626:4;33610:22;;;;:7;:22;;;;;;;;:61;;;;33686:11;:26;;;;;;33682:106;;;33768:4;33752:22;;;;:7;:22;;;;;;:36;;33779:8;33752:26;:36::i;:::-;33743:4;33727:22;;;;:7;:22;;;;;:61;33682:106;33804:47;;14559:25:1;;;33835:4:0;;3112:10;;33804:47;;14547:2:1;14532:18;33804:47:0;;;;;;;33479:380;;33387:472;;:::o;33867:460::-;33949:18;33970:32;33998:3;33970:23;33982:10;;33970:7;:11;;:23;;;;:::i;32342:252::-;32399:12;32414:44;32454:3;32414:35;32426:22;;32414:7;:11;;:35;;;;:::i;:44::-;32399:59;;32469:12;32484:20;32493:10;:8;:10::i;:::-;32484:4;;:8;:20::i;:::-;32525:7;;32469:35;;-1:-1:-1;32525:17:0;;32469:35;32525:11;:17::i;:::-;32515:7;:27;32566:10;;:20;;32581:4;32566:14;:20::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;947:388::-;1015:6;1023;1076:2;1064:9;1055:7;1051:23;1047:32;1044:52;;;1092:1;1089;1082:12;1044:52;1131:9;1118:23;1150:31;1175:5;1150:31;:::i;:::-;1200:5;-1:-1:-1;1257:2:1;1242:18;;1229:32;1270:33;1229:32;1270:33;:::i;:::-;1322:7;1312:17;;;947:388;;;;;:::o;1340:456::-;1417:6;1425;1433;1486:2;1474:9;1465:7;1461:23;1457:32;1454:52;;;1502:1;1499;1492:12;1454:52;1541:9;1528:23;1560:31;1585:5;1560:31;:::i;:::-;1610:5;-1:-1:-1;1667:2:1;1652:18;;1639:32;1680:33;1639:32;1680:33;:::i;:::-;1340:456;;1732:7;;-1:-1:-1;;;1786:2:1;1771:18;;;;1758:32;;1340:456::o;1801:315::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:52;;;1943:1;1940;1933:12;1895:52;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2075:35:1;2106:2;2091:18;;2075:35;:::i;:::-;2065:45;;1801:315;;;;;:::o;2121:::-;2189:6;2197;2250:2;2238:9;2229:7;2225:23;2221:32;2218:52;;;2266:1;2263;2256:12;2218:52;2305:9;2292:23;2324:31;2349:5;2324:31;:::i;:::-;2374:5;2426:2;2411:18;;;;2398:32;;-1:-1:-1;;;2121:315:1:o;2441:180::-;2497:6;2550:2;2538:9;2529:7;2525:23;2521:32;2518:52;;;2566:1;2563;2556:12;2518:52;2589:26;2605:9;2589:26;:::i;2904:180::-;2963:6;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;-1:-1:-1;3055:23:1;;2904:180;-1:-1:-1;2904:180:1:o;3089:248::-;3154:6;3162;3215:2;3203:9;3194:7;3190:23;3186:32;3183:52;;;3231:1;3228;3221:12;3183:52;3267:9;3254:23;3244:33;;3296:35;3327:2;3316:9;3312:18;3296:35;:::i;3342:306::-;3430:6;3438;3446;3499:2;3487:9;3478:7;3474:23;3470:32;3467:52;;;3515:1;3512;3505:12;3467:52;3544:9;3538:16;3528:26;;3594:2;3583:9;3579:18;3573:25;3563:35;;3638:2;3627:9;3623:18;3617:25;3607:35;;3342:306;;;;;:::o;5123:597::-;5235:4;5264:2;5293;5282:9;5275:21;5325:6;5319:13;5368:6;5363:2;5352:9;5348:18;5341:34;5393:1;5403:140;5417:6;5414:1;5411:13;5403:140;;;5512:14;;;5508:23;;5502:30;5478:17;;;5497:2;5474:26;5467:66;5432:10;;5403:140;;;5561:6;5558:1;5555:13;5552:91;;;5631:1;5626:2;5617:6;5606:9;5602:22;5598:31;5591:42;5552:91;-1:-1:-1;5704:2:1;5683:15;-1:-1:-1;;5679:29:1;5664:45;;;;5711:2;5660:54;;5123:597;-1:-1:-1;;;5123:597:1:o;11353:356::-;11555:2;11537:21;;;11574:18;;;11567:30;11633:34;11628:2;11613:18;;11606:62;11700:2;11685:18;;11353:356::o;14595:980::-;14857:4;14905:3;14894:9;14890:19;14936:6;14925:9;14918:25;14962:2;15000:6;14995:2;14984:9;14980:18;14973:34;15043:3;15038:2;15027:9;15023:18;15016:31;15067:6;15102;15096:13;15133:6;15125;15118:22;15171:3;15160:9;15156:19;15149:26;;15210:2;15202:6;15198:15;15184:29;;15231:1;15241:195;15255:6;15252:1;15249:13;15241:195;;;15320:13;;-1:-1:-1;;;;;15316:39:1;15304:52;;15411:15;;;;15376:12;;;;15352:1;15270:9;15241:195;;;-1:-1:-1;;;;;;;15492:32:1;;;;15487:2;15472:18;;15465:60;-1:-1:-1;;;15556:3:1;15541:19;15534:35;15453:3;14595:980;-1:-1:-1;;;14595:980:1:o;15769:128::-;15809:3;15840:1;15836:6;15833:1;15830:13;15827:39;;;15846:18;;:::i;:::-;-1:-1:-1;15882:9:1;;15769:128::o;15902:217::-;15942:1;15968;15958:132;;16012:10;16007:3;16003:20;16000:1;15993:31;16047:4;16044:1;16037:15;16075:4;16072:1;16065:15;15958:132;-1:-1:-1;16104:9:1;;15902:217::o;16124:168::-;16164:7;16230:1;16226;16222:6;16218:14;16215:1;16212:21;16207:1;16200:9;16193:17;16189:45;16186:71;;;16237:18;;:::i;:::-;-1:-1:-1;16277:9:1;;16124:168::o;16297:125::-;16337:4;16365:1;16362;16359:8;16356:34;;;16370:18;;:::i;:::-;-1:-1:-1;16407:9:1;;16297:125::o;16427:380::-;16506:1;16502:12;;;;16549;;;16570:61;;16624:4;16616:6;16612:17;16602:27;;16570:61;16677:2;16669:6;16666:14;16646:18;16643:38;16640:161;;;16723:10;16718:3;16714:20;16711:1;16704:31;16758:4;16755:1;16748:15;16786:4;16783:1;16776:15;16640:161;;16427:380;;;:::o;16812:135::-;16851:3;-1:-1:-1;;16872:17:1;;16869:43;;;16892:18;;:::i;:::-;-1:-1:-1;16939:1:1;16928:13;;16812:135::o;16952:127::-;17013:10;17008:3;17004:20;17001:1;16994:31;17044:4;17041:1;17034:15;17068:4;17065:1;17058:15;17084:127;17145:10;17140:3;17136:20;17133:1;17126:31;17176:4;17173:1;17166:15;17200:4;17197:1;17190:15;17216:127;17277:10;17272:3;17268:20;17265:1;17258:31;17308:4;17305:1;17298:15;17332:4;17329:1;17322:15;17480:131;-1:-1:-1;;;;;17555:31:1;;17545:42;;17535:70;;17601:1;17598;17591:12;17535:70;17480:131;:::o
Swarm Source
ipfs://ffe073ac9467929a0a62da1ab51703b00175cd81ebace499e92bdce47f023b0f
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.