ETH Price: $3,262.22 (-0.60%)
Gas: 3 Gwei

Token

Rhombus Legends (RMB)
 

Overview

Max Total Supply

1,000,000 RMB

Holders

50 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,017.731256429 RMB

Value
$0.00
0x47311fcD99cfb2F0764054b2546cBE0467d98fD2
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Rhombus is a world of magic where there is a war between powerful factions for dominance. Join one of the parties: mystics, alchemists, elves or magicians.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RMB

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-06
*/

/**                                                                             

____/\\\\\\\\\______/\\\\____________/\\\\__/\\\\\\\\\\\\\___        
 __/\\\///////\\\___\/\\\\\\________/\\\\\\_\/\\\/////////\\\_       
  _\/\\\_____\/\\\___\/\\\//\\\____/\\\//\\\_\/\\\_______\/\\\_      
   _\/\\\\\\\\\\\/____\/\\\\///\\\/\\\/_\/\\\_\/\\\\\\\\\\\\\\__     
    _\/\\\//////\\\____\/\\\__\///\\\/___\/\\\_\/\\\/////////\\\_    
     _\/\\\____\//\\\___\/\\\____\///_____\/\\\_\/\\\_______\/\\\_   
      _\/\\\_____\//\\\__\/\\\_____________\/\\\_\/\\\_______\/\\\_  
       _\/\\\______\//\\\_\/\\\_____________\/\\\_\/\\\\\\\\\\\\\/__ 
        _\///________\///__\///______________\///__\/////////////____

Wes hāl to Rhombus Legends - P2E RPG Card Game on the Ethereum Blockchain.

🔶 Multiplayer P2E
🔶 PvP and PvE
🔶 Staking
🔶 Yield System
🔶 NFT Marketplace
🔶 Lottery

Taxes 7% | 7%
3% developers
3% marketing
1% liquidity

Website: https://rhombuslegends.com
Telegram: https://t.me/rhombuslegends
Discord: https://discord.gg/rhombuslegends
Twitter: https://twitter.com/rhombuslegends

Game: https://play.rhombuslegends.com
Earn: https://earn.rhombuslegends.com

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

abstract contract Context {
 function _msgSender() internal view virtual returns (address) {
 return msg.sender;
 }

 function _msgData() internal view virtual returns (bytes calldata) {
 return msg.data;
 }
}

interface IERC20 {
 function totalSupply() external view returns (uint256);

 function balanceOf(address account) external view returns (uint256);

 function transfer(address recipient, uint256 amount) external returns (bool);

 function allowance(address owner, address spender) external view returns (uint256);

 function approve(address spender, uint256 amount) external returns (bool);

 function transferFrom(
 address sender,
 address recipient,
 uint256 amount
 ) external returns (bool);

 event Transfer(address indexed from, address indexed to, uint256 value);

 event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
 function add(uint256 a, uint256 b) internal pure returns (uint256) {
 return a + b;
 }

 function sub(uint256 a, uint256 b) internal pure returns (uint256) {
 return a - b;
 }

 function mul(uint256 a, uint256 b) internal pure returns (uint256) {
 return a * b;
 }

 function div(uint256 a, uint256 b) internal pure returns (uint256) {
 return a / b;
 }

 function mod(uint256 a, uint256 b) internal pure returns (uint256) {
 return a % b;
 }

 function sub(
 uint256 a,
 uint256 b,
 string memory errorMessage
 ) internal pure returns (uint256) {
 unchecked {
 require(b <= a, errorMessage);
 uint256 c = a - b;
 return c;
 }
 }

 function div(
 uint256 a,
 uint256 b,
 string memory errorMessage
 ) internal pure returns (uint256) {
 unchecked {
 require(b > 0, errorMessage);
 return a / b;
 }
 }

 function mod(
 uint256 a,
 uint256 b,
 string memory errorMessage
 ) internal pure returns (uint256) {
 unchecked {
 require(b > 0, errorMessage);
 return a % b;
 }
 }
}

library Address {
 function isContract(address account) internal view returns (bool) {
 uint256 size;
 assembly {
 size := extcodesize(account)
 }
 return size > 0;
 }

 function sendValue(address payable recipient, uint256 amount) internal {
 require(address(this).balance >= amount, "Address: insufficient balance");

 (bool success, ) = recipient.call{value: amount}("");
 require(success, "Address: unable to send value, recipient may have reverted");
 }
}

abstract contract Ownable is Context {
 address private _owner;

 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

 constructor() {
 _transferOwnership(_msgSender());
 }

 function owner() public view virtual returns (address) {
 return _owner;
 }

 modifier onlyOwner() {
 require(owner() == _msgSender(), "Ownable: caller is not the owner");
 _;
 }

 function renounceOwnership() public virtual onlyOwner {
 _transferOwnership(address(0));
 }

 function transferOwnership(address newOwner) public virtual onlyOwner {
 require(newOwner != address(0), "Ownable: new owner is the zero address");
 _transferOwnership(newOwner);
 }

 function _transferOwnership(address newOwner) internal virtual {
 address oldOwner = _owner;
 _owner = newOwner;
 emit OwnershipTransferred(oldOwner, newOwner);
 }
}

interface IUniswapV2Factory {
 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 IUniswapV2Pair {
 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 IUniswapV2Router {
 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);

 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;
}

contract RMB is Context, IERC20, Ownable {
 using SafeMath for uint256;
 using Address for address;

 mapping(address => uint256) private _balances;
 mapping(address => mapping(address => uint256)) private _allowances;

 string private _name = "Rhombus Legends";
 string private _symbol = "RMB";

 uint256 private _decimals = 9;
 uint256 private _totalSupply = 1000000 * 10**_decimals;
 uint256 private _maxBuy = _totalSupply.mul(5).div(1000);
 uint256 private _maxSell = _totalSupply.mul(5).div(1000);
 uint256 private _previousMaxSell = _maxSell;
 uint256 private _maxWallet = _totalSupply.mul(5).div(1000);

 mapping(address => uint256) private _lastBuy;
 mapping(address => uint256) private _lastSell;

 mapping(address => bool) private _isExcludedFromFee;
 mapping(address => bool) private _isBlackListed;
 mapping(address => bool) private _isWhiteListed;

 bool private _enableTrading = false;
 bool private _stopSnipe = true;

 uint256 private _liquidityFeeBuy = 10;
 uint256 private _previousLiquidityFeeBuy = _liquidityFeeBuy;
 uint256 private _liquidityFeeSell = 10;
 uint256 private _previousLiquidityFeeSell = _liquidityFeeSell;

 uint256 private _buybackWalletFeeBuy = 30;
 uint256 private _previousBuybackWalletFeeBuy = _buybackWalletFeeBuy;
 uint256 private _buybackWalletFeeSell = 30;
 uint256 private _previousBuybackWalletFeeSell = _buybackWalletFeeSell;

 uint256 private _marketingFeeBuy = 30;
 uint256 private _previousMarketingFeeBuy = _marketingFeeBuy;
 uint256 private _marketingFeeSell = 30;
 uint256 private _previousMarketingFeeSell = _marketingFeeSell;

 address payable private _developerWallet = payable(0xD361C95d0356690cbF06C0DEf397a0Ae71F3286A);
 address payable private _marketingWallet = payable(0xF767B4e5A1C87945148031f49Aa3D1faA2640Ccb);

 uint256 private _lastAntiWhalePoint = block.timestamp;
 bool private _antiWhaleEnabled = false;

 uint256 private _accumulatedAmountForLiquidity = 0;
 uint256 private _accumulatedAmountForBBW = 0;
 uint256 private _accumulatedAmountForMarketing = 0;
 uint256 private _numTokensForSwap = 2500 * 10**_decimals;
 bool public _swapAndLiquifyEnabled = true;
 bool private _inSwapAndLiquify = false;

 uint256 public buybackBalance = 0;
 uint256 public marketingBalance = 0;

 address public constant _swapRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
 IUniswapV2Router public _uniswapV2Router = IUniswapV2Router(_swapRouterAddress);
 address public _uniswapV2Pair;

 bool public blackListInstead;

 uint256 public deadBlockNumber = 2;

 mapping (address => uint256) public lastBlock;

 event SwapAndLiquifyEnabledUpdated(bool enabled);
 event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

 modifier lockTheSwap() {
 _inSwapAndLiquify = true;
 _;
 _inSwapAndLiquify = false;
 }

 receive() external payable {}

 constructor() {
 _balances[_msgSender()] = _totalSupply;
 _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

 _isExcludedFromFee[owner()] = true;
 _isExcludedFromFee[address(this)] = true;
 _isExcludedFromFee[address(0)] = true;
 _isExcludedFromFee[_developerWallet] = true;
 _isExcludedFromFee[_marketingWallet] = true;

 _isWhiteListed[address(this)] = true;

 emit Transfer(address(0), _msgSender(), _totalSupply);
 }

 function name() public view returns (string memory) {
 return _name;
 }

 function symbol() public view returns (string memory) {
 return _symbol;
 }

 function decimals() public view returns (uint256) {
 return _decimals;
 }

 function totalSupply() public view override returns (uint256) {
 return _totalSupply;
 }

 function balanceOf(address account) public view override returns (uint256) {
 return _balances[account];
 }

 function allowance(address owner, address spender) public view override returns (uint256) {
 return _allowances[owner][spender];
 }

 function transfer(address recipient, uint256 amount) public override returns (bool) {
 _transfer(_msgSender(), recipient, amount);
 return true;
 }

 function approve(address spender, uint256 amount) public override returns (bool) {
 _approve(_msgSender(), spender, amount);
 return true;
 }

 function transferFrom(
 address sender,
 address recipient,
 uint256 amount
 ) public override returns (bool) {
 _transfer(sender, recipient, amount);
 _approve(
 sender,
 _msgSender(),
 _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance.")
 );
 return true;
 }

 function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
 _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
 return true;
 }

 function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
 _approve(
 _msgSender(),
 spender,
 _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero.")
 );
 return true;
 }

 function removeAllFee() private {
 if (_liquidityFeeBuy == 0 && _buybackWalletFeeBuy == 0 && _marketingFeeBuy == 0) return;
 if (_liquidityFeeSell == 0 && _buybackWalletFeeSell == 0 && _marketingFeeSell == 0) return;

 _previousLiquidityFeeBuy = _liquidityFeeBuy;
 _previousBuybackWalletFeeBuy = _buybackWalletFeeBuy;
 _previousMarketingFeeBuy = _marketingFeeBuy;

 _previousLiquidityFeeSell = _liquidityFeeSell;
 _previousBuybackWalletFeeSell = _buybackWalletFeeSell;
 _previousMarketingFeeSell = _marketingFeeSell;

 _liquidityFeeBuy = 0;
 _buybackWalletFeeBuy = 0;
 _marketingFeeBuy = 0;

 _liquidityFeeSell = 0;
 _buybackWalletFeeSell = 0;
 _marketingFeeSell = 0;
 }

 function isExcludedFromFee(address account) public view returns (bool) {
 return _isExcludedFromFee[account];
 }

 function isWhiteListed(address account) public view returns (bool) {
 return _isWhiteListed[account];
 }

 function isBlackListed(address account) public view returns (bool) {
 return _isBlackListed[account];
 }

 function _maxTxAmount() public view returns(uint256) {
 return _maxBuy > _maxSell ? _maxBuy : _maxSell;
 }

 function getMaxTxB() public view returns (uint256) {
 return _maxBuy;
 }

 function getMaxTxS() public view returns (uint256) {
 return _maxSell;
 }

 function getMaxWal() public view returns (uint256) {
 return _maxWallet;
 }

 function isTradingEnabled() public view returns (bool) {
 return _enableTrading;
 }

 function isStopSnipeEnabled() public view returns (bool) {
 return _stopSnipe;
 }

 function getLiquidityFeeForBuy() public view returns (uint256) {
 return _liquidityFeeBuy;
 }

 function getLiquidityFeeForSell() public view returns (uint256) {
 return _liquidityFeeSell;
 }

 function getBuybackWalletFeeForBuy() public view returns (uint256) {
 return _buybackWalletFeeBuy;
 }

 function getBuybackWalletFeeForSell() public view returns (uint256) {
 return _buybackWalletFeeSell;
 }

 function getMarketingFeeForBuy() public view returns (uint256) {
 return _marketingFeeBuy;
 }

 function getMarketingFeeForSell() public view returns (uint256) {
 return _marketingFeeSell;
 }

 function getBuybackWallet() public view returns (address payable) {
 return _developerWallet;
 }

 function getMarketingWallet() public view returns (address) {
 return _marketingWallet;
 }

 function isAntiWhaleEnabled() public view returns (bool) {
 return _antiWhaleEnabled;
 }

 function getNumberOfTokensForSwap() public view returns (uint256) {
 return _numTokensForSwap;
 }

 function isSwapAndLiquifyEnabled() public view returns (bool) {
 return _swapAndLiquifyEnabled;
 }

 function getAccumulatedAmountForLiquidity() public view returns(uint256) {
 return _accumulatedAmountForLiquidity;
 }

 function getAccumulatedAmountForBBW() public view returns(uint256) {
 return _accumulatedAmountForBBW;
 }

 function getAccumulatedAmountForMarketing() public view returns(uint256) {
 return _accumulatedAmountForMarketing;
 }

 function restoreAllFee() private {
 _liquidityFeeBuy = _previousLiquidityFeeBuy;
 _buybackWalletFeeBuy = _previousBuybackWalletFeeBuy;
 _marketingFeeBuy = _previousMarketingFeeBuy;

 _liquidityFeeSell = _previousLiquidityFeeSell;
 _buybackWalletFeeSell = _previousBuybackWalletFeeSell;
 _marketingFeeSell = _previousMarketingFeeSell;
 }

 function _approve(
 address owner,
 address spender,
 uint256 amount
 ) private {
 require(owner != address(0), "ERC20: approve from the zero address.");
 require(spender != address(0), "ERC20: approve to the zero address.");
 _allowances[owner][spender] = amount;
 emit Approval(owner, spender, amount);
 }

 function swapAndLiquify() private lockTheSwap {
 uint256 liquidityInitial = 0;
 uint256 firstHalfForLiquidity = 0;
 uint256 secondHalfForLiquidity = 0;

 if (_accumulatedAmountForLiquidity > 0) {
 liquidityInitial = _accumulatedAmountForLiquidity.mul(10000).div(balanceOf(address(this))).mul(_numTokensForSwap).div(10000);
 firstHalfForLiquidity = liquidityInitial.div(2);
 secondHalfForLiquidity = liquidityInitial.sub(firstHalfForLiquidity);
 }

 uint256 bbwInitial = 0;

 if (_accumulatedAmountForBBW > 0) {
 bbwInitial = _accumulatedAmountForBBW.mul(10000).div(balanceOf(address(this))).mul(_numTokensForSwap).div(10000);
 }

 uint256 marketingInitial = 0;

 if (_accumulatedAmountForMarketing > 0) {
 marketingInitial = _accumulatedAmountForMarketing.mul(10000).div(balanceOf(address(this))).mul(_numTokensForSwap).div(10000);
 }

 uint256 totalTokens = firstHalfForLiquidity.add(bbwInitial).add(marketingInitial);

 uint256 initialBalance = address(this).balance;
 swapTokensForETH(totalTokens);
 uint256 balance = address(this).balance.sub(initialBalance);

 if (liquidityInitial > 0) {
 uint256 liquidityBalance = balance.mul(firstHalfForLiquidity.mul(10000).div(totalTokens)).div(10000);
 addLiquidity(secondHalfForLiquidity, liquidityBalance);
 _accumulatedAmountForLiquidity = _accumulatedAmountForLiquidity.sub(liquidityInitial);
 emit SwapAndLiquify(firstHalfForLiquidity, liquidityBalance, secondHalfForLiquidity);
 }

 if (bbwInitial > 0) {
 buybackBalance = buybackBalance.add(balance.mul(bbwInitial.mul(10000).div(totalTokens)).div(10000));
 _accumulatedAmountForBBW = _accumulatedAmountForBBW.sub(bbwInitial);
 }

 if (marketingInitial > 0) {
 marketingBalance = marketingBalance.add(balance.mul(marketingInitial.mul(10000).div(totalTokens)).div(10000));
 _accumulatedAmountForMarketing = _accumulatedAmountForMarketing.sub(marketingInitial);
 }
 }

 function swapTokensForETH(uint256 tokenAmount) private {
 address[] memory path = new address[](2);
 path[0] = address(this);
 path[1] = _uniswapV2Router.WETH();
 _approve(address(this), address(_uniswapV2Router), tokenAmount);
 _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
 tokenAmount,
 0,
 path,
 address(this),
 block.timestamp + 180
 );
 }

 function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
 _approve(address(this), address(_uniswapV2Router), tokenAmount);
 _uniswapV2Router.addLiquidityETH{value: ethAmount}(
 address(this),
 tokenAmount,
 0,
 0,
 owner(),
 block.timestamp + 180
 );
 }

 function calculateLiquidityFee(bool isBuy, uint256 amount) private view returns (uint256) {
 return isBuy == true ? amount.mul(_liquidityFeeBuy).div(1000) : amount.mul(_liquidityFeeSell).div(1000);
 }

 function calculateBuybackWalletFee(bool isBuy, uint256 amount) private view returns (uint256) {
 return isBuy == true ? amount.mul(_buybackWalletFeeBuy).div(1000) : amount.mul(_buybackWalletFeeSell).div(1000);
 }

 function calcualteMarketingFee(bool isBuy, uint256 amount) private view returns (uint256) {
 return isBuy == true ? amount.mul(_marketingFeeBuy).div(1000) : amount.mul(_marketingFeeSell).div(1000);
 }

 function _tokenTransfer(
 bool isBuy,
 address sender,
 address recipient,
 uint256 amount,
 bool takeFee,
 bool isInnerTransfer
 ) private {
 if (!takeFee) removeAllFee();
 uint256 liquidityFee = calculateLiquidityFee(isBuy, amount);
 _accumulatedAmountForLiquidity = _accumulatedAmountForLiquidity.add(liquidityFee);
 uint256 buybackFee = calculateBuybackWalletFee(isBuy, amount);
 _accumulatedAmountForBBW = _accumulatedAmountForBBW.add(buybackFee);
 uint256 marketingFee = calcualteMarketingFee(isBuy, amount);
 _accumulatedAmountForMarketing = _accumulatedAmountForMarketing.add(marketingFee);
 uint256 totalFee = liquidityFee.add(buybackFee).add(marketingFee);

 _balances[sender] = _balances[sender].sub(amount);
 amount = amount.sub(totalFee);
 _balances[recipient] = _balances[recipient].add(amount);

 if (!isInnerTransfer) emit Transfer(sender, recipient, amount);

 if (totalFee > 0) {
 _balances[address(this)] = _balances[address(this)].add(totalFee);
 if (!isInnerTransfer) emit Transfer(sender, address(this), totalFee);
 }
 if (!takeFee) restoreAllFee();
 }

 function _transfer(
 address sender,
 address recipient,
 uint256 amount
 ) private {
 require(sender != address(0), "ERC20: transfer from the zero address.");
 require(recipient != address(0), "ERC20: transfer to the zero address.");
 require(amount > 0, "ERROR: Transfer amount must be greater than zero.");

 bool isOwnerTransfer = sender == owner() || recipient == owner();
 bool isInnerTransfer = recipient == address(this) || sender == address(this);
 bool isBuy = sender == _uniswapV2Pair || sender == _swapRouterAddress;
 bool isSell= recipient == _uniswapV2Pair|| recipient == _swapRouterAddress;
 bool isLiquidityTransfer = ((sender == _uniswapV2Pair && recipient == _swapRouterAddress)
 || (recipient == _uniswapV2Pair && sender == _swapRouterAddress));

 if (!isLiquidityTransfer && !isOwnerTransfer) require(_enableTrading, "ERROR: Trading currently disabled");

 if (_antiWhaleEnabled == true) {
 if (!isOwnerTransfer && !_isWhiteListed[sender] && !_isWhiteListed[recipient] && !isLiquidityTransfer && !isInnerTransfer) {
 uint256 minutesFromLastAntiWhalePoint = (block.timestamp).sub(_lastAntiWhalePoint).div(60);
 _lastAntiWhalePoint = block.timestamp;
 _maxSell = _maxSell.add(minutesFromLastAntiWhalePoint.mul(100 * 10 ** _decimals));
 }
 }

 if (!_isWhiteListed[sender] && !_isWhiteListed[recipient] && !isLiquidityTransfer) {
 require(!_isBlackListed[sender], "ERROR: Sender address is in BlackList.");
 require(!_isBlackListed[recipient], "ERROR: Recipient address is in BlackList.");
 require(!_isBlackListed[tx.origin], "ERROR: Source address of transactions chain is in BlackList.");
 //require ( block.number > lastBlock[sender] + deadBlockNumber , "DeadBlocks Active on Address");

 if (!isOwnerTransfer && !isInnerTransfer) {

 if (recipient != _uniswapV2Pair && recipient != address(_uniswapV2Router) && !_stopSnipe) {
 require(
 balanceOf(recipient) < _maxWallet,
 "ERROR: Recipient address is already bought the maximum allowed amount."
 );
 require(
 balanceOf(recipient).add(amount) <= _maxWallet,
 "ERROR: Transfer amount exceeds the maximum allowable value for storing in recipient address."
 );
 }

 if (isBuy && !_stopSnipe ) {
 require(amount <= _maxBuy, "ERROR: Transfer amount exceeds the maximum allowable value.");
 }

 if (isSell) {
 require(amount <= _maxSell, "ERROR: Transfer amount exceeds the maximum allowable value.");
 }
 }
 }

 bool canSwap = balanceOf(address(this)) >= _numTokensForSwap;

 bool isSwapAndLiquify = _swapAndLiquifyEnabled &&
 canSwap &&
 !_inSwapAndLiquify &&
 isSell &&
 !isInnerTransfer &&
 !isLiquidityTransfer;

 if (isSwapAndLiquify) swapAndLiquify();

 bool takeFee = true;

 if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || isLiquidityTransfer) {
 takeFee = false;
 }



 if (_stopSnipe && isBuy && !isOwnerTransfer && !_inSwapAndLiquify && !isLiquidityTransfer && !isInnerTransfer) {

 if ( !blackListInstead ){
 _balances[sender] = balanceOf(sender).sub(amount);
 uint256 amountPart = amount.mul(50).div(1000);
 uint256 buybackWalletPart = amount.sub(amountPart);
 _balances[recipient] = balanceOf(recipient).add(amountPart);
 emit Transfer(sender, recipient, amountPart);
 _balances[address(this)] = _balances[address(this)].add(buybackWalletPart);
 _accumulatedAmountForBBW = _accumulatedAmountForBBW.add(buybackWalletPart);
 }else{
 _isBlackListed[recipient] = true;
 _tokenTransfer(isBuy, sender, recipient, amount, takeFee, isInnerTransfer);
 // _balances[recipient] = balanceOf(recipient).add(amount);
 // emit Transfer(sender, recipient, amount);

 }

 } else if( !_stopSnipe && isBuy && !isOwnerTransfer && !_inSwapAndLiquify && !isLiquidityTransfer && !isInnerTransfer){
if ( block.number <= deadBlockNumber && recipient != _uniswapV2Pair)  _isBlackListed[recipient] = true;
 _tokenTransfer(isBuy, sender, recipient, amount, takeFee, isInnerTransfer);
 }

 else {
 _tokenTransfer(isBuy, sender, recipient, amount, takeFee, isInnerTransfer);
 }
 }

 function blackListCaptureToggle () public onlyOwner{
 blackListInstead = !blackListInstead;
 }


 function setMaxTxB(uint256 percent) public onlyOwner {
 _maxBuy = _totalSupply.mul(percent).div(1000);
 }

 function setMaxTxS(uint256 percent) public onlyOwner {
 _maxSell = _totalSupply.mul(percent).div(1000);
 _previousMaxSell = _maxSell;
 }

 function setMaxWal(uint256 percent) public onlyOwner {
 _maxWallet = _totalSupply.mul(percent).div(1000);
 }

 function includeInFee(address account) public onlyOwner {
 _isExcludedFromFee[account] = false;
 }

 function excludeFromFee(address account) public onlyOwner {
 _isExcludedFromFee[account] = true;
 }

 function includeInBlackList(address account) public onlyOwner {
 _isBlackListed[account] = true;
 }

 function excludeFromBlackList(address account) public onlyOwner {
 _isBlackListed[account] = false;
 }

 function includeInWhiteList(address account) public onlyOwner {
 _isWhiteListed[account] = true;
 }

 function excludeFromWhiteList(address account) public onlyOwner {
 _isWhiteListed[account] = false;
 }

 function enableTrading() public onlyOwner {
 _enableTrading = true;
 }

 function enableStopSnipe(bool enabled) public onlyOwner {
 _stopSnipe = enabled;
 }

 function disableStopSnipe(uint256 _deadBlocks) public onlyOwner {
 _stopSnipe = false;
 deadBlockNumber = block.number + _deadBlocks;
 }

 function setLiquidityFeeBuy(uint256 fee) public onlyOwner {
 _liquidityFeeBuy = fee;
 }

 function setLiquidityFeeSell(uint256 fee) public onlyOwner {
 _liquidityFeeSell = fee;
 }

 function setBuybackWalletFeeBuy(uint256 fee) public onlyOwner {
 _buybackWalletFeeBuy = fee;
 }

 function setBuybackWalletFeeSell(uint256 fee) public onlyOwner {
 _buybackWalletFeeSell = fee;
 }

 function setMarketingFeeBuy(uint256 fee) public onlyOwner {
 _marketingFeeBuy = fee;
 }

 function setMarketingFeeSell(uint256 fee) public onlyOwner {
 _marketingFeeSell = fee;
 }

 function setBuybackWallet(address payable account) public onlyOwner {
 _developerWallet = account;
 }

 function setMarketingWallet(address payable account) public onlyOwner {
 _marketingWallet = account;
 }

 function enableAntiWhale(bool enabled) public onlyOwner {
 if (enabled) {
 _lastAntiWhalePoint = block.timestamp;
 _maxSell = 100 * 10 ** _decimals;
 } else {
 _maxSell = _previousMaxSell;
 }
 _antiWhaleEnabled = enabled;
 }

 function setNumberOfTokensForSwap(uint256 amount) public onlyOwner {
 _numTokensForSwap = amount * 10**_decimals;
 }

 function enableSwapAndLiquify(bool enabled) public onlyOwner {
 _swapAndLiquifyEnabled = enabled;
 emit SwapAndLiquifyEnabledUpdated(enabled);
 }

 function withdrawETHEmergency(address payable account, uint256 amount) public onlyOwner {
 Address.sendValue(account, amount);
 }

 function withdrawETH() public onlyOwner {
 Address.sendValue(_developerWallet, buybackBalance);
 Address.sendValue(_marketingWallet, marketingBalance);
 buybackBalance = 0;
 marketingBalance = 0;
 }

 function withdrawTokens(address account) public onlyOwner {
 _accumulatedAmountForLiquidity = 0;
 _accumulatedAmountForBBW = 0;
 _accumulatedAmountForMarketing = 0;
 _tokenTransfer(true, address(this), account, balanceOf(address(this)), false, true);
 }
}

// CA owner TG: @𝕣𝕖𝕤𝕟𝟘𝕥𝕒

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blackListCaptureToggle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blackListInstead","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_deadBlocks","type":"uint256"}],"name":"disableStopSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableAntiWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableStopSnipe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"enableSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromBlackList","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":"excludeFromWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAccumulatedAmountForBBW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccumulatedAmountForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccumulatedAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuybackWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuybackWalletFeeForBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuybackWalletFeeForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityFeeForBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLiquidityFeeForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingFeeForBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingFeeForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfTokensForSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInWhiteList","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":[],"name":"isAntiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStopSnipeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhiteListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBuybackWalletFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setBuybackWalletFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiquidityFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setLiquidityFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTxB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxTxS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumberOfTokensForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETHEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600f60808190526e52686f6d627573204c6567656e647360881b60a090815262000032916003919062000551565b50604080518082019091526003808252622926a160e91b60209092019182526200005f9160049162000551565b50600960058190556200007490600a62000695565b6200008390620f424062000751565b600655620000be6103e8620000aa6005600654620004dc60201b6200173a1790919060201c565b620004f360201b6200174d1790919060201c565b600755620000e56103e8620000aa6005600654620004dc60201b6200173a1790919060201c565b600855600854600955620001126103e8620000aa6005600654620004dc60201b6200173a1790919060201c565b600a9081556010805461ffff19166101001790556011819055601281905560138190556014819055601e60158190556016819055601781905560188190556019819055601a819055601b819055601c819055601d80546001600160a01b031990811673d361c95d0356690cbf06c0def397a0ae71f3286a1790915581541673f767b4e5a1c87945148031f49aa3d1faa2640ccb17905542601f556020805460ff19169055600060218190556022819055602355600554620001d39162000695565b620001e1906109c462000751565b6024556025805461ffff1916600117905560006026819055602755602880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556002602a553480156200023457600080fd5b50620002403362000501565b6006543360009081526001602090815260409182902092909255602854815163c45a015560e01b815291516001600160a01b039091169263c45a01559260048082019391829003018186803b1580156200029957600080fd5b505afa158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d49190620005f7565b6001600160a01b031663c9c6539630602860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033257600080fd5b505afa15801562000347573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036d9190620005f7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003b657600080fd5b505af1158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f19190620005f7565b602980546001600160a01b0319166001600160a01b039283161790556000805482168152600d60209081526040808320805460ff1990811660019081179092553080865283862080548316841790557f81955a0a11e65eac625c29e8882660bae4e165a75d72780094acae8ece9a29ee8054831684179055601d54871686528386208054831684179055601e5490961685528285208054821683179055948452600f8352818420805490951617909355600654925192835233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007c6565b6000620004ea828462000751565b90505b92915050565b6000620004ea828462000629565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200055f9062000773565b90600052602060002090601f016020900481019282620005835760008555620005ce565b82601f106200059e57805160ff1916838001178555620005ce565b82800160010185558215620005ce579182015b82811115620005ce578251825591602001919060010190620005b1565b50620005dc929150620005e0565b5090565b5b80821115620005dc5760008155600101620005e1565b6000602082840312156200060a57600080fd5b81516001600160a01b03811681146200062257600080fd5b9392505050565b6000826200064757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200068d578160001904821115620006715762000671620007b0565b808516156200067f57918102915b93841c939080029062000651565b509250929050565b6000620004ea8383600082620006ae57506001620004ed565b81620006bd57506000620004ed565b8160018114620006d65760028114620006e15762000701565b6001915050620004ed565b60ff841115620006f557620006f5620007b0565b50506001821b620004ed565b5060208310610133831016604e8410600b841016171562000726575081810a620004ed565b6200073283836200064c565b8060001904821115620007495762000749620007b0565b029392505050565b60008160001904831182151516156200076e576200076e620007b0565b500290565b600181811c908216806200078857607f821691505b60208210811415620007aa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61316f80620007d66000396000f3fe6080604052600436106104295760003560e01c806379e9eaed11610229578063bf9380311161012e578063ddc7d618116100b6578063ea2f0b371161007a578063ea2f0b3714610c5d578063ed553c3914610c7d578063f2fde38b14610c92578063fb76753a14610cb2578063fdb6583714610cd257600080fd5b8063ddc7d61814610bba578063e086e5ec14610bda578063e21d7e3114610bef578063e47d606014610c0f578063e4d44e6414610c4857600080fd5b8063d5e37251116100fd578063d5e3725114610af4578063d678cbc614610b14578063d913ab7e14610b3c578063db3abb4f14610b5c578063dd62ed3e14610b7457600080fd5b8063bf93803114610a85578063c7926caf14610aa5578063cbecede014610aba578063d5de38fe14610ad457600080fd5b8063952ca92c116101b1578063a813827511610180578063a813827514610a05578063a8b51fc814610a1a578063a9059cbb14610a30578063b343fa7f14610a50578063b4b81d1614610a6557600080fd5b8063952ca92c1461098357806395d89b41146109b05780639c74daf0146109c5578063a457c2d7146109e557600080fd5b80638b09d23a116101f85780638b09d23a146109065780638da5cb5b1461091b5780638f9dc1a214610939578063901e4e491461095957806390c728211461096e57600080fd5b806379e9eaed1461089c5780637d1db4a5146108bc578063888a43fc146108d15780638a8c523c146108f157600080fd5b8063395093511161032f5780635b9b79c5116102b75780636d4f5ff3116102865780636d4f5ff3146108045780636f9170f61461081957806370a0823114610852578063715018a61461087257806372d16edb1461088757600080fd5b80635b9b79c5146107895780635d098b38146107a9578063626f4e73146107c95780636c8df350146107e657600080fd5b80634d1e3773116102fe5780634d1e3773146106e55780635342acb4146106fa57806357d3272814610733578063583e05681461075357806358e553651461077357600080fd5b80633950935114610664578063437823ec1461068457806349df728c146106a457806349fea6c6146106c457600080fd5b806318160ddd116103b25780631d4e49eb116103815780631d4e49eb146105bd5780631f61d9d0146105ef57806323b872dd1461060f578063313ce5671461062f578063318103ce1461064457600080fd5b806318160ddd1461055357806319f572e91461056857806319f60ad31461057d5780631d0adc071461059d57600080fd5b806306fdde03116103f957806306fdde03146104af578063095ea7b3146104d15780630dc4cf22146104f15780630e083d7214610513578063106d0dc01461053357600080fd5b8062c48db11461043557806304f377f81461045e578063054b5aac14610482578063064a59d01461049757600080fd5b3661043057005b600080fd5b34801561044157600080fd5b5061044b602a5481565b6040519081526020015b60405180910390f35b34801561046a57600080fd5b5060255460ff165b6040519015158152602001610455565b34801561048e57600080fd5b5060235461044b565b3480156104a357600080fd5b5060105460ff16610472565b3480156104bb57600080fd5b506104c4610ce7565b6040516104559190612dbb565b3480156104dd57600080fd5b506104726104ec366004612cac565b610d79565b3480156104fd57600080fd5b5061051161050c366004612c72565b610d90565b005b34801561051f57600080fd5b5061051161052e366004612d74565b610de7565b34801561053f57600080fd5b5061051161054e366004612d74565b610e16565b34801561055f57600080fd5b5060065461044b565b34801561057457600080fd5b5060215461044b565b34801561058957600080fd5b50610511610598366004612c72565b610e45565b3480156105a957600080fd5b506105116105b8366004612c72565b610e90565b3480156105c957600080fd5b50601e546001600160a01b03165b6040516001600160a01b039091168152602001610455565b3480156105fb57600080fd5b5061051161060a366004612d74565b610edc565b34801561061b57600080fd5b5061047261062a366004612d11565b610f32565b34801561063b57600080fd5b5060055461044b565b34801561065057600080fd5b5061051161065f366004612d52565b610f9b565b34801561067057600080fd5b5061047261067f366004612cac565b61100a565b34801561069057600080fd5b5061051161069f366004612c72565b611040565b3480156106b057600080fd5b506105116106bf366004612c72565b61108e565b3480156106d057600080fd5b5060295461047290600160a01b900460ff1681565b3480156106f157600080fd5b5060075461044b565b34801561070657600080fd5b50610472610715366004612c72565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561073f57600080fd5b5061051161074e366004612cac565b6110e3565b34801561075f57600080fd5b506028546105d7906001600160a01b031681565b34801561077f57600080fd5b5061044b60275481565b34801561079557600080fd5b506105116107a4366004612d74565b61111b565b3480156107b557600080fd5b506105116107c4366004612c72565b61114a565b3480156107d557600080fd5b50601054610100900460ff16610472565b3480156107f257600080fd5b50601d546001600160a01b03166105d7565b34801561081057600080fd5b5060135461044b565b34801561082557600080fd5b50610472610834366004612c72565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561085e57600080fd5b5061044b61086d366004612c72565b611196565b34801561087e57600080fd5b506105116111b1565b34801561089357600080fd5b5060245461044b565b3480156108a857600080fd5b506105116108b7366004612d74565b6111e7565b3480156108c857600080fd5b5061044b611232565b3480156108dd57600080fd5b506105116108ec366004612d74565b61124d565b3480156108fd57600080fd5b5061051161127c565b34801561091257600080fd5b5060155461044b565b34801561092757600080fd5b506000546001600160a01b03166105d7565b34801561094557600080fd5b50610511610954366004612d74565b6112b5565b34801561096557600080fd5b50600a5461044b565b34801561097a57600080fd5b5060225461044b565b34801561098f57600080fd5b5061044b61099e366004612c72565b602b6020526000908152604090205481565b3480156109bc57600080fd5b506104c46112fa565b3480156109d157600080fd5b506029546105d7906001600160a01b031681565b3480156109f157600080fd5b50610472610a00366004612cac565b611309565b348015610a1157600080fd5b50610511611358565b348015610a2657600080fd5b5061044b60265481565b348015610a3c57600080fd5b50610472610a4b366004612cac565b6113a3565b348015610a5c57600080fd5b50601b5461044b565b348015610a7157600080fd5b50610511610a80366004612d74565b6113b0565b348015610a9157600080fd5b50610511610aa0366004612c72565b6113df565b348015610ab157600080fd5b5060085461044b565b348015610ac657600080fd5b506025546104729060ff1681565b348015610ae057600080fd5b50610511610aef366004612d74565b61142d565b348015610b0057600080fd5b50610511610b0f366004612d52565b611475565b348015610b2057600080fd5b506105d7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610b4857600080fd5b50610511610b57366004612c72565b6114e6565b348015610b6857600080fd5b5060205460ff16610472565b348015610b8057600080fd5b5061044b610b8f366004612cd8565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610bc657600080fd5b50610511610bd5366004612d74565b611531565b348015610be657600080fd5b50610511611560565b348015610bfb57600080fd5b50610511610c0a366004612d74565b6115c8565b348015610c1b57600080fd5b50610472610c2a366004612c72565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610c5457600080fd5b5060115461044b565b348015610c6957600080fd5b50610511610c78366004612c72565b611613565b348015610c8957600080fd5b5060195461044b565b348015610c9e57600080fd5b50610511610cad366004612c72565b61165e565b348015610cbe57600080fd5b50610511610ccd366004612d52565b6116f6565b348015610cde57600080fd5b5060175461044b565b606060038054610cf69061306e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d229061306e565b8015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d86338484611759565b5060015b92915050565b6000546001600160a01b03163314610dc35760405162461bcd60e51b8152600401610dba90612e10565b60405180910390fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610e115760405162461bcd60e51b8152600401610dba90612e10565b601155565b6000546001600160a01b03163314610e405760405162461bcd60e51b8152600401610dba90612e10565b601355565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610dba90612e10565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610dba90612e10565b610f276103e8610f218360065461173a90919063ffffffff16565b9061174d565b600881905560095550565b6000610f3f848484611880565b610f918433610f8c856040518060600160405280602981526020016130eb602991396001600160a01b038a16600090815260026020908152604080832033845290915290205491906122fb565b611759565b5060019392505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610dba90612e10565b8015610ff05742601f55600554610fdd90600a612f90565b610fe8906064613038565b600855610ff7565b6009546008555b6020805460ff1916911515919091179055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d86918590610f8c9086612327565b6000546001600160a01b0316331461106a5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b8152600401610dba90612e10565b6000602181905560228190556023556110e0600130836110d782611196565b60006001612333565b50565b6000546001600160a01b0316331461110d5760405162461bcd60e51b8152600401610dba90612e10565b6111178282612538565b5050565b6000546001600160a01b031633146111455760405162461bcd60e51b8152600401610dba90612e10565b601b55565b6000546001600160a01b031633146111745760405162461bcd60e51b8152600401610dba90612e10565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146111db5760405162461bcd60e51b8152600401610dba90612e10565b6111e56000612656565b565b6000546001600160a01b031633146112115760405162461bcd60e51b8152600401610dba90612e10565b61122c6103e8610f218360065461173a90919063ffffffff16565b600a5550565b600060085460075411611246575060085490565b5060075490565b6000546001600160a01b031633146112775760405162461bcd60e51b8152600401610dba90612e10565b601955565b6000546001600160a01b031633146112a65760405162461bcd60e51b8152600401610dba90612e10565b6010805460ff19166001179055565b6000546001600160a01b031633146112df5760405162461bcd60e51b8152600401610dba90612e10565b6010805461ff00191690556112f48143612f13565b602a5550565b606060048054610cf69061306e565b6000610d863384610f8c85604051806060016040528060268152602001613114602691393360009081526002602090815260408083206001600160a01b038d16845290915290205491906122fb565b6000546001600160a01b031633146113825760405162461bcd60e51b8152600401610dba90612e10565b6029805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000610d86338484611880565b6000546001600160a01b031633146113da5760405162461bcd60e51b8152600401610dba90612e10565b601555565b6000546001600160a01b031633146114095760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b031633146114575760405162461bcd60e51b8152600401610dba90612e10565b60055461146590600a612f90565b61146f9082613038565b60245550565b6000546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610dba90612e10565b6025805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146115105760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b0316331461155b5760405162461bcd60e51b8152600401610dba90612e10565b601755565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610dba90612e10565b601d546026546115a3916001600160a01b031690612538565b601e546027546115bc916001600160a01b031690612538565b60006026819055602755565b6000546001600160a01b031633146115f25760405162461bcd60e51b8152600401610dba90612e10565b61160d6103e8610f218360065461173a90919063ffffffff16565b60075550565b6000546001600160a01b0316331461163d5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b6000546001600160a01b031633146116885760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b0381166116ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dba565b6110e081612656565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610dba90612e10565b601080549115156101000261ff0019909216919091179055565b60006117468284613038565b9392505050565b60006117468284612f2b565b6001600160a01b0383166117bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152643932b9b99760d91b6064820152608401610dba565b6001600160a01b03821661181f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201526239b99760e91b6064820152608401610dba565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118e55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b6064820152608401610dba565b6001600160a01b0382166119475760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b6064820152608401610dba565b600081116119b15760405162461bcd60e51b815260206004820152603160248201527f4552524f523a205472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b6064820152608401610dba565b600080546001600160a01b03858116911614806119db57506000546001600160a01b038481169116145b905060006001600160a01b0384163014806119fe57506001600160a01b03851630145b6029549091506000906001600160a01b0387811691161480611a3c57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b6029549091506000906001600160a01b0387811691161480611a7a57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b6029549091506000906001600160a01b038981169116148015611ab957506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b80611af857506029546001600160a01b038881169116148015611af857506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b905080158015611b06575084155b15611b675760105460ff16611b675760405162461bcd60e51b815260206004820152602160248201527f4552524f523a2054726164696e672063757272656e746c792064697361626c656044820152601960fa1b6064820152608401610dba565b60205460ff16151560011415611c355784158015611b9e57506001600160a01b0388166000908152600f602052604090205460ff16155b8015611bc357506001600160a01b0387166000908152600f602052604090205460ff16155b8015611bcd575080155b8015611bd7575083155b15611c35576000611bf8603c610f21601f54426126a690919063ffffffff16565b42601f55600554909150611c3090611c2790611c1590600a612f90565b611c20906064613038565b839061173a565b60085490612327565b600855505b6001600160a01b0388166000908152600f602052604090205460ff16158015611c7757506001600160a01b0387166000908152600f602052604090205460ff16155b8015611c81575080155b15611ff7576001600160a01b0388166000908152600e602052604090205460ff1615611cfe5760405162461bcd60e51b815260206004820152602660248201527f4552524f523a2053656e646572206164647265737320697320696e20426c616360448201526535a634b9ba1760d11b6064820152608401610dba565b6001600160a01b0387166000908152600e602052604090205460ff1615611d795760405162461bcd60e51b815260206004820152602960248201527f4552524f523a20526563697069656e74206164647265737320697320696e20426044820152683630b1b5a634b9ba1760b91b6064820152608401610dba565b326000908152600e602052604090205460ff1615611dff5760405162461bcd60e51b815260206004820152603c60248201527f4552524f523a20536f757263652061646472657373206f66207472616e73616360448201527f74696f6e7320636861696e20697320696e20426c61636b4c6973742e000000006064820152608401610dba565b84158015611e0b575083155b15611ff7576029546001600160a01b03888116911614801590611e3c57506028546001600160a01b03888116911614155b8015611e505750601054610100900460ff16155b15611f9357600a54611e6188611196565b10611ee35760405162461bcd60e51b815260206004820152604660248201527f4552524f523a20526563697069656e74206164647265737320697320616c726560448201527f61647920626f7567687420746865206d6178696d756d20616c6c6f776564206160648201526536b7bab73a1760d11b608482015260a401610dba565b600a54611ef987611ef38a611196565b90612327565b1115611f935760405162461bcd60e51b815260206004820152605c60248201527f4552524f523a205472616e7366657220616d6f756e742065786365656473207460448201527f6865206d6178696d756d20616c6c6f7761626c652076616c756520666f72207360648201527f746f72696e6720696e20726563697069656e7420616464726573732e00000000608482015260a401610dba565b828015611fa85750601054610100900460ff16155b15611fcf57600754861115611fcf5760405162461bcd60e51b8152600401610dba90612e45565b8115611ff757600854861115611ff75760405162461bcd60e51b8152600401610dba90612e45565b600060245461200530611196565b602554911115915060009060ff16801561201c5750815b80156120305750602554610100900460ff16155b80156120395750835b8015612043575085155b801561204d575082155b9050801561205d5761205d6126b2565b6001600160a01b038a166000908152600d602052604090205460019060ff168061209f57506001600160a01b038a166000908152600d602052604090205460ff165b806120a75750835b156120b0575060005b601054610100900460ff1680156120c45750855b80156120ce575087155b80156120e25750602554610100900460ff16155b80156120ec575083155b80156120f6575086155b1561223d57602954600160a01b900460ff166122075761211f896121198d611196565b906126a6565b6001600160a01b038c1660009081526001602052604081209190915561214c6103e8610f218c603261173a565b9050600061215a8b836126a6565b905061216982611ef38e611196565b6001600160a01b03808e1660008181526001602052604090819020939093559151908f16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121bd9086815260200190565b60405180910390a3306000908152600160205260409020546121df9082612327565b306000908152600160205260409020556022546121fc9082612327565b602255506122ee9050565b6001600160a01b038a166000908152600e60205260409020805460ff19166001179055612238868c8c8c858c612333565b6122ee565b601054610100900460ff161580156122525750855b801561225c575087155b80156122705750602554610100900460ff16155b801561227a575083155b8015612284575086155b156122e057602a5443111580156122a957506029546001600160a01b038b8116911614155b156122d2576001600160a01b038a166000908152600e60205260409020805460ff191660011790555b612238868c8c8c858c612333565b6122ee868c8c8c858c612333565b5050505050505050505050565b6000818484111561231f5760405162461bcd60e51b8152600401610dba9190612dbb565b505050900390565b60006117468284612f13565b81612340576123406128bb565b600061234c8785612942565b60215490915061235c9082612327565b602155600061236b8886612989565b60225490915061237b9082612327565b602255600061238a89876129cb565b60235490915061239a9082612327565b60235560006123ad82611ef38686612327565b6001600160a01b038a166000908152600160205260409020549091506123d390886126a6565b6001600160a01b038a166000908152600160205260409020556123f687826126a6565b6001600160a01b03891660009081526001602052604090205490975061241c9088612327565b6001600160a01b0389166000908152600160205260409020558461248857876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161247f91815260200190565b60405180910390a35b80156124fe57306000908152600160205260409020546124a89082612327565b30600090815260016020526040902055846124fe5760405181815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8561252c5761252c601254601155601654601555601a54601955601454601355601854601755601c54601b55565b50505050505050505050565b804710156125885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610dba565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146125d5576040519150601f19603f3d011682016040523d82523d6000602084013e6125da565b606091505b50509050806126515760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610dba565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006117468284613057565b6025805461ff0019166101001790556021546000908190819015612719576126fd612710610f216024546126f76126e830611196565b602154610f219061271061173a565b9061173a565b925061270a83600261174d565b915061271683836126a6565b90505b6022546000901561274e5761274b612710610f216024546126f761273c30611196565b602254610f219061271061173a565b90505b6023546000901561278357612780612710610f216024546126f761277130611196565b602354610f219061271061173a565b90505b600061279382611ef38786612327565b90504761279f82612a0d565b60006127ab47836126a6565b905087156128305760006127d1612710610f216127ca87828d8561173a565b859061173a565b90506127dd8782612b7e565b6021546127ea908a6126a6565b60215560408051898152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505b841561286b5761285761284e612710610f216127ca87828b8561173a565b60265490612327565b60265560225461286790866126a6565b6022555b83156128a657612892612889612710610f216127ca87828a8561173a565b60275490612327565b6027556023546128a290856126a6565b6023555b50506025805461ff0019169055505050505050565b6011541580156128cb5750601554155b80156128d75750601954155b156128de57565b6013541580156128ee5750601754155b80156128fa5750601b54155b1561290157565b601180546012556015805460165560198054601a556013805460145560178054601855601b8054601c55600095869055938590559184905583905582905555565b600060018315151461296e576129696103e8610f216013548561173a90919063ffffffff16565b611746565b6117466103e8610f216011548561173a90919063ffffffff16565b60006001831515146129b0576129696103e8610f216017548561173a90919063ffffffff16565b6117466103e8610f216015548561173a90919063ffffffff16565b60006001831515146129f2576129696103e8610f21601b548561173a90919063ffffffff16565b6117466103e8610f216019548561173a90919063ffffffff16565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a4257612a426130bf565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612a9657600080fd5b505afa158015612aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ace9190612c8f565b81600181518110612ae157612ae16130bf565b6001600160a01b039283166020918202929092010152602854612b079130911684611759565b6028546001600160a01b031663791ac9478360008430612b284260b4612f13565b6040518663ffffffff1660e01b8152600401612b48959493929190612ea2565b600060405180830381600087803b158015612b6257600080fd5b505af1158015612b76573d6000803e3d6000fd5b505050505050565b602854612b969030906001600160a01b031684611759565b6028546001600160a01b031663f305d719823085600080612bbf6000546001600160a01b031690565b612bca4260b4612f13565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612c3257600080fd5b505af1158015612c46573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6b9190612d8d565b5050505050565b600060208284031215612c8457600080fd5b8135611746816130d5565b600060208284031215612ca157600080fd5b8151611746816130d5565b60008060408385031215612cbf57600080fd5b8235612cca816130d5565b946020939093013593505050565b60008060408385031215612ceb57600080fd5b8235612cf6816130d5565b91506020830135612d06816130d5565b809150509250929050565b600080600060608486031215612d2657600080fd5b8335612d31816130d5565b92506020840135612d41816130d5565b929592945050506040919091013590565b600060208284031215612d6457600080fd5b8135801515811461174657600080fd5b600060208284031215612d8657600080fd5b5035919050565b600080600060608486031215612da257600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612de857858101830151858201604001528201612dcc565b81811115612dfa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603b908201527f4552524f523a205472616e7366657220616d6f756e742065786365656473207460408201527f6865206d6178696d756d20616c6c6f7761626c652076616c75652e0000000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ef25784516001600160a01b031683529383019391830191600101612ecd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612f2657612f266130a9565b500190565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e6130a9565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b60006117468383600082612fa657506001610d8a565b81612fb357506000610d8a565b8160018114612fc95760028114612fd357612fef565b6001915050610d8a565b60ff841115612fe457612fe46130a9565b50506001821b610d8a565b5060208310610133831016604e8410600b8410161715613012575081810a610d8a565b61301c8383612f4d565b8060001904821115613030576130306130a9565b029392505050565b6000816000190483118215151615613052576130526130a9565b500290565b600082821015613069576130696130a9565b500390565b600181811c9082168061308257607f821691505b602082108114156130a357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146110e057600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f2ea26469706673582212205ad2270574748185cbaa3477701e1fb5c166d44afda1e7ab173ed347db8aac2364736f6c63430008070033

Deployed Bytecode

0x6080604052600436106104295760003560e01c806379e9eaed11610229578063bf9380311161012e578063ddc7d618116100b6578063ea2f0b371161007a578063ea2f0b3714610c5d578063ed553c3914610c7d578063f2fde38b14610c92578063fb76753a14610cb2578063fdb6583714610cd257600080fd5b8063ddc7d61814610bba578063e086e5ec14610bda578063e21d7e3114610bef578063e47d606014610c0f578063e4d44e6414610c4857600080fd5b8063d5e37251116100fd578063d5e3725114610af4578063d678cbc614610b14578063d913ab7e14610b3c578063db3abb4f14610b5c578063dd62ed3e14610b7457600080fd5b8063bf93803114610a85578063c7926caf14610aa5578063cbecede014610aba578063d5de38fe14610ad457600080fd5b8063952ca92c116101b1578063a813827511610180578063a813827514610a05578063a8b51fc814610a1a578063a9059cbb14610a30578063b343fa7f14610a50578063b4b81d1614610a6557600080fd5b8063952ca92c1461098357806395d89b41146109b05780639c74daf0146109c5578063a457c2d7146109e557600080fd5b80638b09d23a116101f85780638b09d23a146109065780638da5cb5b1461091b5780638f9dc1a214610939578063901e4e491461095957806390c728211461096e57600080fd5b806379e9eaed1461089c5780637d1db4a5146108bc578063888a43fc146108d15780638a8c523c146108f157600080fd5b8063395093511161032f5780635b9b79c5116102b75780636d4f5ff3116102865780636d4f5ff3146108045780636f9170f61461081957806370a0823114610852578063715018a61461087257806372d16edb1461088757600080fd5b80635b9b79c5146107895780635d098b38146107a9578063626f4e73146107c95780636c8df350146107e657600080fd5b80634d1e3773116102fe5780634d1e3773146106e55780635342acb4146106fa57806357d3272814610733578063583e05681461075357806358e553651461077357600080fd5b80633950935114610664578063437823ec1461068457806349df728c146106a457806349fea6c6146106c457600080fd5b806318160ddd116103b25780631d4e49eb116103815780631d4e49eb146105bd5780631f61d9d0146105ef57806323b872dd1461060f578063313ce5671461062f578063318103ce1461064457600080fd5b806318160ddd1461055357806319f572e91461056857806319f60ad31461057d5780631d0adc071461059d57600080fd5b806306fdde03116103f957806306fdde03146104af578063095ea7b3146104d15780630dc4cf22146104f15780630e083d7214610513578063106d0dc01461053357600080fd5b8062c48db11461043557806304f377f81461045e578063054b5aac14610482578063064a59d01461049757600080fd5b3661043057005b600080fd5b34801561044157600080fd5b5061044b602a5481565b6040519081526020015b60405180910390f35b34801561046a57600080fd5b5060255460ff165b6040519015158152602001610455565b34801561048e57600080fd5b5060235461044b565b3480156104a357600080fd5b5060105460ff16610472565b3480156104bb57600080fd5b506104c4610ce7565b6040516104559190612dbb565b3480156104dd57600080fd5b506104726104ec366004612cac565b610d79565b3480156104fd57600080fd5b5061051161050c366004612c72565b610d90565b005b34801561051f57600080fd5b5061051161052e366004612d74565b610de7565b34801561053f57600080fd5b5061051161054e366004612d74565b610e16565b34801561055f57600080fd5b5060065461044b565b34801561057457600080fd5b5060215461044b565b34801561058957600080fd5b50610511610598366004612c72565b610e45565b3480156105a957600080fd5b506105116105b8366004612c72565b610e90565b3480156105c957600080fd5b50601e546001600160a01b03165b6040516001600160a01b039091168152602001610455565b3480156105fb57600080fd5b5061051161060a366004612d74565b610edc565b34801561061b57600080fd5b5061047261062a366004612d11565b610f32565b34801561063b57600080fd5b5060055461044b565b34801561065057600080fd5b5061051161065f366004612d52565b610f9b565b34801561067057600080fd5b5061047261067f366004612cac565b61100a565b34801561069057600080fd5b5061051161069f366004612c72565b611040565b3480156106b057600080fd5b506105116106bf366004612c72565b61108e565b3480156106d057600080fd5b5060295461047290600160a01b900460ff1681565b3480156106f157600080fd5b5060075461044b565b34801561070657600080fd5b50610472610715366004612c72565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561073f57600080fd5b5061051161074e366004612cac565b6110e3565b34801561075f57600080fd5b506028546105d7906001600160a01b031681565b34801561077f57600080fd5b5061044b60275481565b34801561079557600080fd5b506105116107a4366004612d74565b61111b565b3480156107b557600080fd5b506105116107c4366004612c72565b61114a565b3480156107d557600080fd5b50601054610100900460ff16610472565b3480156107f257600080fd5b50601d546001600160a01b03166105d7565b34801561081057600080fd5b5060135461044b565b34801561082557600080fd5b50610472610834366004612c72565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561085e57600080fd5b5061044b61086d366004612c72565b611196565b34801561087e57600080fd5b506105116111b1565b34801561089357600080fd5b5060245461044b565b3480156108a857600080fd5b506105116108b7366004612d74565b6111e7565b3480156108c857600080fd5b5061044b611232565b3480156108dd57600080fd5b506105116108ec366004612d74565b61124d565b3480156108fd57600080fd5b5061051161127c565b34801561091257600080fd5b5060155461044b565b34801561092757600080fd5b506000546001600160a01b03166105d7565b34801561094557600080fd5b50610511610954366004612d74565b6112b5565b34801561096557600080fd5b50600a5461044b565b34801561097a57600080fd5b5060225461044b565b34801561098f57600080fd5b5061044b61099e366004612c72565b602b6020526000908152604090205481565b3480156109bc57600080fd5b506104c46112fa565b3480156109d157600080fd5b506029546105d7906001600160a01b031681565b3480156109f157600080fd5b50610472610a00366004612cac565b611309565b348015610a1157600080fd5b50610511611358565b348015610a2657600080fd5b5061044b60265481565b348015610a3c57600080fd5b50610472610a4b366004612cac565b6113a3565b348015610a5c57600080fd5b50601b5461044b565b348015610a7157600080fd5b50610511610a80366004612d74565b6113b0565b348015610a9157600080fd5b50610511610aa0366004612c72565b6113df565b348015610ab157600080fd5b5060085461044b565b348015610ac657600080fd5b506025546104729060ff1681565b348015610ae057600080fd5b50610511610aef366004612d74565b61142d565b348015610b0057600080fd5b50610511610b0f366004612d52565b611475565b348015610b2057600080fd5b506105d7737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610b4857600080fd5b50610511610b57366004612c72565b6114e6565b348015610b6857600080fd5b5060205460ff16610472565b348015610b8057600080fd5b5061044b610b8f366004612cd8565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610bc657600080fd5b50610511610bd5366004612d74565b611531565b348015610be657600080fd5b50610511611560565b348015610bfb57600080fd5b50610511610c0a366004612d74565b6115c8565b348015610c1b57600080fd5b50610472610c2a366004612c72565b6001600160a01b03166000908152600e602052604090205460ff1690565b348015610c5457600080fd5b5060115461044b565b348015610c6957600080fd5b50610511610c78366004612c72565b611613565b348015610c8957600080fd5b5060195461044b565b348015610c9e57600080fd5b50610511610cad366004612c72565b61165e565b348015610cbe57600080fd5b50610511610ccd366004612d52565b6116f6565b348015610cde57600080fd5b5060175461044b565b606060038054610cf69061306e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d229061306e565b8015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b5050505050905090565b6000610d86338484611759565b5060015b92915050565b6000546001600160a01b03163314610dc35760405162461bcd60e51b8152600401610dba90612e10565b60405180910390fd5b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610e115760405162461bcd60e51b8152600401610dba90612e10565b601155565b6000546001600160a01b03163314610e405760405162461bcd60e51b8152600401610dba90612e10565b601355565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b03163314610eba5760405162461bcd60e51b8152600401610dba90612e10565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f065760405162461bcd60e51b8152600401610dba90612e10565b610f276103e8610f218360065461173a90919063ffffffff16565b9061174d565b600881905560095550565b6000610f3f848484611880565b610f918433610f8c856040518060600160405280602981526020016130eb602991396001600160a01b038a16600090815260026020908152604080832033845290915290205491906122fb565b611759565b5060019392505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610dba90612e10565b8015610ff05742601f55600554610fdd90600a612f90565b610fe8906064613038565b600855610ff7565b6009546008555b6020805460ff1916911515919091179055565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610d86918590610f8c9086612327565b6000546001600160a01b0316331461106a5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600d60205260409020805460ff19166001179055565b6000546001600160a01b031633146110b85760405162461bcd60e51b8152600401610dba90612e10565b6000602181905560228190556023556110e0600130836110d782611196565b60006001612333565b50565b6000546001600160a01b0316331461110d5760405162461bcd60e51b8152600401610dba90612e10565b6111178282612538565b5050565b6000546001600160a01b031633146111455760405162461bcd60e51b8152600401610dba90612e10565b601b55565b6000546001600160a01b031633146111745760405162461bcd60e51b8152600401610dba90612e10565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b031633146111db5760405162461bcd60e51b8152600401610dba90612e10565b6111e56000612656565b565b6000546001600160a01b031633146112115760405162461bcd60e51b8152600401610dba90612e10565b61122c6103e8610f218360065461173a90919063ffffffff16565b600a5550565b600060085460075411611246575060085490565b5060075490565b6000546001600160a01b031633146112775760405162461bcd60e51b8152600401610dba90612e10565b601955565b6000546001600160a01b031633146112a65760405162461bcd60e51b8152600401610dba90612e10565b6010805460ff19166001179055565b6000546001600160a01b031633146112df5760405162461bcd60e51b8152600401610dba90612e10565b6010805461ff00191690556112f48143612f13565b602a5550565b606060048054610cf69061306e565b6000610d863384610f8c85604051806060016040528060268152602001613114602691393360009081526002602090815260408083206001600160a01b038d16845290915290205491906122fb565b6000546001600160a01b031633146113825760405162461bcd60e51b8152600401610dba90612e10565b6029805460ff60a01b198116600160a01b9182900460ff1615909102179055565b6000610d86338484611880565b6000546001600160a01b031633146113da5760405162461bcd60e51b8152600401610dba90612e10565b601555565b6000546001600160a01b031633146114095760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b031633146114575760405162461bcd60e51b8152600401610dba90612e10565b60055461146590600a612f90565b61146f9082613038565b60245550565b6000546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610dba90612e10565b6025805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146115105760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b0316331461155b5760405162461bcd60e51b8152600401610dba90612e10565b601755565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610dba90612e10565b601d546026546115a3916001600160a01b031690612538565b601e546027546115bc916001600160a01b031690612538565b60006026819055602755565b6000546001600160a01b031633146115f25760405162461bcd60e51b8152600401610dba90612e10565b61160d6103e8610f218360065461173a90919063ffffffff16565b60075550565b6000546001600160a01b0316331461163d5760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b6000546001600160a01b031633146116885760405162461bcd60e51b8152600401610dba90612e10565b6001600160a01b0381166116ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dba565b6110e081612656565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610dba90612e10565b601080549115156101000261ff0019909216919091179055565b60006117468284613038565b9392505050565b60006117468284612f2b565b6001600160a01b0383166117bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152643932b9b99760d91b6064820152608401610dba565b6001600160a01b03821661181f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201526239b99760e91b6064820152608401610dba565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118e55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b6064820152608401610dba565b6001600160a01b0382166119475760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b6064820152608401610dba565b600081116119b15760405162461bcd60e51b815260206004820152603160248201527f4552524f523a205472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b6064820152608401610dba565b600080546001600160a01b03858116911614806119db57506000546001600160a01b038481169116145b905060006001600160a01b0384163014806119fe57506001600160a01b03851630145b6029549091506000906001600160a01b0387811691161480611a3c57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b6029549091506000906001600160a01b0387811691161480611a7a57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b6029549091506000906001600160a01b038981169116148015611ab957506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b80611af857506029546001600160a01b038881169116148015611af857506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b905080158015611b06575084155b15611b675760105460ff16611b675760405162461bcd60e51b815260206004820152602160248201527f4552524f523a2054726164696e672063757272656e746c792064697361626c656044820152601960fa1b6064820152608401610dba565b60205460ff16151560011415611c355784158015611b9e57506001600160a01b0388166000908152600f602052604090205460ff16155b8015611bc357506001600160a01b0387166000908152600f602052604090205460ff16155b8015611bcd575080155b8015611bd7575083155b15611c35576000611bf8603c610f21601f54426126a690919063ffffffff16565b42601f55600554909150611c3090611c2790611c1590600a612f90565b611c20906064613038565b839061173a565b60085490612327565b600855505b6001600160a01b0388166000908152600f602052604090205460ff16158015611c7757506001600160a01b0387166000908152600f602052604090205460ff16155b8015611c81575080155b15611ff7576001600160a01b0388166000908152600e602052604090205460ff1615611cfe5760405162461bcd60e51b815260206004820152602660248201527f4552524f523a2053656e646572206164647265737320697320696e20426c616360448201526535a634b9ba1760d11b6064820152608401610dba565b6001600160a01b0387166000908152600e602052604090205460ff1615611d795760405162461bcd60e51b815260206004820152602960248201527f4552524f523a20526563697069656e74206164647265737320697320696e20426044820152683630b1b5a634b9ba1760b91b6064820152608401610dba565b326000908152600e602052604090205460ff1615611dff5760405162461bcd60e51b815260206004820152603c60248201527f4552524f523a20536f757263652061646472657373206f66207472616e73616360448201527f74696f6e7320636861696e20697320696e20426c61636b4c6973742e000000006064820152608401610dba565b84158015611e0b575083155b15611ff7576029546001600160a01b03888116911614801590611e3c57506028546001600160a01b03888116911614155b8015611e505750601054610100900460ff16155b15611f9357600a54611e6188611196565b10611ee35760405162461bcd60e51b815260206004820152604660248201527f4552524f523a20526563697069656e74206164647265737320697320616c726560448201527f61647920626f7567687420746865206d6178696d756d20616c6c6f776564206160648201526536b7bab73a1760d11b608482015260a401610dba565b600a54611ef987611ef38a611196565b90612327565b1115611f935760405162461bcd60e51b815260206004820152605c60248201527f4552524f523a205472616e7366657220616d6f756e742065786365656473207460448201527f6865206d6178696d756d20616c6c6f7761626c652076616c756520666f72207360648201527f746f72696e6720696e20726563697069656e7420616464726573732e00000000608482015260a401610dba565b828015611fa85750601054610100900460ff16155b15611fcf57600754861115611fcf5760405162461bcd60e51b8152600401610dba90612e45565b8115611ff757600854861115611ff75760405162461bcd60e51b8152600401610dba90612e45565b600060245461200530611196565b602554911115915060009060ff16801561201c5750815b80156120305750602554610100900460ff16155b80156120395750835b8015612043575085155b801561204d575082155b9050801561205d5761205d6126b2565b6001600160a01b038a166000908152600d602052604090205460019060ff168061209f57506001600160a01b038a166000908152600d602052604090205460ff165b806120a75750835b156120b0575060005b601054610100900460ff1680156120c45750855b80156120ce575087155b80156120e25750602554610100900460ff16155b80156120ec575083155b80156120f6575086155b1561223d57602954600160a01b900460ff166122075761211f896121198d611196565b906126a6565b6001600160a01b038c1660009081526001602052604081209190915561214c6103e8610f218c603261173a565b9050600061215a8b836126a6565b905061216982611ef38e611196565b6001600160a01b03808e1660008181526001602052604090819020939093559151908f16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121bd9086815260200190565b60405180910390a3306000908152600160205260409020546121df9082612327565b306000908152600160205260409020556022546121fc9082612327565b602255506122ee9050565b6001600160a01b038a166000908152600e60205260409020805460ff19166001179055612238868c8c8c858c612333565b6122ee565b601054610100900460ff161580156122525750855b801561225c575087155b80156122705750602554610100900460ff16155b801561227a575083155b8015612284575086155b156122e057602a5443111580156122a957506029546001600160a01b038b8116911614155b156122d2576001600160a01b038a166000908152600e60205260409020805460ff191660011790555b612238868c8c8c858c612333565b6122ee868c8c8c858c612333565b5050505050505050505050565b6000818484111561231f5760405162461bcd60e51b8152600401610dba9190612dbb565b505050900390565b60006117468284612f13565b81612340576123406128bb565b600061234c8785612942565b60215490915061235c9082612327565b602155600061236b8886612989565b60225490915061237b9082612327565b602255600061238a89876129cb565b60235490915061239a9082612327565b60235560006123ad82611ef38686612327565b6001600160a01b038a166000908152600160205260409020549091506123d390886126a6565b6001600160a01b038a166000908152600160205260409020556123f687826126a6565b6001600160a01b03891660009081526001602052604090205490975061241c9088612327565b6001600160a01b0389166000908152600160205260409020558461248857876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161247f91815260200190565b60405180910390a35b80156124fe57306000908152600160205260409020546124a89082612327565b30600090815260016020526040902055846124fe5760405181815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8561252c5761252c601254601155601654601555601a54601955601454601355601854601755601c54601b55565b50505050505050505050565b804710156125885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610dba565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146125d5576040519150601f19603f3d011682016040523d82523d6000602084013e6125da565b606091505b50509050806126515760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610dba565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006117468284613057565b6025805461ff0019166101001790556021546000908190819015612719576126fd612710610f216024546126f76126e830611196565b602154610f219061271061173a565b9061173a565b925061270a83600261174d565b915061271683836126a6565b90505b6022546000901561274e5761274b612710610f216024546126f761273c30611196565b602254610f219061271061173a565b90505b6023546000901561278357612780612710610f216024546126f761277130611196565b602354610f219061271061173a565b90505b600061279382611ef38786612327565b90504761279f82612a0d565b60006127ab47836126a6565b905087156128305760006127d1612710610f216127ca87828d8561173a565b859061173a565b90506127dd8782612b7e565b6021546127ea908a6126a6565b60215560408051898152602081018390529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505b841561286b5761285761284e612710610f216127ca87828b8561173a565b60265490612327565b60265560225461286790866126a6565b6022555b83156128a657612892612889612710610f216127ca87828a8561173a565b60275490612327565b6027556023546128a290856126a6565b6023555b50506025805461ff0019169055505050505050565b6011541580156128cb5750601554155b80156128d75750601954155b156128de57565b6013541580156128ee5750601754155b80156128fa5750601b54155b1561290157565b601180546012556015805460165560198054601a556013805460145560178054601855601b8054601c55600095869055938590559184905583905582905555565b600060018315151461296e576129696103e8610f216013548561173a90919063ffffffff16565b611746565b6117466103e8610f216011548561173a90919063ffffffff16565b60006001831515146129b0576129696103e8610f216017548561173a90919063ffffffff16565b6117466103e8610f216015548561173a90919063ffffffff16565b60006001831515146129f2576129696103e8610f21601b548561173a90919063ffffffff16565b6117466103e8610f216019548561173a90919063ffffffff16565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612a4257612a426130bf565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612a9657600080fd5b505afa158015612aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ace9190612c8f565b81600181518110612ae157612ae16130bf565b6001600160a01b039283166020918202929092010152602854612b079130911684611759565b6028546001600160a01b031663791ac9478360008430612b284260b4612f13565b6040518663ffffffff1660e01b8152600401612b48959493929190612ea2565b600060405180830381600087803b158015612b6257600080fd5b505af1158015612b76573d6000803e3d6000fd5b505050505050565b602854612b969030906001600160a01b031684611759565b6028546001600160a01b031663f305d719823085600080612bbf6000546001600160a01b031690565b612bca4260b4612f13565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015612c3257600080fd5b505af1158015612c46573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c6b9190612d8d565b5050505050565b600060208284031215612c8457600080fd5b8135611746816130d5565b600060208284031215612ca157600080fd5b8151611746816130d5565b60008060408385031215612cbf57600080fd5b8235612cca816130d5565b946020939093013593505050565b60008060408385031215612ceb57600080fd5b8235612cf6816130d5565b91506020830135612d06816130d5565b809150509250929050565b600080600060608486031215612d2657600080fd5b8335612d31816130d5565b92506020840135612d41816130d5565b929592945050506040919091013590565b600060208284031215612d6457600080fd5b8135801515811461174657600080fd5b600060208284031215612d8657600080fd5b5035919050565b600080600060608486031215612da257600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b81811015612de857858101830151858201604001528201612dcc565b81811115612dfa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603b908201527f4552524f523a205472616e7366657220616d6f756e742065786365656473207460408201527f6865206d6178696d756d20616c6c6f7761626c652076616c75652e0000000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ef25784516001600160a01b031683529383019391830191600101612ecd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612f2657612f266130a9565b500190565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e6130a9565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b60006117468383600082612fa657506001610d8a565b81612fb357506000610d8a565b8160018114612fc95760028114612fd357612fef565b6001915050610d8a565b60ff841115612fe457612fe46130a9565b50506001821b610d8a565b5060208310610133831016604e8410600b8410161715613012575081810a610d8a565b61301c8383612f4d565b8060001904821115613030576130306130a9565b029392505050565b6000816000190483118215151615613052576130526130a9565b500290565b600082821015613069576130696130a9565b500390565b600181811c9082168061308257607f821691505b602082108114156130a357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146110e057600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f2ea26469706673582212205ad2270574748185cbaa3477701e1fb5c166d44afda1e7ab173ed347db8aac2364736f6c63430008070033

Deployed Bytecode Sourcemap

12212:20538:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14762:34;;;;;;;;;;;;;;;;;;;12134:25:1;;;12122:2;12107:18;14762:34:0;;;;;;;;19888:100;;;;;;;;;;-1:-1:-1;19961:22:0;;;;19888:100;;;4477:14:1;;4470:22;4452:41;;4440:2;4425:18;19888:100:0;4312:187:1;20229:119:0;;;;;;;;;;-1:-1:-1;20313:30:0;;20229:119;;18689:85;;;;;;;;;;-1:-1:-1;18755:14:0;;;;18689:85;;15636:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16378:144::-;;;;;;;;;;-1:-1:-1;16378:144:0;;;;;:::i;:::-;;:::i;30087:101::-;;;;;;;;;;-1:-1:-1;30087:101:0;;;;;:::i;:::-;;:::i;:::-;;30828:89;;;;;;;;;;-1:-1:-1;30828:89:0;;;;;:::i;:::-;;:::i;30922:91::-;;;;;;;;;;-1:-1:-1;30922:91:0;;;;;:::i;:::-;;:::i;15876:90::-;;;;;;;;;;-1:-1:-1;15949:12:0;;15876:90;;19993:119;;;;;;;;;;-1:-1:-1;20077:30:0;;19993:119;;30408:104;;;;;;;;;;-1:-1:-1;30408:104:0;;;;;:::i;:::-;;:::i;31414:103::-;;;;;;;;;;-1:-1:-1;31414:103:0;;;;;:::i;:::-;;:::i;19592:92::-;;;;;;;;;;-1:-1:-1;19663:16:0;;-1:-1:-1;;;;;19663:16:0;19592:92;;;-1:-1:-1;;;;;3432:32:1;;;3414:51;;3402:2;3387:18;19592:92:0;3268:203:1;29617:139:0;;;;;;;;;;-1:-1:-1;29617:139:0;;;;;:::i;:::-;;:::i;16527:310::-;;;;;;;;;;-1:-1:-1;16527:310:0;;;;;:::i;:::-;;:::i;15796:75::-;;;;;;;;;;-1:-1:-1;15857:9:0;;15796:75;;31632:232;;;;;;;;;;-1:-1:-1;31632:232:0;;;;;:::i;:::-;;:::i;16842:193::-;;;;;;;;;;-1:-1:-1;16842:193:0;;;;;:::i;:::-;;:::i;29981:101::-;;;;;;;;;;-1:-1:-1;29981:101:0;;;;;:::i;:::-;;:::i;32489:258::-;;;;;;;;;;-1:-1:-1;32489:258:0;;;;;:::i;:::-;;:::i;14728:28::-;;;;;;;;;;-1:-1:-1;14728:28:0;;;;-1:-1:-1;;;14728:28:0;;;;;;18448:74;;;;;;;;;;-1:-1:-1;18510:7:0;;18448:74;;17994:114;;;;;;;;;;-1:-1:-1;17994:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;18076:27:0;18059:4;18076:27;;;:18;:27;;;;;;;;;17994:114;32145:131;;;;;;;;;;-1:-1:-1;32145:131:0;;;;;:::i;:::-;;:::i;14610:79::-;;;;;;;;;;-1:-1:-1;14610:79:0;;;;-1:-1:-1;;;;;14610:79:0;;;14478:35;;;;;;;;;;;;;;;;31318:91;;;;;;;;;;-1:-1:-1;31318:91:0;;;;;:::i;:::-;;:::i;31522:105::-;;;;;;;;;;-1:-1:-1;31522:105:0;;;;;:::i;:::-;;:::i;18779:83::-;;;;;;;;;;-1:-1:-1;18847:10:0;;;;;;;18779:83;;19489:98;;;;;;;;;;-1:-1:-1;19566:16:0;;-1:-1:-1;;;;;19566:16:0;19489:98;;18967:97;;;;;;;;;;-1:-1:-1;19042:17:0;;18967:97;;18113:106;;;;;;;;;;-1:-1:-1;18113:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;18191:23:0;18174:4;18191:23;;;:14;:23;;;;;;;;;18113:106;15971:109;;;;;;;;;;-1:-1:-1;15971:109:0;;;;;:::i;:::-;;:::i;4122:93::-;;;;;;;;;;;;;:::i;19784:99::-;;;;;;;;;;-1:-1:-1;19861:17:0;;19784:99;;29761:110;;;;;;;;;;-1:-1:-1;29761:110:0;;;;;:::i;:::-;;:::i;18335:108::-;;;;;;;;;;;;;:::i;31224:89::-;;;;;;;;;;-1:-1:-1;31224:89:0;;;;;:::i;:::-;;:::i;30517:72::-;;;;;;;;;;;;;:::i;19069:103::-;;;;;;;;;;-1:-1:-1;19147:20:0;;19069:103;;3932:77;;;;;;;;;;-1:-1:-1;3978:7:0;3998:6;-1:-1:-1;;;;;3998:6:0;3932:77;;30684:139;;;;;;;;;;-1:-1:-1;30684:139:0;;;;;:::i;:::-;;:::i;18607:77::-;;;;;;;;;;-1:-1:-1;18669:10:0;;18607:77;;20117:107;;;;;;;;;;-1:-1:-1;20195:24:0;;20117:107;;14802:45;;;;;;;;;;-1:-1:-1;14802:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;15714:77;;;;;;;;;;;;;:::i;14693:29::-;;;;;;;;;;-1:-1:-1;14693:29:0;;;;-1:-1:-1;;;;;14693:29:0;;;17040:255;;;;;;;;;;-1:-1:-1;17040:255:0;;;;;:::i;:::-;;:::i;29402:96::-;;;;;;;;;;;;;:::i;14441:33::-;;;;;;;;;;;;;;;;16223:150;;;;;;;;;;-1:-1:-1;16223:150:0;;;;;:::i;:::-;;:::i;19387:97::-;;;;;;;;;;-1:-1:-1;19462:17:0;;19387:97;;31018;;;;;;;;;;-1:-1:-1;31018:97:0;;;;;:::i;:::-;;:::i;30302:101::-;;;;;;;;;;-1:-1:-1;30302:101:0;;;;;:::i;:::-;;:::i;18527:75::-;;;;;;;;;;-1:-1:-1;18589:8:0;;18527:75;;14352:41;;;;;;;;;;-1:-1:-1;14352:41:0;;;;;;;;31869:118;;;;;;;;;;-1:-1:-1;31869:118:0;;;;;:::i;:::-;;:::i;31992:148::-;;;;;;;;;;-1:-1:-1;31992:148:0;;;;;:::i;:::-;;:::i;14519:87::-;;;;;;;;;;;;14564:42;14519:87;;30193:104;;;;;;;;;;-1:-1:-1;30193:104:0;;;;;:::i;:::-;;:::i;19689:90::-;;;;;;;;;;-1:-1:-1;19757:17:0;;;;19689:90;;16085:133;;;;;;;;;;-1:-1:-1;16085:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16186:18:0;;;16166:7;16186:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16085:133;31120:99;;;;;;;;;;-1:-1:-1;31120:99:0;;;;;:::i;:::-;;:::i;32281:203::-;;;;;;;;;;;;;:::i;29505:107::-;;;;;;;;;;-1:-1:-1;29505:107:0;;;;;:::i;:::-;;:::i;18224:106::-;;;;;;;;;;-1:-1:-1;18224:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;18302:23:0;18285:4;18302:23;;;:14;:23;;;;;;;;;18224:106;18867:95;;;;;;;;;;-1:-1:-1;18941:16:0;;18867:95;;29876:100;;;;;;;;;;-1:-1:-1;29876:100:0;;;;;:::i;:::-;;:::i;19287:95::-;;;;;;;;;;-1:-1:-1;19361:16:0;;19287:95;;4220:184;;;;;;;;;;-1:-1:-1;4220:184:0;;;;;:::i;:::-;;:::i;30594:85::-;;;;;;;;;;-1:-1:-1;30594:85:0;;;;;:::i;:::-;;:::i;19177:105::-;;;;;;;;;;-1:-1:-1;19256:21:0;;19177:105;;15636:73;15673:13;15699:5;15692:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15636:73;:::o;16378:144::-;16453:4;16463:39;1391:10;16486:7;16495:6;16463:8;:39::i;:::-;-1:-1:-1;16513:4:0;16378:144;;;;;:::o;30087:101::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;30153:23:0::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;30153:30:0::1;30179:4;30153:30;::::0;;30087:101::o;30828:89::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;30890:16:::1;:22:::0;30828:89::o;30922:91::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;30985:17:::1;:23:::0;30922:91::o;30408:104::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30476:23:0::1;30502:5;30476:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;30476:31:0::1;::::0;;30408:104::o;31414:103::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31486:16:::1;:26:::0;;-1:-1:-1;;;;;;31486:26:0::1;-1:-1:-1::0;;;;;31486:26:0;;;::::1;::::0;;;::::1;::::0;;31414:103::o;29617:139::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;29685:35:::1;29715:4;29685:25;29702:7;29685:12;;:16;;:25;;;;:::i;:::-;:29:::0;::::1;:35::i;:::-;29674:8;:46:::0;;;29724:16:::1;:27:::0;-1:-1:-1;29617:139:0:o;16527:310::-;16635:4;16645:36;16655:6;16663:9;16674:6;16645:9;:36::i;:::-;16685:132;16697:6;1391:10;16723:90;16761:6;16723:90;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16723:19:0;;;;;;:11;:19;;;;;;;;1391:10;16723:33;;;;;;;;;;:37;:90::i;:::-;16685:8;:132::i;:::-;-1:-1:-1;16828:4:0;16527:310;;;;;:::o;31632:232::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31696:7:::1;31692:137;;;31731:15;31709:19;:37:::0;31773:9:::1;::::0;31767:15:::1;::::0;:2:::1;:15;:::i;:::-;31761:21;::::0;:3:::1;:21;:::i;:::-;31750:8;:32:::0;31692:137:::1;;;31808:16;::::0;31797:8:::1;:27:::0;31692:137:::1;31832:17;:27:::0;;-1:-1:-1;;31832:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31632:232::o;16842:193::-;1391:10;16922:4;16964:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16964:34:0;;;;;;;;;;16922:4;;16932:83;;16955:7;;16964:50;;17003:10;16964:38;:50::i;29981:101::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30043:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30043:34:0::1;30073:4;30043:34;::::0;;29981:101::o;32489:258::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;32584:1:::1;32551:30;:34:::0;;;32589:24:::1;:28:::0;;;32621:30:::1;:34:::0;32659:83:::1;32674:4;32688;32695:7:::0;32704:24:::1;32688:4:::0;32704:9:::1;:24::i;:::-;32730:5;32737:4;32659:14;:83::i;:::-;32489:258:::0;:::o;32145:131::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;32237:34:::1;32255:7;32264:6;32237:17;:34::i;:::-;32145:131:::0;;:::o;31318:91::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31381:17:::1;:23:::0;31318:91::o;31522:105::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31596:16:::1;:26:::0;;-1:-1:-1;;;;;;31596:26:0::1;-1:-1:-1::0;;;;;31596:26:0;;;::::1;::::0;;;::::1;::::0;;31522:105::o;15971:109::-;-1:-1:-1;;;;;16057:18:0;16037:7;16057:18;;;:9;:18;;;;;;;15971:109::o;4122:93::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;4180:30:::1;4207:1;4180:18;:30::i;:::-;4122:93::o:0;29761:110::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;29831:35:::1;29861:4;29831:25;29848:7;29831:12;;:16;;:25;;;;:::i;:35::-;29818:10;:48:::0;-1:-1:-1;29761:110:0:o;18335:108::-;18379:7;18409:8;;18399:7;;:18;:39;;-1:-1:-1;18430:8:0;;;18335:108::o;18399:39::-;-1:-1:-1;18420:7:0;;;18335:108::o;31224:89::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31286:16:::1;:22:::0;31224:89::o;30517:72::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;30563:14:::1;:21:::0;;-1:-1:-1;;30563:21:0::1;30580:4;30563:21;::::0;;30517:72::o;30684:139::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;30752:10:::1;:18:::0;;-1:-1:-1;;30752:18:0::1;::::0;;30792:26:::1;30807:11:::0;30792:12:::1;:26;:::i;:::-;30774:15;:44:::0;-1:-1:-1;30684:139:0:o;15714:77::-;15753:13;15779:7;15772:14;;;;;:::i;17040:255::-;17125:4;17135:140;1391:10;17163:7;17174:97;17213:15;17174:97;;;;;;;;;;;;;;;;;1391:10;17174:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17174:34:0;;;;;;;;;;;;:38;:97::i;29402:96::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;29477:16:::1;::::0;;-1:-1:-1;;;;29457:36:0;::::1;-1:-1:-1::0;;;29477:16:0;;;::::1;;;29476:17;29457:36:::0;;::::1;;::::0;;29402:96::o;16223:150::-;16301:4;16311:42;1391:10;16335:9;16346:6;16311:9;:42::i;31018:97::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31084:20:::1;:26:::0;31018:97::o;30302:101::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30368:23:0::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;30368:30:0::1;30394:4;30368:30;::::0;;30302:101::o;31869:118::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31973:9:::1;::::0;31969:13:::1;::::0;:2:::1;:13;:::i;:::-;31960:22;::::0;:6;:22:::1;:::i;:::-;31940:17;:42:::0;-1:-1:-1;31869:118:0:o;31992:148::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;32057:22:::1;:32:::0;;-1:-1:-1;;32057:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;32098:37:::1;::::0;4452:41:1;;;32098:37:0::1;::::0;4440:2:1;4425:18;32098:37:0::1;;;;;;;31992:148:::0;:::o;30193:104::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30261:23:0::1;30287:5;30261:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;30261:31:0::1;::::0;;30193:104::o;31120:99::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;31187:21:::1;:27:::0;31120:99::o;32281:203::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;32343:16:::1;::::0;32361:14:::1;::::0;32325:51:::1;::::0;-1:-1:-1;;;;;32343:16:0::1;::::0;32325:17:::1;:51::i;:::-;32398:16;::::0;32416::::1;::::0;32380:53:::1;::::0;-1:-1:-1;;;;;32398:16:0::1;::::0;32380:17:::1;:53::i;:::-;32454:1;32437:14;:18:::0;;;32459:16:::1;:20:::0;32281:203::o;29505:107::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;29572:35:::1;29602:4;29572:25;29589:7;29572:12;;:16;;:25;;;;:::i;:35::-;29562:7;:45:::0;-1:-1:-1;29505:107:0:o;29876:100::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29936:27:0::1;29966:5;29936:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;29936:35:0::1;::::0;;29876:100::o;4220:184::-;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4302:22:0;::::1;4294:73;;;::::0;-1:-1:-1;;;4294:73:0;;6782:2:1;4294:73:0::1;::::0;::::1;6764:21:1::0;6821:2;6801:18;;;6794:30;6860:34;6840:18;;;6833:62;-1:-1:-1;;;6911:18:1;;;6904:36;6957:19;;4294:73:0::1;6580:402:1::0;4294:73:0::1;4371:28;4390:8;4371:18;:28::i;30594:85::-:0;3978:7;3998:6;-1:-1:-1;;;;;3998:6:0;1391:10;4047:23;4039:68;;;;-1:-1:-1;;;4039:68:0;;;;;;;:::i;:::-;30654:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;30654:20:0;;::::1;::::0;;;::::1;::::0;;30594:85::o;2393:88::-;2451:7;2471:5;2475:1;2471;:5;:::i;:::-;2464:12;2393:88;-1:-1:-1;;;2393:88:0:o;2486:::-;2544:7;2564:5;2568:1;2564;:5;:::i;20702:316::-;-1:-1:-1;;;;;20798:19:0;;20790:69;;;;-1:-1:-1;;;20790:69:0;;11784:2:1;20790:69:0;;;11766:21:1;11823:2;11803:18;;;11796:30;11862:34;11842:18;;;11835:62;-1:-1:-1;;;11913:18:1;;;11906:35;11958:19;;20790:69:0;11582:401:1;20790:69:0;-1:-1:-1;;;;;20871:21:0;;20863:69;;;;-1:-1:-1;;;20863:69:0;;10076:2:1;20863:69:0;;;10058:21:1;10115:2;10095:18;;;10088:30;10154:34;10134:18;;;10127:62;-1:-1:-1;;;10205:18:1;;;10198:33;10248:19;;20863:69:0;9874:399:1;20863:69:0;-1:-1:-1;;;;;20936:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20981:32;;12134:25:1;;;20981:32:0;;12107:18:1;20981:32:0;;;;;;;20702:316;;;:::o;25347:4050::-;-1:-1:-1;;;;;25447:20:0;;25439:71;;;;-1:-1:-1;;;25439:71:0;;11377:2:1;25439:71:0;;;11359:21:1;11416:2;11396:18;;;11389:30;11455:34;11435:18;;;11428:62;-1:-1:-1;;;11506:18:1;;;11499:36;11552:19;;25439:71:0;11175:402:1;25439:71:0;-1:-1:-1;;;;;25522:23:0;;25514:72;;;;-1:-1:-1;;;25514:72:0;;7189:2:1;25514:72:0;;;7171:21:1;7228:2;7208:18;;;7201:30;7267:34;7247:18;;;7240:62;-1:-1:-1;;;7318:18:1;;;7311:34;7362:19;;25514:72:0;6987:400:1;25514:72:0;25607:1;25598:6;:10;25590:72;;;;-1:-1:-1;;;25590:72:0;;10959:2:1;25590:72:0;;;10941:21:1;10998:2;10978:18;;;10971:30;11037:34;11017:18;;;11010:62;-1:-1:-1;;;11088:18:1;;;11081:47;11145:19;;25590:72:0;10757:413:1;25590:72:0;25668:20;3998:6;;-1:-1:-1;;;;;25691:17:0;;;3998:6;;25691:17;;:41;;-1:-1:-1;3978:7:0;3998:6;-1:-1:-1;;;;;25712:20:0;;;3998:6;;25712:20;25691:41;25668:64;-1:-1:-1;25736:20:0;-1:-1:-1;;;;;25759:26:0;;25780:4;25759:26;;:53;;-1:-1:-1;;;;;;25789:23:0;;25807:4;25789:23;25759:53;25839:14;;25736:76;;-1:-1:-1;25816:10:0;;-1:-1:-1;;;;;25829:24:0;;;25839:14;;25829:24;;:56;;-1:-1:-1;;;;;;25857:28:0;;14564:42;25857:28;25829:56;25915:14;;25816:69;;-1:-1:-1;25889:11:0;;-1:-1:-1;;;;;25902:27:0;;;25915:14;;25902:27;;:61;;-1:-1:-1;;;;;;25932:31:0;;14564:42;25932:31;25902:61;26006:14;;25889:74;;-1:-1:-1;25967:24:0;;-1:-1:-1;;;;;25996:24:0;;;26006:14;;25996:24;:59;;;;-1:-1:-1;;;;;;26024:31:0;;14564:42;26024:31;25996:59;25995:128;;;-1:-1:-1;26076:14:0;;-1:-1:-1;;;;;26063:27:0;;;26076:14;;26063:27;:59;;;;-1:-1:-1;;;;;;26094:28:0;;14564:42;26094:28;26063:59;25967:157;;26135:19;26134:20;:40;;;;;26159:15;26158:16;26134:40;26130:106;;;26184:14;;;;26176:60;;;;-1:-1:-1;;;26176:60:0;;5951:2:1;26176:60:0;;;5933:21:1;5990:2;5970:18;;;5963:30;6029:34;6009:18;;;6002:62;-1:-1:-1;;;6080:18:1;;;6073:31;6121:19;;26176:60:0;5749:397:1;26176:60:0;26246:17;;;;:25;;:17;:25;26242:387;;;26282:15;26281:16;:43;;;;-1:-1:-1;;;;;;26302:22:0;;;;;;:14;:22;;;;;;;;26301:23;26281:43;:73;;;;-1:-1:-1;;;;;;26329:25:0;;;;;;:14;:25;;;;;;;;26328:26;26281:73;:97;;;;;26359:19;26358:20;26281:97;:117;;;;;26383:15;26382:16;26281:117;26277:348;;;26404:37;26444:50;26491:2;26444:42;26466:19;;26445:15;26444:21;;:42;;;;:::i;:50::-;26520:15;26498:19;:37;26609:9;;26404:90;;-1:-1:-1;26550:70:0;;26563:56;;26603:15;;:2;:15;:::i;:::-;26597:21;;:3;:21;:::i;:::-;26563:29;;:33;:56::i;:::-;26550:8;;;:12;:70::i;:::-;26539:8;:81;-1:-1:-1;26277:348:0;-1:-1:-1;;;;;26639:22:0;;;;;;:14;:22;;;;;;;;26638:23;:53;;;;-1:-1:-1;;;;;;26666:25:0;;;;;;:14;:25;;;;;;;;26665:26;26638:53;:77;;;;;26696:19;26695:20;26638:77;26634:1142;;;-1:-1:-1;;;;;26730:22:0;;;;;;:14;:22;;;;;;;;26729:23;26721:74;;;;-1:-1:-1;;;26721:74:0;;8379:2:1;26721:74:0;;;8361:21:1;8418:2;8398:18;;;8391:30;8457:34;8437:18;;;8430:62;-1:-1:-1;;;8508:18:1;;;8501:36;8554:19;;26721:74:0;8177:402:1;26721:74:0;-1:-1:-1;;;;;26808:25:0;;;;;;:14;:25;;;;;;;;26807:26;26799:80;;;;-1:-1:-1;;;26799:80:0;;5541:2:1;26799:80:0;;;5523:21:1;5580:2;5560:18;;;5553:30;5619:34;5599:18;;;5592:62;-1:-1:-1;;;5670:18:1;;;5663:39;5719:19;;26799:80:0;5339:405:1;26799:80:0;26907:9;26892:25;;;;:14;:25;;;;;;;;26891:26;26883:99;;;;-1:-1:-1;;;26883:99:0;;6353:2:1;26883:99:0;;;6335:21:1;6392:2;6372:18;;;6365:30;6431:34;6411:18;;;6404:62;6502:30;6482:18;;;6475:58;6550:19;;26883:99:0;6151:424:1;26883:99:0;27093:15;27092:16;:36;;;;;27113:15;27112:16;27092:36;27088:684;;;27153:14;;-1:-1:-1;;;;;27140:27:0;;;27153:14;;27140:27;;;;:69;;-1:-1:-1;27192:16:0;;-1:-1:-1;;;;;27171:38:0;;;27192:16;;27171:38;;27140:69;:84;;;;-1:-1:-1;27214:10:0;;;;;;;27213:11;27140:84;27136:386;;;27264:10;;27241:20;27251:9;27241;:20::i;:::-;:33;27230:124;;;;-1:-1:-1;;;27230:124:0;;10480:2:1;27230:124:0;;;10462:21:1;10519:2;10499:18;;;10492:30;10558:34;10538:18;;;10531:62;10629:34;10609:18;;;10602:62;-1:-1:-1;;;10680:19:1;;;10673:37;10727:19;;27230:124:0;10278:474:1;27230:124:0;27405:10;;27369:32;27394:6;27369:20;27379:9;27369;:20::i;:::-;:24;;:32::i;:::-;:46;;27358:159;;;;-1:-1:-1;;;27358:159:0;;8786:2:1;27358:159:0;;;8768:21:1;8825:2;8805:18;;;8798:30;8864:34;8844:18;;;8837:62;8935:34;8915:18;;;8908:62;9007:30;8986:19;;;8979:59;9055:19;;27358:159:0;8584:496:1;27358:159:0;27531:5;:20;;;;-1:-1:-1;27541:10:0;;;;;;;27540:11;27531:20;27527:125;;;27576:7;;27566:6;:17;;27558:89;;;;-1:-1:-1;;;27558:89:0;;;;;;;:::i;:::-;27661:6;27657:111;;;27691:8;;27681:6;:18;;27673:90;;;;-1:-1:-1;;;27673:90:0;;;;;;;:::i;:::-;27781:12;27824:17;;27796:24;27814:4;27796:9;:24::i;:::-;27871:22;;27796:45;-1:-1:-1;27796:45:0;;-1:-1:-1;27847:21:0;;27871:22;;:35;;;;;27899:7;27871:35;:59;;;;-1:-1:-1;27913:17:0;;;;;;;27912:18;27871:59;:71;;;;;27936:6;27871:71;:93;;;;;27949:15;27948:16;27871:93;:119;;;;;27971:19;27970:20;27871:119;27847:143;;28000:16;27996:38;;;28018:16;:14;:16::i;:::-;-1:-1:-1;;;;;28069:26:0;;28040:12;28069:26;;;:18;:26;;;;;;28055:4;;28069:26;;;:59;;-1:-1:-1;;;;;;28099:29:0;;;;;;:18;:29;;;;;;;;28069:59;:82;;;;28132:19;28069:82;28065:112;;;-1:-1:-1;28167:5:0;28065:112;28190:10;;;;;;;:19;;;;;28204:5;28190:19;:39;;;;;28214:15;28213:16;28190:39;:61;;;;-1:-1:-1;28234:17:0;;;;;;;28233:18;28190:61;:85;;;;;28256:19;28255:20;28190:85;:105;;;;;28280:15;28279:16;28190:105;28186:1207;;;28309:16;;-1:-1:-1;;;28309:16:0;;;;28303:686;;28351:29;28373:6;28351:17;28361:6;28351:9;:17::i;:::-;:21;;:29::i;:::-;-1:-1:-1;;;;;28331:17:0;;;;;;:9;:17;;;;;:49;;;;28405:24;28424:4;28405:14;:6;28416:2;28405:10;:14::i;:24::-;28384:45;-1:-1:-1;28433:25:0;28461:22;:6;28384:45;28461:10;:22::i;:::-;28433:50;;28510:36;28535:10;28510:20;28520:9;28510;:20::i;:36::-;-1:-1:-1;;;;;28487:20:0;;;;;;;:9;:20;;;;;;;:59;;;;28555:39;;;;;;;;;;28583:10;12134:25:1;;12122:2;12107:18;;11988:177;28555:39:0;;;;;;;;28643:4;28625:24;;;;:9;:24;;;;;;:47;;28654:17;28625:28;:47::i;:::-;28616:4;28598:24;;;;:9;:24;;;;;:74;28703:24;;:47;;28732:17;28703:28;:47::i;:::-;28676:24;:74;-1:-1:-1;28186:1207:0;;-1:-1:-1;28186:1207:0;28303:686;-1:-1:-1;;;;;28763:25:0;;;;;;:14;:25;;;;;:32;;-1:-1:-1;;28763:32:0;28791:4;28763:32;;;28799:74;28814:5;28821:6;28778:9;28840:6;28848:7;28857:15;28799:14;:74::i;:::-;28186:1207;;;29006:10;;;;;;;29005:11;:20;;;;;29020:5;29005:20;:40;;;;;29030:15;29029:16;29005:40;:62;;;;-1:-1:-1;29050:17:0;;;;;;;29049:18;29005:62;:86;;;;;29072:19;29071:20;29005:86;:106;;;;;29096:15;29095:16;29005:106;29001:392;;;29136:15;;29120:12;:31;;:62;;;;-1:-1:-1;29168:14:0;;-1:-1:-1;;;;;29155:27:0;;;29168:14;;29155:27;;29120:62;29115:102;;;-1:-1:-1;;;;;29185:25:0;;;;;;:14;:25;;;;;:32;;-1:-1:-1;;29185:32:0;29213:4;29185:32;;;29115:102;29221:74;29236:5;29243:6;29251:9;29262:6;29270:7;29279:15;29221:14;:74::i;29001:392::-;29314:74;29329:5;29336:6;29344:9;29355:6;29363:7;29372:15;29314:14;:74::i;:::-;25435:3962;;;;;;;;25347:4050;;;:::o;2672:194::-;2768:7;2811:12;2803:6;;;;2795:29;;;;-1:-1:-1;;;2795:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2840:5:0;;;2672:194::o;2207:88::-;2265:7;2285:5;2289:1;2285;:5;:::i;24240:1102::-;24396:7;24391:28;;24405:14;:12;:14::i;:::-;24423:20;24446:36;24468:5;24475:6;24446:21;:36::i;:::-;24519:30;;24423:59;;-1:-1:-1;24519:48:0;;24423:59;24519:34;:48::i;:::-;24486:30;:81;24571:18;24592:40;24618:5;24625:6;24592:25;:40::i;:::-;24663:24;;24571:61;;-1:-1:-1;24663:40:0;;24571:61;24663:28;:40::i;:::-;24636:24;:67;24707:20;24730:36;24752:5;24759:6;24730:21;:36::i;:::-;24803:30;;24707:59;;-1:-1:-1;24803:48:0;;24707:59;24803:34;:48::i;:::-;24770:30;:81;24855:16;24874:46;24907:12;24874:28;:12;24891:10;24874:16;:28::i;:46::-;-1:-1:-1;;;;;24946:17:0;;;;;;:9;:17;;;;;;24855:65;;-1:-1:-1;24946:29:0;;24968:6;24946:21;:29::i;:::-;-1:-1:-1;;;;;24926:17:0;;;;;;:9;:17;;;;;:49;24988:20;:6;24999:8;24988:10;:20::i;:::-;-1:-1:-1;;;;;25035:20:0;;;;;;:9;:20;;;;;;24979:29;;-1:-1:-1;25035:32:0;;24979:29;25035:24;:32::i;:::-;-1:-1:-1;;;;;25012:20:0;;;;;;:9;:20;;;;;:55;25078:15;25073:62;;25117:9;-1:-1:-1;;;;;25100:35:0;25109:6;-1:-1:-1;;;;;25100:35:0;;25128:6;25100:35;;;;12134:25:1;;12122:2;12107:18;;11988:177;25100:35:0;;;;;;;;25073:62;25145:12;;25141:164;;25208:4;25190:24;;;;:9;:24;;;;;;:38;;25219:8;25190:28;:38::i;:::-;25181:4;25163:24;;;;:9;:24;;;;;:65;25237:15;25232:68;;25259:41;;12134:25:1;;;25284:4:0;;-1:-1:-1;;;;;25259:41:0;;;;;12122:2:1;12107:18;25259:41:0;;;;;;;25232:68;25313:7;25308:29;;25322:15;20409:24;;20390:16;:43;20460:28;;20437:20;:51;20511:24;;20492:16;:43;20561:25;;20541:17;:45;20614:29;;20590:21;:53;20667:25;;20647:17;:45;20353:344;25322:15;24387:955;;;;24240:1102;;;;;;:::o;3414:293::-;3522:6;3497:21;:31;;3489:73;;;;-1:-1:-1;;;3489:73:0;;8021:2:1;3489:73:0;;;8003:21:1;8060:2;8040:18;;;8033:30;8099:31;8079:18;;;8072:59;8148:18;;3489:73:0;7819:353:1;3489:73:0;3569:12;3587:9;-1:-1:-1;;;;;3587:14:0;3609:6;3587:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3568:52;;;3632:7;3624:78;;;;-1:-1:-1;;;3624:78:0;;7594:2:1;3624:78:0;;;7576:21:1;7633:2;7613:18;;;7606:30;7672:34;7652:18;;;7645:62;7743:28;7723:18;;;7716:56;7789:19;;3624:78:0;7392:422:1;3624:78:0;3485:222;3414:293;;:::o;4409:167::-;4476:16;4495:6;;-1:-1:-1;;;;;4505:17:0;;;-1:-1:-1;;;;;;4505:17:0;;;;;;4531:40;;4495:6;;;;;;;4531:40;;4476:16;4531:40;4472:104;4409:167;:::o;2300:88::-;2358:7;2378:5;2382:1;2378;:5;:::i;21023:1911::-;15031:17;:24;;-1:-1:-1;;15031:24:0;;;;;21186:30:::1;::::0;15031:24;;;;;;21186:34;21182:296:::1;;21245:105;21344:5;21245:94;21321:17;;21245:71;21291:24;21309:4;21291:9;:24::i;:::-;21245:30;::::0;:41:::1;::::0;21280:5:::1;21245:34;:41::i;:71::-;:75:::0;::::1;:94::i;:105::-;21226:124:::0;-1:-1:-1;21378:23:0::1;21226:124:::0;21399:1:::1;21378:20;:23::i;:::-;21354:47:::0;-1:-1:-1;21430:43:0::1;:16:::0;21354:47;21430:20:::1;:43::i;:::-;21405:68;;21182:296;21515:24;::::0;21483:18:::1;::::0;21515:28;21511:155:::1;;21562:99;21655:5;21562:88;21632:17;;21562:65;21602:24;21620:4;21602:9;:24::i;:::-;21562;::::0;:35:::1;::::0;21591:5:::1;21562:28;:35::i;:99::-;21549:112;;21511:155;21709:30;::::0;21671:24:::1;::::0;21709:34;21705:173:::1;;21768:105;21867:5;21768:94;21844:17;;21768:71;21814:24;21832:4;21814:9;:24::i;:::-;21768:30;::::0;:41:::1;::::0;21803:5:::1;21768:34;:41::i;:105::-;21749:124;;21705:173;21883:19;21905:59;21947:16:::0;21905:37:::1;:21:::0;21931:10;21905:25:::1;:37::i;:59::-;21883:81:::0;-1:-1:-1;21995:21:0::1;22020:29;21883:81:::0;22020:16:::1;:29::i;:::-;22053:15;22071:41;:21;22097:14:::0;22071:25:::1;:41::i;:::-;22053:59:::0;-1:-1:-1;22122:20:0;;22118:370:::1;;22148:24;22175:73;22242:5;22175:62;22187:49;22224:11:::0;22175:62;22187:21;22242:5;22187:25:::1;:32::i;:49::-;22175:7:::0;;:11:::1;:62::i;:73::-;22148:100;;22252:54;22265:22;22289:16;22252:12;:54::i;:::-;22343:30;::::0;:52:::1;::::0;22378:16;22343:34:::1;:52::i;:::-;22310:30;:85:::0;22404:79:::1;::::0;;13357:25:1;;;13413:2;13398:18;;13391:34;;;13441:18;;;13434:34;;;22404:79:0::1;::::0;13345:2:1;13330:18;22404:79:0::1;;;;;;;22144:344;22118:370;22497:14:::0;;22493:199:::1;;22534:82;22553:62;22609:5;22553:51;22565:38;22591:11:::0;22553:51;22565:10;22609:5;22565:14:::1;:21::i;22553:62::-;22534:14;::::0;;:18:::1;:82::i;:::-;22517:14;:99:::0;22647:24:::1;::::0;:40:::1;::::0;22676:10;22647:28:::1;:40::i;:::-;22620:24;:67:::0;22493:199:::1;22701:20:::0;;22697:233:::1;;22746:90;22767:68;22829:5;22767:57;22779:44;22811:11:::0;22767:57;22779:16;22829:5;22779:20:::1;:27::i;22767:68::-;22746:16;::::0;;:20:::1;:90::i;:::-;22727:16;:109:::0;22873:30:::1;::::0;:52:::1;::::0;22908:16;22873:34:::1;:52::i;:::-;22840:30;:85:::0;22697:233:::1;-1:-1:-1::0;;15064:17:0;:25;;-1:-1:-1;;15064:25:0;;;-1:-1:-1;;;;;;21023:1911:0:o;17300:689::-;17340:16;;:21;:50;;;;-1:-1:-1;17365:20:0;;:25;17340:50;:75;;;;-1:-1:-1;17394:16:0;;:21;17340:75;17336:88;;;17300:689::o;17336:88::-;17431:17;;:22;:52;;;;-1:-1:-1;17457:21:0;;:26;17431:52;:78;;;;-1:-1:-1;17487:17:0;;:22;17431:78;17427:91;;;17300:689::o;17427:91::-;17550:16;;;17523:24;:43;17601:20;;;17570:28;:51;17652:16;;;17625:24;:43;17702:17;;;17674:25;:45;17755:21;;;17723:29;:53;17808:17;;;17780:25;:45;-1:-1:-1;17831:20:0;;;;17855:24;;;;17883:20;;;;17909:21;;;17934:25;;;17963:21;17300:689::o;23607:202::-;23688:7;23717:4;23708:13;;;;:96;;23765:39;23799:4;23765:29;23776:17;;23765:6;:10;;:29;;;;:::i;:39::-;23708:96;;;23724:38;23757:4;23724:28;23735:16;;23724:6;:10;;:28;;;;:::i;23814:214::-;23899:7;23928:4;23919:13;;;;:104;;23980:43;24018:4;23980:33;23991:21;;23980:6;:10;;:33;;;;:::i;23919:104::-;23935:42;23972:4;23935:32;23946:20;;23935:6;:10;;:32;;;;:::i;24033:202::-;24114:7;24143:4;24134:13;;;;:96;;24191:39;24225:4;24191:29;24202:17;;24191:6;:10;;:29;;;;:::i;24134:96::-;24150:38;24183:4;24150:28;24161:16;;24150:6;:10;;:28;;;;:::i;22939:380::-;23022:16;;;23036:1;23022:16;;;;;;;;22998:21;;23022:16;;;;;;;;;;-1:-1:-1;23022:16:0;22998:40;;23060:4;23042;23047:1;23042:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23042:23:0;;;:7;;;;;;;;;;:23;;;;23079:16;;:23;;;-1:-1:-1;;;23079:23:0;;;;:16;;;;;:21;;:23;;;;;23042:7;;23079:23;;;;;:16;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23069:4;23074:1;23069:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23069:33:0;;;:7;;;;;;;;;:33;23138:16;;23106:63;;23123:4;;23138:16;23157:11;23106:8;:63::i;:::-;23173:16;;-1:-1:-1;;;;;23173:16:0;:67;23244:11;23173:16;23264:4;23280;23289:21;:15;23307:3;23289:21;:::i;:::-;23173:141;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22994:325;22939:380;:::o;23324:278::-;23430:16;;23398:63;;23415:4;;-1:-1:-1;;;;;23430:16:0;23449:11;23398:8;:63::i;:::-;23465:16;;-1:-1:-1;;;;;23465:16:0;:32;23505:9;23527:4;23536:11;23465:16;;23561:7;3978;3998:6;-1:-1:-1;;;;;3998:6:0;;3932:77;23561:7;23572:21;:15;23590:3;23572:21;:::i;:::-;23465:132;;;;;;-1:-1:-1;;;;;;23465:132:0;;;-1:-1:-1;;;;;4059:15:1;;;23465:132:0;;;4041:34:1;4091:18;;;4084:34;;;;4134:18;;;4127:34;;;;4177:18;;;4170:34;;;;4241:15;;;4220:19;;;4213:44;4273:19;;;4266:35;;;;3975:19;;23465:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23324:278;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;782:323::-;858:6;866;919:2;907:9;898:7;894:23;890:32;887:52;;;935:1;932;925:12;887:52;974:9;961:23;993:31;1018:5;993:31;:::i;:::-;1043:5;1095:2;1080:18;;;;1067:32;;-1:-1:-1;;;782:323:1:o;1110:388::-;1178:6;1186;1239:2;1227:9;1218:7;1214:23;1210:32;1207:52;;;1255:1;1252;1245:12;1207:52;1294:9;1281:23;1313:31;1338:5;1313:31;:::i;:::-;1363:5;-1:-1:-1;1420:2:1;1405:18;;1392:32;1433:33;1392:32;1433:33;:::i;:::-;1485:7;1475:17;;;1110:388;;;;;:::o;1503:456::-;1580:6;1588;1596;1649:2;1637:9;1628:7;1624:23;1620:32;1617:52;;;1665:1;1662;1655:12;1617:52;1704:9;1691:23;1723:31;1748:5;1723:31;:::i;:::-;1773:5;-1:-1:-1;1830:2:1;1815:18;;1802:32;1843:33;1802:32;1843:33;:::i;:::-;1503:456;;1895:7;;-1:-1:-1;;;1949:2:1;1934:18;;;;1921:32;;1503:456::o;2284:273::-;2340:6;2393:2;2381:9;2372:7;2368:23;2364:32;2361:52;;;2409:1;2406;2399:12;2361:52;2448:9;2435:23;2501:5;2494:13;2487:21;2480:5;2477:32;2467:60;;2523:1;2520;2513:12;2562:180;2621:6;2674:2;2662:9;2653:7;2649:23;2645:32;2642:52;;;2690:1;2687;2680:12;2642:52;-1:-1:-1;2713:23:1;;2562:180;-1:-1:-1;2562:180:1:o;2747:306::-;2835:6;2843;2851;2904:2;2892:9;2883:7;2879:23;2875:32;2872:52;;;2920:1;2917;2910:12;2872:52;2949:9;2943:16;2933:26;;2999:2;2988:9;2984:18;2978:25;2968:35;;3043:2;3032:9;3028:18;3022:25;3012:35;;2747:306;;;;;:::o;4737:597::-;4849:4;4878:2;4907;4896:9;4889:21;4939:6;4933:13;4982:6;4977:2;4966:9;4962:18;4955:34;5007:1;5017:140;5031:6;5028:1;5025:13;5017:140;;;5126:14;;;5122:23;;5116:30;5092:17;;;5111:2;5088:26;5081:66;5046:10;;5017:140;;;5175:6;5172:1;5169:13;5166:91;;;5245:1;5240:2;5231:6;5220:9;5216:22;5212:31;5205:42;5166:91;-1:-1:-1;5318:2:1;5297:15;-1:-1:-1;;5293:29:1;5278:45;;;;5325:2;5274:54;;4737:597;-1:-1:-1;;;4737:597:1:o;9085:356::-;9287:2;9269:21;;;9306:18;;;9299:30;9365:34;9360:2;9345:18;;9338:62;9432:2;9417:18;;9085:356::o;9446:423::-;9648:2;9630:21;;;9687:2;9667:18;;;9660:30;9726:34;9721:2;9706:18;;9699:62;9797:29;9792:2;9777:18;;9770:57;9859:3;9844:19;;9446:423::o;12170:980::-;12432:4;12480:3;12469:9;12465:19;12511:6;12500:9;12493:25;12537:2;12575:6;12570:2;12559:9;12555:18;12548:34;12618:3;12613:2;12602:9;12598:18;12591:31;12642:6;12677;12671:13;12708:6;12700;12693:22;12746:3;12735:9;12731:19;12724:26;;12785:2;12777:6;12773:15;12759:29;;12806:1;12816:195;12830:6;12827:1;12824:13;12816:195;;;12895:13;;-1:-1:-1;;;;;12891:39:1;12879:52;;12986:15;;;;12951:12;;;;12927:1;12845:9;12816:195;;;-1:-1:-1;;;;;;;13067:32:1;;;;13062:2;13047:18;;13040:60;-1:-1:-1;;;13131:3:1;13116:19;13109:35;13028:3;12170:980;-1:-1:-1;;;12170:980:1:o;13479:128::-;13519:3;13550:1;13546:6;13543:1;13540:13;13537:39;;;13556:18;;:::i;:::-;-1:-1:-1;13592:9:1;;13479:128::o;13612:217::-;13652:1;13678;13668:132;;13722:10;13717:3;13713:20;13710:1;13703:31;13757:4;13754:1;13747:15;13785:4;13782:1;13775:15;13668:132;-1:-1:-1;13814:9:1;;13612:217::o;13834:422::-;13923:1;13966:5;13923:1;13980:270;14001:7;13991:8;13988:21;13980:270;;;14060:4;14056:1;14052:6;14048:17;14042:4;14039:27;14036:53;;;14069:18;;:::i;:::-;14119:7;14109:8;14105:22;14102:55;;;14139:16;;;;14102:55;14218:22;;;;14178:15;;;;13980:270;;;13984:3;13834:422;;;;;:::o;14261:131::-;14321:5;14350:36;14377:8;14371:4;14446:5;14476:8;14466:80;;-1:-1:-1;14517:1:1;14531:5;;14466:80;14565:4;14555:76;;-1:-1:-1;14602:1:1;14616:5;;14555:76;14647:4;14665:1;14660:59;;;;14733:1;14728:130;;;;14640:218;;14660:59;14690:1;14681:10;;14704:5;;;14728:130;14765:3;14755:8;14752:17;14749:43;;;14772:18;;:::i;:::-;-1:-1:-1;;14828:1:1;14814:16;;14843:5;;14640:218;;14942:2;14932:8;14929:16;14923:3;14917:4;14914:13;14910:36;14904:2;14894:8;14891:16;14886:2;14880:4;14877:12;14873:35;14870:77;14867:159;;;-1:-1:-1;14979:19:1;;;15011:5;;14867:159;15058:34;15083:8;15077:4;15058:34;:::i;:::-;15128:6;15124:1;15120:6;15116:19;15107:7;15104:32;15101:58;;;15139:18;;:::i;:::-;15177:20;;14397:806;-1:-1:-1;;;14397:806:1:o;15208:168::-;15248:7;15314:1;15310;15306:6;15302:14;15299:1;15296:21;15291:1;15284:9;15277:17;15273:45;15270:71;;;15321:18;;:::i;:::-;-1:-1:-1;15361:9:1;;15208:168::o;15381:125::-;15421:4;15449:1;15446;15443:8;15440:34;;;15454:18;;:::i;:::-;-1:-1:-1;15491:9:1;;15381:125::o;15511:380::-;15590:1;15586:12;;;;15633;;;15654:61;;15708:4;15700:6;15696:17;15686:27;;15654:61;15761:2;15753:6;15750:14;15730:18;15727:38;15724:161;;;15807:10;15802:3;15798:20;15795:1;15788:31;15842:4;15839:1;15832:15;15870:4;15867:1;15860:15;15724:161;;15511:380;;;:::o;15896:127::-;15957:10;15952:3;15948:20;15945:1;15938:31;15988:4;15985:1;15978:15;16012:4;16009:1;16002:15;16028:127;16089:10;16084:3;16080:20;16077:1;16070:31;16120:4;16117:1;16110:15;16144:4;16141:1;16134:15;16292:131;-1:-1:-1;;;;;16367:31:1;;16357:42;;16347:70;;16413:1;16410;16403:12

Swarm Source

ipfs://5ad2270574748185cbaa3477701e1fb5c166d44afda1e7ab173ed347db8aac23
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.