ETH Price: $3,317.01 (+0.28%)
Gas: 23 Gwei

Token

GURIMI (GURI)
 

Overview

Max Total Supply

100,000,000,000 GURI

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
549,384,194.852142968331257854 GURI

Value
$0.00
0xa6d215697923cca24a32ee1aa054c47eb6e4de57
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GURIMI

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-01-25
*/

/*

GURIMI


https://t.me/gurimi_erc

*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
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 Address {
function isContract(address account) internal view returns (bool) {
  // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
  // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
  // for accounts without code, i.e. `keccak256('')`
  bytes32 codehash;
  bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
  // solhint-disable-next-line no-inline-assembly
  assembly { codehash := extcodehash(account) }
  return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
  require(address(this).balance >= amount, "Address: insufficient balance");
  // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
  (bool success, ) = recipient.call{ value: amount }("");
  require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
  return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
  return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
  require(address(this).balance >= value, "Address: insufficient balance for call");
  return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
  require(isContract(target), "Address: call to non-contract");
  (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
  if (success) {
      return returndata;
  } else {
       if (returndata.length > 0) {
          assembly {
              let returndata_size := mload(returndata)
              revert(add(32, returndata), returndata_size)
          }
      } else {
          revert(errorMessage);
      }
  }
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
  _setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
  return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
  require(owner() == _msgSender(), "Ownable: caller is not the owner");
  _;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
  _setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
  require(newOwner != address(0), "Ownable: new owner is the zero address");
  _setOwner(newOwner);
}
function _setOwner(address newOwner) private {
  address oldOwner = _owner;
  _owner = newOwner;
  emit OwnershipTransferred(oldOwner, newOwner);
}
}
contract GURIMI is Context,IERC20, Ownable{
using Address for address;
string private _name = "GURIMI";
string private _symbol = "GURI";
uint8 private _decimals = 18;
uint256 totalFeeFortx = 0;
uint256 maxWalletTreshold = 2;
uint256 maxTxTreshold = 1;
uint256 private swapTreshold =1;
uint256 private currentThreshold = 10; //Once the token value goes up this number can be decreased (To reduce price impact on asset)
uint256 private _totalSupply = (10000000 * 10**4) * 10**_decimals; //
uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000;
mapping (address => uint256) private _balances;
mapping (address => bool) private _excludedFromFees;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public automatedMarketMakerPairs;
address _owner;
address payable public marketingAddress = payable(0xDe6Bd29Eb2b2A245bB0674A6E76C860D51Fa9463);
uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/200; // starting 2%
uint256 maxTxAmount = _totalSupply*maxTxTreshold/100;
mapping (address => bool) botWallets;
bool botTradeEnabled = false;
bool checkWalletSize = true;
mapping (address => bool) private _liquidityHolders;
mapping (address => bool) private presaleAddresses;
//GURIMI Taxes
uint256 private buyliqFee = 1; //0
uint256 private buyprevLiqFee = 0;
uint256 private buymktFee = 6;//0
uint256 private buyPrevmktFee = 0;
uint256 GURIMICOINDaycooldown = 0;
bool private tradeEnabled = false;
uint256 private sellliqFee = 1;
uint256 private sellprevLiqFee = 0;
uint256 private sellmktFee = 49;
uint256 private sellPrevmktFee = 0;
uint256 private maxFeeSet = 99;
bool public inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
uint256 private mktTokens = 0;
uint256 private liqTokens = 0;
event SwapAndLiquify(uint256 tokensSwapped,
  uint256 ethReceived,
  uint256 tokensIntoLiquidity
);
event tokensSwappedDuringTokenomics(uint256 amount);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
// 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
IUniswapV2Router02 _router;
address public uniswapV2Pair;
//Balances tracker
modifier lockTheSwap{
  inSwapAndLiquify = true;
  _;
  inSwapAndLiquify = false;
}
constructor(){
  _balances[_msgSender()] = _totalSupply;
  //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks
  IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
   uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory())
      .createPair(address(this), _uniRouter.WETH());
   _excludedFromFees[owner()] = true;   
  _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees
  _router = _uniRouter;
  _liquidityHolders[address(_router)] = true;
  _liquidityHolders[owner()] = true;
  _liquidityHolders[address(this)] = true;
  _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
  emit Transfer(address(0),_msgSender(),_totalSupply);
}
receive() external payable{}
//general token data and tracking of balances to be swapped.
function getOwner()external view returns(address){
      return owner();
}
function currentmktTokens() external view returns (uint256){
      return mktTokens;
}
function currentLiqTokens() external view returns (uint256){
      return liqTokens;
}
function totalSupply() external view override returns (uint256){
      return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256){
  return _balances[account];
}
function transfer(address recipient, uint256 amount) external override returns (bool){
      _transfer(_msgSender(),recipient,amount);
      return true;
}
function allowance(address owner, address spender) external view override returns (uint256){
      return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) external override returns (bool){
      _approve(_msgSender(),spender,amount);
      return true;
}
function decimals()external view returns(uint256){
  return _decimals;
}
function name() external view returns (string memory) {
  return _name;
}
function symbol() external view returns (string memory){
  return _symbol;
}
  function updateMaxTxTreshold(uint256 newVal) public onlyOwner{
  require (newVal > 1, "newVal can not be lower than 1");
  maxTxTreshold = newVal;
  maxTxAmount = _totalSupply*maxTxTreshold/100;// 1%
}
function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{
   require (newVal > 1, "newVal can not be lower than 1");
  maxWalletTreshold = newVal;
  maxWalletAmount = _totalSupply*maxWalletTreshold/100;
}
function transferFrom(
  address sender,
  address recipient,
  uint256 amount
) public override returns (bool){
  require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance");
  _transfer(sender, recipient, amount);
  _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
  return true;
}
//Tokenomics related functions
function COINDay() public onlyOwner{
   require(block.timestamp > GURIMICOINDaycooldown, "You cant call GURIMICOINCoinDay more than once a day");
   buyPrevmktFee = buymktFee;
   buyprevLiqFee = buyliqFee;
   buyliqFee = 0;
   buymktFee = 0;
}
function GURIMICOINCoinDayOver() public onlyOwner{
   buyliqFee = buyprevLiqFee;
   buymktFee = buyPrevmktFee;
   GURIMICOINDaycooldown = block.timestamp + 86400;
}
function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{
  botWallets[detectedBot] = isBot;
}
function currentbuyliqFee() public view returns (uint256){
      return buyliqFee;
}
function currentbuymktfee() public view returns (uint256){
      return buymktFee;
}
function currentsellLiqFee() public view returns (uint256){
      return sellliqFee;
}
function currentsellmktfee() public view returns (uint256){
      return sellmktFee;
}
function currentThresholdInt()public view returns (uint256){
  return currentThreshold;
}
function isExcluded(address toCheck)public view returns (bool){
      return _excludedFromFees[toCheck];
}
function _transfer(address from, address to, uint256 amount) internal{
   require(from != address(0), "ERC20: transfer from the zero address");
  require(to != address(0), "ERC20: transfer to the zero address");
  require(amount > 0,"ERC20: transfered amount must be greater than zero");
  uint256 senderBalance = _balances[from];
  require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
  if(tradeEnabled == false){
      require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled");
  }
  if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){
  require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
   if(from == uniswapV2Pair){
          require(balanceOf(to)+amount <= maxWalletAmount);
      }
  }
  uint256 inContractBalance = balanceOf(address(this));
  if(inContractBalance >=requiredTokensToSwap &&
      !inSwapAndLiquify &&
      from != uniswapV2Pair &&
      swapAndLiquifyEnabled){
          if(inContractBalance >= requiredTokensToSwap ){
              inContractBalance = requiredTokensToSwap;
              swapForTokenomics(inContractBalance);
          }
      }
      bool takeFees = true;
 
      if(_excludedFromFees[from] || _excludedFromFees[to]) {
          totalFeeFortx = 0;
          takeFees = false;
   
      }
      uint256 mktAmount = 0;
      uint256 liqAmount = 0;  // Amount to be added to liquidity.
      if(takeFees){
    
    
          //bot fees
          if(botWallets[from] == true||botWallets[to]==true){
              revert("No bots can trade");
          }
          //Selling fees
          if (automatedMarketMakerPairs[to] && to != address(_router) ){
                  totalFeeFortx = 0;
                  mktAmount = amount * sellmktFee/100;
                  liqAmount = amount * sellliqFee/100;
                  totalFeeFortx = mktAmount + liqAmount;
          }
          //Buy Fees
          else if(automatedMarketMakerPairs[from] && from != address(_router)) {
    
              totalFeeFortx = 0;
              mktAmount = amount * buymktFee/100;
              liqAmount = amount * buyliqFee/100;
              totalFeeFortx = mktAmount + liqAmount ;
          }
    
      }
      _balances[from] = senderBalance - amount;
      _balances[to] += amount - mktAmount - liqAmount;
    if(liqAmount != 0) {
      _balances[address(this)] += totalFeeFortx;
      //tLiqTotal += liqAmount;
      liqTokens += liqAmount;
      mktTokens += mktAmount;
      emit Transfer(from, address(this), totalFeeFortx);
       }
      emit Transfer(from, to,amount-totalFeeFortx);
 }
function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{
  swapAndLiquify(liqTokens);
  swapTokensForETHmkt(mktTokens);
  emit tokensSwappedDuringTokenomics(balanceToswap);
  mktTokens = 0;
  liqTokens = 0;
}
function addLimitExempt(address newAddress)external onlyOwner{
  _liquidityHolders[newAddress] = true;
}
function swapTokensForETHmkt(uint256 amount)private {
  address[] memory path = new address[](2);
  path[0] = address(this);
  path[1] = _router.WETH();
  _approve(address(this), address(_router), amount);
   _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      amount,
      0, // Accept any amount of ETH.
      path,
      marketingAddress,
      block.timestamp
  );
}
function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{
  //uint256 contractBalance = tokenToClear.balanceOf(address(this));
  tokenToClear.transfer(destination, amount);
}
function unstuckETH(address payable destination) public onlyOwner{
  uint256 ethBalance = address(this).balance;
  payable(destination).transfer(ethBalance);
}
function tradeStatus(bool status) public onlyOwner{
  tradeEnabled = status;
}
function swapAndLiquify(uint256 liqTokensPassed) private {
  uint256 half = liqTokensPassed / 2;
  uint256 otherHalf = liqTokensPassed - half;
  uint256 initialBalance = address(this).balance;
  swapTokensForETH(half);
  uint256 newBalance = address(this).balance - (initialBalance);
  addLiquidity(otherHalf, newBalance);
  emit SwapAndLiquify(half,newBalance,otherHalf);
}
function swapTokensForETH(uint256 tokenAmount) private{
  address[] memory path = new address[](2);
  path[0] = address(this);
  path[1] = _router.WETH();
  _approve(address(this), address(_router), tokenAmount);
   _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      tokenAmount,
      0, // Accept any amount of ETH.
      path,
      address(this),
      block.timestamp
  );
}
function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{
  _approve(address(this), address(_router), tokenAmount);
  _router.addLiquidityETH{value:ethAmount}(
      address(this),
      tokenAmount,
      0,
      0,
      deadAddress,// tr
      block.timestamp
  );
}
function _approve(address owner,address spender, uint256 amount) internal{
  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);
}
//Fees related functions
function addToExcluded(address toExclude) public onlyOwner{
  _excludedFromFees[toExclude] = true;
}
function removeFromExcluded(address toRemove) public onlyOwner{
  _excludedFromFees[toRemove] = false;
}
function excludePresaleAddresses(address router, address presale) external onlyOwner {
   _liquidityHolders[address(router)] = true;
  _liquidityHolders[presale] = true;
  presaleAddresses[address(router)] = true;
  presaleAddresses[presale] = true;
}
function endPresaleStatus() public onlyOwner{
  buymktFee = 4;
  buyliqFee = 2;
  sellmktFee = 4;
  sellliqFee = 2;
  setSwapAndLiquify(true);
}
function updateThreshold(uint newThreshold) public onlyOwner{
  currentThreshold = newThreshold;
}
function setSwapAndLiquify(bool _enabled) public onlyOwner{
      swapAndLiquifyEnabled = _enabled;
}
//Marketing related
function setMktAddress(address newAddress) external onlyOwner{
  marketingAddress = payable(newAddress);
}
function transferAssetsETH(address payable to, uint256 amount) internal{
      to.transfer(amount);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
  require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
  _setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
  automatedMarketMakerPairs[pair] = value;
  emit SetAutomatedMarketMakerPair(pair, value);
}
function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{
  require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet ");
      buyliqFee = newAmount;
}
function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{
  require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet ");
       buymktFee= newAmount;
}
function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{
   require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet ");
       sellliqFee= newAmount;
}
function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{
  require (newAmount < maxFeeSet, "newAmount exceeds maxFeeSet ");
       sellmktFee= newAmount;
}
function currentMaxWallet() public view returns(uint256){
  return maxWalletAmount;
}
function currentMaxTx() public view returns(uint256){
  return maxTxAmount;
}
function updateSwapTreshold(uint256 newVal) public onlyOwner{
  swapTreshold = newVal;
  requiredTokensToSwap = _totalSupply*swapTreshold/1000;
}
function currentTradeStatus() public view returns (bool){
  return tradeEnabled;
}
function currentSwapTreshold() public view returns(uint256){
  return swapTreshold;
}
function currentTokensToSwap() public view returns(uint256){
  return requiredTokensToSwap;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
  address indexed sender,
  uint amount0In,
  uint amount1In,
  uint amount0Out,
  uint amount1Out,
  address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
  address tokenA,
  address tokenB,
  uint amountADesired,
  uint amountBDesired,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
  address token,
  uint amountTokenDesired,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
  address tokenA,
  address tokenB,
  uint liquidity,
  uint amountAMin,
  uint amountBMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
  uint amountOut,
  uint amountInMax,
  address[] calldata path,
  address to,
  uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
  external
  returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
  external
  payable
  returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
  address token,
  uint liquidity,
  uint amountTokenMin,
  uint amountETHMin,
  address to,
  uint deadline,
  bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
  uint amountIn,
  uint amountOutMin,
  address[] calldata path,
  address to,
  uint deadline
) external;
}

Contract 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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"COINDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GURIMICOINCoinDayOver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600660a090815265475552494d4960d01b60c05260019062000027908262000557565b506040805180820190915260048152634755524960e01b602082015260029062000052908262000557565b506003805460ff191660129081179091556000600455600260055560016006819055600755600a60088190556200008a919062000738565b6200009b9064174876e80062000750565b6009556103e8600754600954620000b3919062000750565b620000bf919062000772565b600a55601080546001600160a01b03191673de6bd29eb2b2a245bb0674a6e76c860d51fa946317905560055460095460c891620000fc9162000750565b62000108919062000772565b60115560646006546009546200011f919062000750565b6200012b919062000772565b6012556014805461ffff191661010090811790915560016017819055600060188190556006601955601a819055601b819055601c805460ff19169055601d91909155601e8190556031601f55602081905560636021556022805461ff00191690921790915561dead6080526023819055602455348015620001ab57600080fd5b50620001b7336200040e565b600954336000908152600b602090815260409182902092909255805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000795565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000795565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000306573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032c919062000795565b602680546001600160a01b03199081166001600160a01b039384161782556000805484168152600c60209081526040808320805460ff199081166001908117909255308086528386208054831684179055602580548b8b169816881790559585526015909352818420805484168217905583548716845281842080548416821790559383529091208054909116821790559054620003cc9216906200045e565b60095460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350620007c0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004dd57607f821691505b602082108103620004fe57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200055257600081815260208120601f850160051c810160208610156200052d5750805b601f850160051c820191505b818110156200054e5782815560010162000539565b5050505b505050565b81516001600160401b03811115620005735762000573620004b2565b6200058b81620005848454620004c8565b8462000504565b602080601f831160018114620005c35760008415620005aa5750858301515b600019600386901b1c1916600185901b1785556200054e565b600085815260208120601f198616915b82811015620005f457888601518255948401946001909101908401620005d3565b5085821015620006135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200067a5781600019048211156200065e576200065e62000623565b808516156200066c57918102915b93841c93908002906200063e565b509250929050565b600082620006935750600162000732565b81620006a25750600062000732565b8160018114620006bb5760028114620006c657620006e6565b600191505062000732565b60ff841115620006da57620006da62000623565b50506001821b62000732565b5060208310610133831016604e8410600b84101617156200070b575081810a62000732565b62000717838362000639565b80600019048211156200072e576200072e62000623565b0290505b92915050565b60006200074960ff84168362000682565b9392505050565b60008160001904831182151516156200076d576200076d62000623565b500290565b6000826200079057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007a857600080fd5b81516001600160a01b03811681146200074957600080fd5b608051612620620007e36000396000818161047d015261219501526126206000f3fe6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610985578063f2fde38b146109a5578063f7da6785146109c5578063f953cf3a146109e557600080fd5b8063dd62ed3e14610915578063ddcf9b981461095b578063e1370dd31461097057600080fd5b8063cba0e996116100d1578063cba0e99614610884578063d1294d4c146108bd578063d15bcf0f146108dd578063d7d7442f146108f557600080fd5b8063bf9b01591461082f578063bf9eb54014610844578063cb6645341461086457600080fd5b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461079f578063a9059cbb146107bf578063b4d95a93146107df578063b62496f5146107ff57600080fd5b8063a04bdc8114610749578063a5ece9411461075f578063a6c38f591461077f57600080fd5b806395d89b41116101a057806395d89b41146106ea5780639a7a23d6146106ff5780639b136da41461071f5780639c5c3d0d1461073457600080fd5b80638cd0260c146106b55780638da5cb5b1461069757806390f50283146106d557600080fd5b80634a0e963c116102a05780636df3333a1161023e57806376b662371161021857806376b6623714610642578063801527ce146106575780638628c23f14610677578063893d20e81461069757600080fd5b80636df3333a146105e257806370a08231146105f7578063715018a61461062d57600080fd5b80635297defd1161027a5780635297defd146105785780635be76f111461058d57806364c16163146105ad5780636573c4df146105c257600080fd5b80634a0e963c146105245780634a74bb02146105445780634bd7ace51461056357600080fd5b806322788f861161030d5780632d03420b116102e75780632d03420b146104b7578063313ce567146104d7578063487a6905146104ef57806349bd5a5e1461050457600080fd5b806322788f861461043657806323b872dd1461044b57806327c8f8351461046b57600080fd5b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103dd57806318160ddd146103fd578063220f66961461041c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b506103756109fa565b604051610382919061221a565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461226f565b610a8c565b005b3480156103b957600080fd5b506103cd6103c836600461229d565b610ae5565b6040519015158152602001610382565b3480156103e957600080fd5b506103ab6103f83660046122c9565b610afb565b34801561040957600080fd5b506009545b604051908152602001610382565b34801561042857600080fd5b506022546103cd9060ff1681565b34801561044257600080fd5b5060085461040e565b34801561045757600080fd5b506103cd610466366004612302565b610b85565b34801561047757600080fd5b5061049f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610382565b3480156104c357600080fd5b506103ab6104d2366004612351565b610c59565b3480156104e357600080fd5b5060035460ff1661040e565b3480156104fb57600080fd5b50600a5461040e565b34801561051057600080fd5b5060265461049f906001600160a01b031681565b34801561053057600080fd5b506103ab61053f366004612375565b610c96565b34801561055057600080fd5b506022546103cd90610100900460ff1681565b34801561056f57600080fd5b5060175461040e565b34801561058457600080fd5b50601f5461040e565b34801561059957600080fd5b506103ab6105a8366004612375565b610ce4565b3480156105b957600080fd5b5060245461040e565b3480156105ce57600080fd5b506103ab6105dd36600461226f565b610d4b565b3480156105ee57600080fd5b5060075461040e565b34801561060357600080fd5b5061040e610612366004612375565b6001600160a01b03166000908152600b602052604090205490565b34801561063957600080fd5b506103ab610deb565b34801561064e57600080fd5b506103ab610e21565b34801561066357600080fd5b506103ab610672366004612351565b610e69565b34801561068357600080fd5b506103ab61069236600461226f565b610ead565b3480156106a357600080fd5b506000546001600160a01b031661049f565b3480156106c157600080fd5b506103ab6106d036600461226f565b610efd565b3480156106e157600080fd5b50601d5461040e565b3480156106f657600080fd5b50610375610f4d565b34801561070b57600080fd5b506103ab61071a366004612392565b610f5c565b34801561072b57600080fd5b5060195461040e565b34801561074057600080fd5b506103ab611018565b34801561075557600080fd5b5061040e600a5481565b34801561076b57600080fd5b5060105461049f906001600160a01b031681565b34801561078b57600080fd5b506103ab61079a366004612392565b6110c8565b3480156107ab57600080fd5b506103ab6107ba36600461226f565b61111d565b3480156107cb57600080fd5b506103cd6107da36600461229d565b6111bd565b3480156107eb57600080fd5b506103ab6107fa366004612375565b6111ca565b34801561080b57600080fd5b506103cd61081a366004612375565b600e6020526000908152604090205460ff1681565b34801561083b57600080fd5b5060125461040e565b34801561085057600080fd5b506103ab61085f366004612375565b611215565b34801561087057600080fd5b506103ab61087f366004612375565b611261565b34801561089057600080fd5b506103cd61089f366004612375565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156108c957600080fd5b506103ab6108d836600461226f565b6112af565b3480156108e957600080fd5b50601c5460ff166103cd565b34801561090157600080fd5b506103ab61091036600461226f565b611300565b34801561092157600080fd5b5061040e6109303660046122c9565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561096757600080fd5b5060235461040e565b34801561097c57600080fd5b5060115461040e565b34801561099157600080fd5b506103ab6109a036600461226f565b61132f565b3480156109b157600080fd5b506103ab6109c0366004612375565b61137f565b3480156109d157600080fd5b506103ab6109e0366004612302565b61141a565b3480156109f157600080fd5b506103ab6114bd565b606060018054610a09906123c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906123c0565b8015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610abf5760405162461bcd60e51b8152600401610ab6906123fa565b60405180910390fd5b6021548110610ae05760405162461bcd60e51b8152600401610ab69061242f565b601755565b6000610af2338484611508565b50600192915050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054821115610c095760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ab6565b610c1484848461162c565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610c4f918691610c4a90869061247c565b611508565b5060019392505050565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610ab6906123fa565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610ab6906123fa565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d46573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d755760405162461bcd60e51b8152600401610ab6906123fa565b60018111610dc55760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b6005819055600954606490610ddb908390612493565b610de591906124b2565b60115550565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610ab6906123fa565b610e1f6000611d2d565b565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ab6906123fa565b601854601755601a54601955610e6442620151806124d4565b601b55565b6000546001600160a01b03163314610e935760405162461bcd60e51b8152600401610ab6906123fa565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610ef85760405162461bcd60e51b8152600401610ab69061242f565b601f55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610f485760405162461bcd60e51b8152600401610ab69061242f565b601d55565b606060028054610a09906123c0565b6000546001600160a01b03163314610f865760405162461bcd60e51b8152600401610ab6906123fa565b6026546001600160a01b039081169083160361100a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab6565b6110148282611d7d565b5050565b6000546001600160a01b031633146110425760405162461bcd60e51b8152600401610ab6906123fa565b601b5442116110b05760405162461bcd60e51b815260206004820152603460248201527f596f752063616e742063616c6c20475552494d49434f494e436f696e446179206044820152736d6f7265207468616e206f6e636520612064617960601b6064820152608401610ab6565b60198054601a55601780546018556000908190559055565b6000546001600160a01b031633146110f25760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111475760405162461bcd60e51b8152600401610ab6906123fa565b600181116111975760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b60068190556009546064906111ad908390612493565b6111b791906124b2565b60125550565b6000610af233848461162c565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b0316331461123f5760405162461bcd60e51b8152600401610ab6906123fa565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461128b5760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ab6906123fa565b60078190556009546103e8906112f0908390612493565b6112fa91906124b2565b600a5550565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610ab6906123fa565b600855565b6000546001600160a01b031633146113595760405162461bcd60e51b8152600401610ab6906123fa565b602154811061137a5760405162461bcd60e51b8152600401610ab69061242f565b601955565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab6565b61141781611d2d565b50565b6000546001600160a01b031633146114445760405162461bcd60e51b8152600401610ab6906123fa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b791906124ec565b50505050565b6000546001600160a01b031633146114e75760405162461bcd60e51b8152600401610ab6906123fa565b6004601981905560026017819055601f91909155601d55610e1f6001610e69565b6001600160a01b03831661156a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab6565b6001600160a01b0382166115cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab6565b6001600160a01b0382166116f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab6565b6000811161175d5760405162461bcd60e51b815260206004820152603260248201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b6064820152608401610ab6565b6001600160a01b0383166000908152600b6020526040902054818110156117d55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab6565b601c5460ff16151560000361186f576001600160a01b03831660009081526015602052604090205460ff168061182357506001600160a01b03841660009081526015602052604090205460ff165b61186f5760405162461bcd60e51b815260206004820152601d60248201527f43616e742074726164652c2074726164652069732064697361626c65640000006044820152606401610ab6565b6001600160a01b03831660009081526015602052604090205460ff161580156118b157506001600160a01b03841660009081526015602052604090205460ff16155b15611967576012548211156119195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab6565b6026546001600160a01b03908116908516036119675760115482611952856001600160a01b03166000908152600b602052604090205490565b61195c91906124d4565b111561196757600080fd5b306000908152600b6020526040902054600a54811080159061198c575060225460ff16155b80156119a657506026546001600160a01b03868116911614155b80156119b95750602254610100900460ff165b156119d457600a5481106119d45750600a546119d481611dd1565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611a1657506001600160a01b0385166000908152600c602052604090205460ff165b15611a245750600060048190555b6000808215611bc7576001600160a01b03881660009081526013602052604090205460ff16151560011480611a7657506001600160a01b03871660009081526013602052604090205460ff1615156001145b15611ab75760405162461bcd60e51b81526020600482015260116024820152704e6f20626f74732063616e20747261646560781b6044820152606401610ab6565b6001600160a01b0387166000908152600e602052604090205460ff168015611aed57506025546001600160a01b03888116911614155b15611b41576000600455601f54606490611b079088612493565b611b1191906124b2565b91506064601d5487611b239190612493565b611b2d91906124b2565b9050611b3981836124d4565b600455611bc7565b6001600160a01b0388166000908152600e602052604090205460ff168015611b7757506025546001600160a01b03898116911614155b15611bc7576000600455601954606490611b919088612493565b611b9b91906124b2565b9150606460175487611bad9190612493565b611bb791906124b2565b9050611bc381836124d4565b6004555b611bd1868661247c565b6001600160a01b0389166000908152600b602052604090205580611bf5838861247c565b611bff919061247c565b6001600160a01b0388166000908152600b602052604081208054909190611c279084906124d4565b90915550508015611ccf57600454306000908152600b602052604081208054909190611c549084906124d4565b925050819055508060246000828254611c6d91906124d4565b925050819055508160236000828254611c8691906124d4565b909155505060045460405190815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611d12919061247c565b60405190815260200160405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6022805460ff19166001179055602454611dea90611e3f565b611df5602354611ec6565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a150600060238190556024556022805460ff19169055565b6000611e4c6002836124b2565b90506000611e5a828461247c565b905047611e6683612024565b6000611e72824761247c565b9050611e7e8382612148565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efb57611efb612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f78919061251f565b81600181518110611f8b57611f8b612509565b6001600160a01b039283166020918202929092010152602554611fb19130911684611508565b60255460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611fee92879260009288929116904290600401612580565b600060405180830381600087803b15801561200857600080fd5b505af115801561201c573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061205957612059612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061251f565b816001815181106120e9576120e9612509565b6001600160a01b03928316602091820292909201015260255461210f9130911684611508565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fee908590600090869030904290600401612580565b6025546121609030906001600160a01b031684611508565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af11580156121ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061221391906125bc565b5050505050565b600060208083528351808285015260005b818110156122475785810183015185820160400152820161222b565b81811115612259576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228157600080fd5b5035919050565b6001600160a01b038116811461141757600080fd5b600080604083850312156122b057600080fd5b82356122bb81612288565b946020939093013593505050565b600080604083850312156122dc57600080fd5b82356122e781612288565b915060208301356122f781612288565b809150509250929050565b60008060006060848603121561231757600080fd5b833561232281612288565b9250602084013561233281612288565b929592945050506040919091013590565b801515811461141757600080fd5b60006020828403121561236357600080fd5b813561236e81612343565b9392505050565b60006020828403121561238757600080fd5b813561236e81612288565b600080604083850312156123a557600080fd5b82356123b081612288565b915060208301356122f781612343565b600181811c908216806123d457607f821691505b6020821081036123f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f6e6577416d6f756e742065786365656473206d61784665655365742000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561248e5761248e612466565b500390565b60008160001904831182151516156124ad576124ad612466565b500290565b6000826124cf57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156124e7576124e7612466565b500190565b6000602082840312156124fe57600080fd5b815161236e81612343565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253157600080fd5b815161236e81612288565b600081518084526020808501945080840160005b838110156125755781516001600160a01b031687529582019590820190600101612550565b509495945050505050565b85815284602082015260a06040820152600061259f60a083018661253c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156125d157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d3364736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106103545760003560e01c80638cd0260c116101c6578063bf9b0159116100f7578063dd62ed3e11610095578063edcf19b21161006f578063edcf19b214610985578063f2fde38b146109a5578063f7da6785146109c5578063f953cf3a146109e557600080fd5b8063dd62ed3e14610915578063ddcf9b981461095b578063e1370dd31461097057600080fd5b8063cba0e996116100d1578063cba0e99614610884578063d1294d4c146108bd578063d15bcf0f146108dd578063d7d7442f146108f557600080fd5b8063bf9b01591461082f578063bf9eb54014610844578063cb6645341461086457600080fd5b8063a04bdc8111610164578063a7a074521161013e578063a7a074521461079f578063a9059cbb146107bf578063b4d95a93146107df578063b62496f5146107ff57600080fd5b8063a04bdc8114610749578063a5ece9411461075f578063a6c38f591461077f57600080fd5b806395d89b41116101a057806395d89b41146106ea5780639a7a23d6146106ff5780639b136da41461071f5780639c5c3d0d1461073457600080fd5b80638cd0260c146106b55780638da5cb5b1461069757806390f50283146106d557600080fd5b80634a0e963c116102a05780636df3333a1161023e57806376b662371161021857806376b6623714610642578063801527ce146106575780638628c23f14610677578063893d20e81461069757600080fd5b80636df3333a146105e257806370a08231146105f7578063715018a61461062d57600080fd5b80635297defd1161027a5780635297defd146105785780635be76f111461058d57806364c16163146105ad5780636573c4df146105c257600080fd5b80634a0e963c146105245780634a74bb02146105445780634bd7ace51461056357600080fd5b806322788f861161030d5780632d03420b116102e75780632d03420b146104b7578063313ce567146104d7578063487a6905146104ef57806349bd5a5e1461050457600080fd5b806322788f861461043657806323b872dd1461044b57806327c8f8351461046b57600080fd5b806306fdde03146103605780630882a8631461038b578063095ea7b3146103ad57806313b4a7f4146103dd57806318160ddd146103fd578063220f66961461041c57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b506103756109fa565b604051610382919061221a565b60405180910390f35b34801561039757600080fd5b506103ab6103a636600461226f565b610a8c565b005b3480156103b957600080fd5b506103cd6103c836600461229d565b610ae5565b6040519015158152602001610382565b3480156103e957600080fd5b506103ab6103f83660046122c9565b610afb565b34801561040957600080fd5b506009545b604051908152602001610382565b34801561042857600080fd5b506022546103cd9060ff1681565b34801561044257600080fd5b5060085461040e565b34801561045757600080fd5b506103cd610466366004612302565b610b85565b34801561047757600080fd5b5061049f7f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b039091168152602001610382565b3480156104c357600080fd5b506103ab6104d2366004612351565b610c59565b3480156104e357600080fd5b5060035460ff1661040e565b3480156104fb57600080fd5b50600a5461040e565b34801561051057600080fd5b5060265461049f906001600160a01b031681565b34801561053057600080fd5b506103ab61053f366004612375565b610c96565b34801561055057600080fd5b506022546103cd90610100900460ff1681565b34801561056f57600080fd5b5060175461040e565b34801561058457600080fd5b50601f5461040e565b34801561059957600080fd5b506103ab6105a8366004612375565b610ce4565b3480156105b957600080fd5b5060245461040e565b3480156105ce57600080fd5b506103ab6105dd36600461226f565b610d4b565b3480156105ee57600080fd5b5060075461040e565b34801561060357600080fd5b5061040e610612366004612375565b6001600160a01b03166000908152600b602052604090205490565b34801561063957600080fd5b506103ab610deb565b34801561064e57600080fd5b506103ab610e21565b34801561066357600080fd5b506103ab610672366004612351565b610e69565b34801561068357600080fd5b506103ab61069236600461226f565b610ead565b3480156106a357600080fd5b506000546001600160a01b031661049f565b3480156106c157600080fd5b506103ab6106d036600461226f565b610efd565b3480156106e157600080fd5b50601d5461040e565b3480156106f657600080fd5b50610375610f4d565b34801561070b57600080fd5b506103ab61071a366004612392565b610f5c565b34801561072b57600080fd5b5060195461040e565b34801561074057600080fd5b506103ab611018565b34801561075557600080fd5b5061040e600a5481565b34801561076b57600080fd5b5060105461049f906001600160a01b031681565b34801561078b57600080fd5b506103ab61079a366004612392565b6110c8565b3480156107ab57600080fd5b506103ab6107ba36600461226f565b61111d565b3480156107cb57600080fd5b506103cd6107da36600461229d565b6111bd565b3480156107eb57600080fd5b506103ab6107fa366004612375565b6111ca565b34801561080b57600080fd5b506103cd61081a366004612375565b600e6020526000908152604090205460ff1681565b34801561083b57600080fd5b5060125461040e565b34801561085057600080fd5b506103ab61085f366004612375565b611215565b34801561087057600080fd5b506103ab61087f366004612375565b611261565b34801561089057600080fd5b506103cd61089f366004612375565b6001600160a01b03166000908152600c602052604090205460ff1690565b3480156108c957600080fd5b506103ab6108d836600461226f565b6112af565b3480156108e957600080fd5b50601c5460ff166103cd565b34801561090157600080fd5b506103ab61091036600461226f565b611300565b34801561092157600080fd5b5061040e6109303660046122c9565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561096757600080fd5b5060235461040e565b34801561097c57600080fd5b5060115461040e565b34801561099157600080fd5b506103ab6109a036600461226f565b61132f565b3480156109b157600080fd5b506103ab6109c0366004612375565b61137f565b3480156109d157600080fd5b506103ab6109e0366004612302565b61141a565b3480156109f157600080fd5b506103ab6114bd565b606060018054610a09906123c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a35906123c0565b8015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b5050505050905090565b6000546001600160a01b03163314610abf5760405162461bcd60e51b8152600401610ab6906123fa565b60405180910390fd5b6021548110610ae05760405162461bcd60e51b8152600401610ab69061242f565b601755565b6000610af2338484611508565b50600192915050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b0391821660008181526015602090815260408083208054600160ff199182168117909255959096168084528184208054871688179055938352601690915280822080548516861790559181522080549091169091179055565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054821115610c095760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ab6565b610c1484848461162c565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054610c4f918691610c4a90869061247c565b611508565b5060019392505050565b6000546001600160a01b03163314610c835760405162461bcd60e51b8152600401610ab6906123fa565b601c805460ff1916911515919091179055565b6000546001600160a01b03163314610cc05760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b6000546001600160a01b03163314610d0e5760405162461bcd60e51b8152600401610ab6906123fa565b60405147906001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d46573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d755760405162461bcd60e51b8152600401610ab6906123fa565b60018111610dc55760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b6005819055600954606490610ddb908390612493565b610de591906124b2565b60115550565b6000546001600160a01b03163314610e155760405162461bcd60e51b8152600401610ab6906123fa565b610e1f6000611d2d565b565b6000546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ab6906123fa565b601854601755601a54601955610e6442620151806124d4565b601b55565b6000546001600160a01b03163314610e935760405162461bcd60e51b8152600401610ab6906123fa565b602280549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610ed75760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610ef85760405162461bcd60e51b8152600401610ab69061242f565b601f55565b6000546001600160a01b03163314610f275760405162461bcd60e51b8152600401610ab6906123fa565b6021548110610f485760405162461bcd60e51b8152600401610ab69061242f565b601d55565b606060028054610a09906123c0565b6000546001600160a01b03163314610f865760405162461bcd60e51b8152600401610ab6906123fa565b6026546001600160a01b039081169083160361100a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ab6565b6110148282611d7d565b5050565b6000546001600160a01b031633146110425760405162461bcd60e51b8152600401610ab6906123fa565b601b5442116110b05760405162461bcd60e51b815260206004820152603460248201527f596f752063616e742063616c6c20475552494d49434f494e436f696e446179206044820152736d6f7265207468616e206f6e636520612064617960601b6064820152608401610ab6565b60198054601a55601780546018556000908190559055565b6000546001600160a01b031633146110f25760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111475760405162461bcd60e51b8152600401610ab6906123fa565b600181116111975760405162461bcd60e51b815260206004820152601e60248201527f6e657756616c2063616e206e6f74206265206c6f776572207468616e203100006044820152606401610ab6565b60068190556009546064906111ad908390612493565b6111b791906124b2565b60125550565b6000610af233848461162c565b6000546001600160a01b031633146111f45760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152600c60205260409020805460ff19169055565b6000546001600160a01b0316331461123f5760405162461bcd60e51b8152600401610ab6906123fa565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461128b5760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ab6906123fa565b60078190556009546103e8906112f0908390612493565b6112fa91906124b2565b600a5550565b6000546001600160a01b0316331461132a5760405162461bcd60e51b8152600401610ab6906123fa565b600855565b6000546001600160a01b031633146113595760405162461bcd60e51b8152600401610ab6906123fa565b602154811061137a5760405162461bcd60e51b8152600401610ab69061242f565b601955565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610ab6906123fa565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ab6565b61141781611d2d565b50565b6000546001600160a01b031633146114445760405162461bcd60e51b8152600401610ab6906123fa565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015611493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b791906124ec565b50505050565b6000546001600160a01b031633146114e75760405162461bcd60e51b8152600401610ab6906123fa565b6004601981905560026017819055601f91909155601d55610e1f6001610e69565b6001600160a01b03831661156a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ab6565b6001600160a01b0382166115cb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ab6565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ab6565b6001600160a01b0382166116f25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ab6565b6000811161175d5760405162461bcd60e51b815260206004820152603260248201527f45524332303a207472616e73666572656420616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b6064820152608401610ab6565b6001600160a01b0383166000908152600b6020526040902054818110156117d55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ab6565b601c5460ff16151560000361186f576001600160a01b03831660009081526015602052604090205460ff168061182357506001600160a01b03841660009081526015602052604090205460ff165b61186f5760405162461bcd60e51b815260206004820152601d60248201527f43616e742074726164652c2074726164652069732064697361626c65640000006044820152606401610ab6565b6001600160a01b03831660009081526015602052604090205460ff161580156118b157506001600160a01b03841660009081526015602052604090205460ff16155b15611967576012548211156119195760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ab6565b6026546001600160a01b03908116908516036119675760115482611952856001600160a01b03166000908152600b602052604090205490565b61195c91906124d4565b111561196757600080fd5b306000908152600b6020526040902054600a54811080159061198c575060225460ff16155b80156119a657506026546001600160a01b03868116911614155b80156119b95750602254610100900460ff165b156119d457600a5481106119d45750600a546119d481611dd1565b6001600160a01b0385166000908152600c602052604090205460019060ff1680611a1657506001600160a01b0385166000908152600c602052604090205460ff165b15611a245750600060048190555b6000808215611bc7576001600160a01b03881660009081526013602052604090205460ff16151560011480611a7657506001600160a01b03871660009081526013602052604090205460ff1615156001145b15611ab75760405162461bcd60e51b81526020600482015260116024820152704e6f20626f74732063616e20747261646560781b6044820152606401610ab6565b6001600160a01b0387166000908152600e602052604090205460ff168015611aed57506025546001600160a01b03888116911614155b15611b41576000600455601f54606490611b079088612493565b611b1191906124b2565b91506064601d5487611b239190612493565b611b2d91906124b2565b9050611b3981836124d4565b600455611bc7565b6001600160a01b0388166000908152600e602052604090205460ff168015611b7757506025546001600160a01b03898116911614155b15611bc7576000600455601954606490611b919088612493565b611b9b91906124b2565b9150606460175487611bad9190612493565b611bb791906124b2565b9050611bc381836124d4565b6004555b611bd1868661247c565b6001600160a01b0389166000908152600b602052604090205580611bf5838861247c565b611bff919061247c565b6001600160a01b0388166000908152600b602052604081208054909190611c279084906124d4565b90915550508015611ccf57600454306000908152600b602052604081208054909190611c549084906124d4565b925050819055508060246000828254611c6d91906124d4565b925050819055508160236000828254611c8691906124d4565b909155505060045460405190815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045489611d12919061247c565b60405190815260200160405180910390a35050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6022805460ff19166001179055602454611dea90611e3f565b611df5602354611ec6565b6040518181527f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f019049060200160405180910390a150600060238190556024556022805460ff19169055565b6000611e4c6002836124b2565b90506000611e5a828461247c565b905047611e6683612024565b6000611e72824761247c565b9050611e7e8382612148565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611efb57611efb612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f78919061251f565b81600181518110611f8b57611f8b612509565b6001600160a01b039283166020918202929092010152602554611fb19130911684611508565b60255460105460405163791ac94760e01b81526001600160a01b039283169263791ac94792611fee92879260009288929116904290600401612580565b600060405180830381600087803b15801561200857600080fd5b505af115801561201c573d6000803e3d6000fd5b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061205957612059612509565b6001600160a01b03928316602091820292909201810191909152602554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156120b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d6919061251f565b816001815181106120e9576120e9612509565b6001600160a01b03928316602091820292909201015260255461210f9130911684611508565b60255460405163791ac94760e01b81526001600160a01b039091169063791ac94790611fee908590600090869030904290600401612580565b6025546121609030906001600160a01b031684611508565b60255460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660848301524260a48301529091169063f305d71990839060c40160606040518083038185885af11580156121ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061221391906125bc565b5050505050565b600060208083528351808285015260005b818110156122475785810183015185820160400152820161222b565b81811115612259576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561228157600080fd5b5035919050565b6001600160a01b038116811461141757600080fd5b600080604083850312156122b057600080fd5b82356122bb81612288565b946020939093013593505050565b600080604083850312156122dc57600080fd5b82356122e781612288565b915060208301356122f781612288565b809150509250929050565b60008060006060848603121561231757600080fd5b833561232281612288565b9250602084013561233281612288565b929592945050506040919091013590565b801515811461141757600080fd5b60006020828403121561236357600080fd5b813561236e81612343565b9392505050565b60006020828403121561238757600080fd5b813561236e81612288565b600080604083850312156123a557600080fd5b82356123b081612288565b915060208301356122f781612343565b600181811c908216806123d457607f821691505b6020821081036123f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601c908201527f6e6577416d6f756e742065786365656473206d61784665655365742000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561248e5761248e612466565b500390565b60008160001904831182151516156124ad576124ad612466565b500290565b6000826124cf57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156124e7576124e7612466565b500190565b6000602082840312156124fe57600080fd5b815161236e81612343565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561253157600080fd5b815161236e81612288565b600081518084526020808501945080840160005b838110156125755781516001600160a01b031687529582019590820190600101612550565b509495945050505050565b85815284602082015260a06040820152600061259f60a083018661253c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156125d157600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d3364736f6c634300080f0033

Deployed Bytecode Sourcemap

4857:14321:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9040:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17897:169;;;;;;;;;;-1:-1:-1;17897:169:0;;;;;:::i;:::-;;:::i;:::-;;8810:152;;;;;;;;;;-1:-1:-1;8810:152:0;;;;;:::i;:::-;;:::i;:::-;;;1422:14:1;;1415:22;1397:41;;1385:2;1370:18;8810:152:0;1257:187:1;16644:256:0;;;;;;;;;;-1:-1:-1;16644:256:0;;;;;:::i;:::-;;:::i;8303:95::-;;;;;;;;;;-1:-1:-1;8382:12:0;;8303:95;;;1988:25:1;;;1976:2;1961:18;8303:95:0;1842:177:1;6524:28:0;;;;;;;;;;-1:-1:-1;6524:28:0;;;;;;;;10914:91;;;;;;;;;;-1:-1:-1;10985:16:0;;10914:91;;9625:356;;;;;;;;;;-1:-1:-1;9625:356:0;;;;;:::i;:::-;;:::i;6598:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2649:32:1;;;2631:51;;2619:2;2604:18;6598:81:0;2485:203:1;14930:80:0;;;;;;;;;;-1:-1:-1;14930:80:0;;;;;:::i;:::-;;:::i;8964:74::-;;;;;;;;;;-1:-1:-1;9025:9:0;;;;8964:74;;19080:95;;;;;;;;;;-1:-1:-1;19151:20:0;;19080:95;;7058:28;;;;;;;;;;-1:-1:-1;7058:28:0;;;;-1:-1:-1;;;;;7058:28:0;;;16432:102;;;;;;;;;;-1:-1:-1;16432:102:0;;;;;:::i;:::-;;:::i;6555:40::-;;;;;;;;;;-1:-1:-1;6555:40:0;;;;;;;;;;;10558:86;;;;;;;;;;-1:-1:-1;10631:9:0;;10558:86;;10824:88;;;;;;;;;;-1:-1:-1;10898:10:0;;10824:88;;14766:162;;;;;;;;;;-1:-1:-1;14766:162:0;;;;;:::i;:::-;;:::i;8213:88::-;;;;;;;;;;-1:-1:-1;8288:9:0;;8213:88;;9406:217;;;;;;;;;;-1:-1:-1;9406:217:0;;;;;:::i;:::-;;:::i;18991:87::-;;;;;;;;;;-1:-1:-1;19062:12:0;;18991:87;;8400:108;;;;;;;;;;-1:-1:-1;8400:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;8486:18:0;8466:7;8486:18;;;:9;:18;;;;;;;8400:108;4309:84;;;;;;;;;;;;;:::i;10266:168::-;;;;;;;;;;;;;:::i;17156:103::-;;;;;;;;;;-1:-1:-1;17156:103:0;;;;;:::i;:::-;;:::i;18413:170::-;;;;;;;;;;-1:-1:-1;18413:170:0;;;;;:::i;:::-;;:::i;8045:76::-;;;;;;;;;;-1:-1:-1;8086:7:0;3811:6;-1:-1:-1;;;;;3811:6:0;8045:76;;18239:172;;;;;;;;;;-1:-1:-1;18239:172:0;;;;;:::i;:::-;;:::i;10734:88::-;;;;;;;;;;-1:-1:-1;10808:10:0;;10734:88;;9117:78;;;;;;;;;;;;;:::i;17497:226::-;;;;;;;;;;-1:-1:-1;17497:226:0;;;;;:::i;:::-;;:::i;10646:86::-;;;;;;;;;;-1:-1:-1;10719:9:0;;10646:86;;10015:249;;;;;;;;;;;;;:::i;5356:71::-;;;;;;;;;;;;;;;;5683:93;;;;;;;;;;-1:-1:-1;5683:93:0;;;;-1:-1:-1;;;;;5683:93:0;;;10436:120;;;;;;;;;;-1:-1:-1;10436:120:0;;;;;:::i;:::-;;:::i;9199:205::-;;;;;;;;;;-1:-1:-1;9199:205:0;;;;;:::i;:::-;;:::i;8510:158::-;;;;;;;;;;-1:-1:-1;8510:158:0;;;;;:::i;:::-;;:::i;16536:106::-;;;;;;;;;;-1:-1:-1;16536:106:0;;;;;:::i;:::-;;:::i;5605:58::-;;;;;;;;;;-1:-1:-1;5605:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18674:79;;;;;;;;;;-1:-1:-1;18738:11:0;;18674:79;;17282:108;;;;;;;;;;-1:-1:-1;17282:108:0;;;;;:::i;:::-;;:::i;14030:106::-;;;;;;;;;;-1:-1:-1;14030:106:0;;;;;:::i;:::-;;:::i;11007:108::-;;;;;;;;;;-1:-1:-1;11007:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;11085:26:0;11064:4;11085:26;;;:17;:26;;;;;;;;;11007:108;18755:148;;;;;;;;;;-1:-1:-1;18755:148:0;;;;;:::i;:::-;;:::i;18905:84::-;;;;;;;;;;-1:-1:-1;18973:12:0;;;;18905:84;;17054:100;;;;;;;;;;-1:-1:-1;17054:100:0;;;;;:::i;:::-;;:::i;8670:138::-;;;;;;;;;;-1:-1:-1;8670:138:0;;;;;:::i;:::-;-1:-1:-1;;;;;8777:18:0;;;8753:7;8777:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8670:138;8123:88;;;;;;;;;;-1:-1:-1;8198:9:0;;8123:88;;18585:87;;;;;;;;;;-1:-1:-1;18653:15:0;;18585:87;;18068:169;;;;;;;;;;-1:-1:-1;18068:169:0;;;;;:::i;:::-;;:::i;4523:176::-;;;;;;;;;;-1:-1:-1;4523:176:0;;;;;:::i;:::-;;:::i;14537:227::-;;;;;;;;;;-1:-1:-1;14537:227:0;;;;;:::i;:::-;;:::i;16902:150::-;;;;;;;;;;;;;:::i;9040:75::-;9079:13;9106:5;9099:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9040:75;:::o;17897:169::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;;;;;;;;;17990:9:::1;;17978;:21;17969:63;;;;-1:-1:-1::0;;;17969:63:0::1;;;;;;;:::i;:::-;18041:9;:21:::0;17897:169::o;8810:152::-;8887:4;8901:37;210:10;8923:7;8931:6;8901:8;:37::i;:::-;-1:-1:-1;8954:4:0;8810:152;;;;:::o;16644:256::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16735:34:0;;::::1;;::::0;;;:17:::1;:34;::::0;;;;;;;:41;;16772:4:::1;-1:-1:-1::0;;16735:41:0;;::::1;::::0;::::1;::::0;;;16781:26;;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16819;;;:16:::1;:33:::0;;;;;;:40;;;::::1;::::0;::::1;::::0;;16864:25;;;;:32;;;;::::1;::::0;;::::1;::::0;;16644:256::o;9625:356::-;-1:-1:-1;;;;;9763:19:0;;9735:4;9763:19;;;:11;:19;;;;;;;;210:10;9763:33;;;;;;;;9753:43;;;9745:96;;;;-1:-1:-1;;;9745:96:0;;6367:2:1;9745:96:0;;;6349:21:1;6406:2;6386:18;;;6379:30;6445:34;6425:18;;;6418:62;-1:-1:-1;;;6496:18:1;;;6489:38;6544:19;;9745:96:0;6165:404:1;9745:96:0;9846:36;9856:6;9864:9;9875:6;9846:9;:36::i;:::-;-1:-1:-1;;;;;9918:19:0;;;;;;:11;:19;;;;;;;;210:10;9918:33;;;;;;;;;9887:74;;9896:6;;9918:42;;9954:6;;9918:42;:::i;:::-;9887:8;:74::i;:::-;-1:-1:-1;9973:4:0;9625:356;;;;;:::o;14930:80::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14985:12:::1;:21:::0;;-1:-1:-1;;14985:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14930:80::o;16432:102::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16495:28:0::1;;::::0;;;:17:::1;:28;::::0;;;;:35;;-1:-1:-1;;16495:35:0::1;16526:4;16495:35;::::0;;16432:102::o;14766:162::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14883:41:::1;::::0;14857:21:::1;::::0;-1:-1:-1;;;;;14883:29:0;::::1;::::0;:41;::::1;;;::::0;14857:21;;14836:18:::1;14883:41:::0;14836:18;14883:41;14857:21;14883:29;:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14831:97;14766:162:::0;:::o;9406:217::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;9495:1:::1;9486:6;:10;9477:54;;;::::0;-1:-1:-1;;;9477:54:0;;7038:2:1;9477:54:0::1;::::0;::::1;7020:21:1::0;7077:2;7057:18;;;7050:30;7116:32;7096:18;;;7089:60;7166:18;;9477:54:0::1;6836:354:1::0;9477:54:0::1;9536:17;:26:::0;;;9585:12:::1;::::0;9616:3:::1;::::0;9585:30:::1;::::0;9556:6;;9585:30:::1;:::i;:::-;:34;;;;:::i;:::-;9567:15;:52:::0;-1:-1:-1;9406:217:0:o;4309:84::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;4368:21:::1;4386:1;4368:9;:21::i;:::-;4309:84::o:0;10266:168::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;10333:13:::1;::::0;10321:9:::1;:25:::0;10364:13:::1;::::0;10352:9:::1;:25:::0;10407:23:::1;:15;10425:5;10407:23;:::i;:::-;10383:21;:47:::0;10266:168::o;17156:103::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17223:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;17223:32:0;;::::1;::::0;;;::::1;::::0;;17156:103::o;18413:170::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18506:9:::1;;18494;:21;18485:63;;;;-1:-1:-1::0;;;18485:63:0::1;;;;;;;:::i;:::-;18558:10;:21:::0;18413:170::o;18239:172::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18334:9:::1;;18322;:21;18313:63;;;;-1:-1:-1::0;;;18313:63:0::1;;;;;;;:::i;:::-;18386:10;:21:::0;18239:172::o;9117:78::-;9158:13;9184:7;9177:14;;;;;:::i;17497:226::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17598:13:::1;::::0;-1:-1:-1;;;;;17598:13:0;;::::1;17590:21:::0;;::::1;::::0;17582:91:::1;;;::::0;-1:-1:-1;;;17582:91:0;;7925:2:1;17582:91:0::1;::::0;::::1;7907:21:1::0;7964:2;7944:18;;;7937:30;8003:34;7983:18;;;7976:62;8074:27;8054:18;;;8047:55;8119:19;;17582:91:0::1;7723:421:1::0;17582:91:0::1;17678:41;17707:4;17713:5;17678:28;:41::i;:::-;17497:226:::0;;:::o;10015:249::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;10082:21:::1;;10064:15;:39;10056:104;;;::::0;-1:-1:-1;;;10056:104:0;;8351:2:1;10056:104:0::1;::::0;::::1;8333:21:1::0;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:50;8540:19;;10056:104:0::1;8149:416:1::0;10056:104:0::1;10182:9;::::0;;10166:13:::1;:25:::0;10213:9:::1;::::0;;10197:13:::1;:25:::0;-1:-1:-1;10228:13:0;;;;10247;;10015:249::o;10436:120::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10521:23:0;;;::::1;;::::0;;;:10:::1;:23;::::0;;;;:31;;-1:-1:-1;;10521:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10436:120::o;9199:205::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;9283:1:::1;9274:6;:10;9265:54;;;::::0;-1:-1:-1;;;9265:54:0;;7038:2:1;9265:54:0::1;::::0;::::1;7020:21:1::0;7077:2;7057:18;;;7050:30;7116:32;7096:18;;;7089:60;7166:18;;9265:54:0::1;6836:354:1::0;9265:54:0::1;9324:13;:22:::0;;;9365:12:::1;::::0;9392:3:::1;::::0;9365:26:::1;::::0;9340:6;;9365:26:::1;:::i;:::-;:30;;;;:::i;:::-;9351:11;:44:::0;-1:-1:-1;9199:205:0:o;8510:158::-;8590:4;8604:40;210:10;8627:9;8637:6;8604:9;:40::i;16536:106::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16603:27:0::1;16633:5;16603:27:::0;;;:17:::1;:27;::::0;;;;:35;;-1:-1:-1;;16603:35:0::1;::::0;;16536:106::o;17282:108::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17348:16:::1;:38:::0;;-1:-1:-1;;;;;;17348:38:0::1;-1:-1:-1::0;;;;;17348:38:0;;;::::1;::::0;;;::::1;::::0;;17282:108::o;14030:106::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14096:29:0::1;;::::0;;;:17:::1;:29;::::0;;;;:36;;-1:-1:-1;;14096:36:0::1;14128:4;14096:36;::::0;;14030:106::o;18755:148::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18820:12:::1;:21:::0;;;18869:12:::1;::::0;18895:4:::1;::::0;18869:25:::1;::::0;18835:6;;18869:25:::1;:::i;:::-;:30;;;;:::i;:::-;18846:20;:53:::0;-1:-1:-1;18755:148:0:o;17054:100::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;17119:16:::1;:31:::0;17054:100::o;18068:169::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;18161:9:::1;;18149;:21;18140:63;;;;-1:-1:-1::0;;;18140:63:0::1;;;;;;;:::i;:::-;18213:9;:20:::0;18068:169::o;4523:176::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4606:22:0;::::1;4598:73;;;::::0;-1:-1:-1;;;4598:73:0;;8772:2:1;4598:73:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:34;8830:18;;;8823:62;-1:-1:-1;;;8901:18:1;;;8894:36;8947:19;;4598:73:0::1;8570:402:1::0;4598:73:0::1;4676:19;4686:8;4676:9;:19::i;:::-;4523:176:::0;:::o;14537:227::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;14718:42:::1;::::0;-1:-1:-1;;;14718:42:0;;-1:-1:-1;;;;;9177:32:1;;;14718:42:0::1;::::0;::::1;9159:51:1::0;9226:18;;;9219:34;;;14718:21:0;::::1;::::0;::::1;::::0;9132:18:1;;14718:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14537:227:::0;;;:::o;16902:150::-;3790:7;3811:6;-1:-1:-1;;;;;3811:6:0;210:10;3928:23;3920:68;;;;-1:-1:-1;;;3920:68:0;;;;;;;:::i;:::-;16963:1:::1;16951:9;:13:::0;;;16981:1:::1;16969:9;:13:::0;;;16987:10:::1;:14:::0;;;;17006:10:::1;:14:::0;17025:23:::1;17043:4;17025:17;:23::i;16098:306::-:0;-1:-1:-1;;;;;16184:19:0;;16176:68;;;;-1:-1:-1;;;16176:68:0;;9716:2:1;16176:68:0;;;9698:21:1;9755:2;9735:18;;;9728:30;9794:34;9774:18;;;9767:62;-1:-1:-1;;;9845:18:1;;;9838:34;9889:19;;16176:68:0;9514:400:1;16176:68:0;-1:-1:-1;;;;;16257:21:0;;16249:68;;;;-1:-1:-1;;;16249:68:0;;10121:2:1;16249:68:0;;;10103:21:1;10160:2;10140:18;;;10133:30;10199:34;10179:18;;;10172:62;-1:-1:-1;;;10250:18:1;;;10243:32;10292:19;;16249:68:0;9919:398:1;16249:68:0;-1:-1:-1;;;;;16322:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16368:32;;1988:25:1;;;16368:32:0;;1961:18:1;16368:32:0;;;;;;;16098:306;;;:::o;11117:2681::-;-1:-1:-1;;;;;11200:18:0;;11192:68;;;;-1:-1:-1;;;11192:68:0;;10524:2:1;11192:68:0;;;10506:21:1;10563:2;10543:18;;;10536:30;10602:34;10582:18;;;10575:62;-1:-1:-1;;;10653:18:1;;;10646:35;10698:19;;11192:68:0;10322:401:1;11192:68:0;-1:-1:-1;;;;;11273:16:0;;11265:64;;;;-1:-1:-1;;;11265:64:0;;10930:2:1;11265:64:0;;;10912:21:1;10969:2;10949:18;;;10942:30;11008:34;10988:18;;;10981:62;-1:-1:-1;;;11059:18:1;;;11052:33;11102:19;;11265:64:0;10728:399:1;11265:64:0;11351:1;11342:6;:10;11334:72;;;;-1:-1:-1;;;11334:72:0;;:2:1;:72:0;;;11316:21:1;11373:2;11353:18;;;11346:30;11412:34;11392:18;;;11385:62;-1:-1:-1;;;11463:18:1;;;11456:48;11521:19;;11334:72:0;11132:414:1;11334:72:0;-1:-1:-1;;;;;11435:15:0;;11411:21;11435:15;;;:9;:15;;;;;;11463:23;;;;11455:74;;;;-1:-1:-1;;;11455:74:0;;11753:2:1;11455:74:0;;;11735:21:1;11792:2;11772:18;;;11765:30;11831:34;11811:18;;;11804:62;-1:-1:-1;;;11882:18:1;;;11875:36;11928:19;;11455:74:0;11551:402:1;11455:74:0;11537:12;;;;:21;;:12;:21;11534:129;;-1:-1:-1;;;;;11576:21:0;;;;;;:17;:21;;;;;;;;;:48;;-1:-1:-1;;;;;;11601:23:0;;;;;;:17;:23;;;;;;;;11576:48;11568:89;;;;-1:-1:-1;;;11568:89:0;;12160:2:1;11568:89:0;;;12142:21:1;12199:2;12179:18;;;12172:30;12238:31;12218:18;;;12211:59;12287:18;;11568:89:0;11958:353:1;11568:89:0;-1:-1:-1;;;;;11670:21:0;;;;;;:17;:21;;;;;;;;:28;;;:62;;-1:-1:-1;;;;;;11702:23:0;;;;;;:17;:23;;;;;;;;:30;11670:62;11667:252;;;11756:11;;11746:6;:21;;11738:74;;;;-1:-1:-1;;;11738:74:0;;12518:2:1;11738:74:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:18:1;;;12640:38;12695:19;;11738:74:0;12316:404:1;11738:74:0;11829:13;;-1:-1:-1;;;;;11829:13:0;;;11821:21;;;;11818:96;;11888:15;;11878:6;11864:13;11874:2;-1:-1:-1;;;;;8486:18:0;8466:7;8486:18;;;:9;:18;;;;;;;8400:108;11864:13;:20;;;;:::i;:::-;:39;;11856:48;;;;;;11969:4;11923:25;8486:18;;;:9;:18;;;;;;12003:20;;11983:40;;;;;:68;;-1:-1:-1;12035:16:0;;;;12034:17;11983:68;:100;;;;-1:-1:-1;12070:13:0;;-1:-1:-1;;;;;12062:21:0;;;12070:13;;12062:21;;11983:100;:132;;;;-1:-1:-1;12094:21:0;;;;;;;11983:132;11980:328;;;12153:20;;12132:17;:41;12129:170;;-1:-1:-1;12212:20:0;;12249:36;12212:20;12249:17;:36::i;:::-;-1:-1:-1;;;;;12351:23:0;;12316:13;12351:23;;;:17;:23;;;;;;12332:4;;12351:23;;;:48;;-1:-1:-1;;;;;;12378:21:0;;;;;;:17;:21;;;;;;;;12351:48;12348:127;;;-1:-1:-1;12430:1:0;12414:13;:17;;;12348:127;12483:17;12513;12583:8;12580:817;;;-1:-1:-1;;;;;12642:16:0;;;;;;:10;:16;;;;;;;;:24;;:16;:24;;:46;;-1:-1:-1;;;;;;12668:14:0;;;;;;:10;:14;;;;;;;;:20;;:14;:20;12642:46;12639:108;;;12706:27;;-1:-1:-1;;;12706:27:0;;12927:2:1;12706:27:0;;;12909:21:1;12966:2;12946:18;;;12939:30;-1:-1:-1;;;12985:18:1;;;12978:47;13042:18;;12706:27:0;12725:341:1;12639:108:0;-1:-1:-1;;;;;12789:29:0;;;;;;:25;:29;;;;;;;;:55;;;;-1:-1:-1;12836:7:0;;-1:-1:-1;;;;;12822:22:0;;;12836:7;;12822:22;;12789:55;12785:597;;;12883:1;12867:13;:17;12926:10;;12937:3;;12917:19;;:6;:19;:::i;:::-;:23;;;;:::i;:::-;12905:35;;12993:3;12982:10;;12973:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;12961:35;-1:-1:-1;13033:21:0;12961:35;13033:9;:21;:::i;:::-;13017:13;:37;12785:597;;;-1:-1:-1;;;;;13110:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;13161:7:0;;-1:-1:-1;;;;;13145:24:0;;;13161:7;;13145:24;;13110:59;13107:275;;;13210:1;13194:13;:17;13249:9;;13259:3;;13240:18;;:6;:18;:::i;:::-;:22;;;;:::i;:::-;13228:34;;13310:3;13300:9;;13291:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;13279:34;-1:-1:-1;13346:21:0;13279:34;13346:9;:21;:::i;:::-;13330:13;:37;13107:275;13423:22;13439:6;13423:13;:22;:::i;:::-;-1:-1:-1;;;;;13405:15:0;;;;;;:9;:15;;;;;:40;13492:9;13471:18;13480:9;13471:6;:18;:::i;:::-;:30;;;;:::i;:::-;-1:-1:-1;;;;;13454:13:0;;;;;;:9;:13;;;;;:47;;:13;;;:47;;;;;:::i;:::-;;;;-1:-1:-1;;13511:14:0;;13508:233;;13564:13;;13554:4;13536:24;;;;:9;:24;;;;;:41;;:24;;;:41;;13564:13;;13536:41;:::i;:::-;;;;;;;;13632:9;13619;;:22;;;;;;;:::i;:::-;;;;;;;;13663:9;13650;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;13716:13:0;;13686:44;;1988:25:1;;;13709:4:0;;-1:-1:-1;;;;;13686:44:0;;;;;1976:2:1;1961:18;13686:44:0;;;;;;;13508:233;13769:2;-1:-1:-1;;;;;13754:39:0;13763:4;-1:-1:-1;;;;;13754:39:0;;13779:13;;13772:6;:20;;;;:::i;:::-;13754:39;;1988:25:1;;;1976:2;1961:18;13754:39:0;;;;;;;11186:2612;;;;;11117:2681;;;:::o;4701:151::-;4751:16;4770:6;;-1:-1:-1;;;;;4781:17:0;;;-1:-1:-1;;;;;;4781:17:0;;;;;;4808:40;;4770:6;;;;;;;4808:40;;4751:16;4808:40;4746:106;4701:151;:::o;17725:170::-;-1:-1:-1;;;;;17802:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;17802:39:0;;;;;;;;;;17851:40;;17802:39;;:31;17851:40;;;17725:170;;:::o;13800:228::-;7134:16;:23;;-1:-1:-1;;7134:23:0;7153:4;7134:23;;;13889:9:::1;::::0;13874:25:::1;::::0;:14:::1;:25::i;:::-;13904:30;13924:9;;13904:19;:30::i;:::-;13944:44;::::0;1988:25:1;;;13944:44:0::1;::::0;1976:2:1;1961:18;13944:44:0::1;;;;;;;-1:-1:-1::0;14005:1:0::1;13993:9;:13:::0;;;14011:9:::1;:13:::0;7168:16;:24;;-1:-1:-1;;7168:24:0;;;13800:228::o;15012:382::-;15074:12;15089:19;15107:1;15089:15;:19;:::i;:::-;15074:34;-1:-1:-1;15113:17:0;15133:22;15074:34;15133:15;:22;:::i;:::-;15113:42;-1:-1:-1;15185:21:0;15211:22;15228:4;15211:16;:22::i;:::-;15238:18;15259:40;15284:14;15259:21;:40;:::i;:::-;15238:61;;15304:35;15317:9;15328:10;15304:12;:35::i;:::-;15349:41;;;13273:25:1;;;13329:2;13314:18;;13307:34;;;13357:18;;;13350:34;;;15349:41:0;;13261:2:1;13246:18;15349:41:0;;;;;;;15069:325;;;;15012:382;:::o;14138:397::-;14219:16;;;14233:1;14219:16;;;;;;;;14195:21;;14219:16;;;;;;;;;;-1:-1:-1;14219:16:0;14195:40;;14258:4;14240;14245:1;14240:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14240:23:0;;;:7;;;;;;;;;;:23;;;;14278:7;;:14;;;-1:-1:-1;;;14278:14:0;;;;:7;;;;;:12;;:14;;;;;14240:7;;14278:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14268:4;14273:1;14268:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14268:24:0;;;:7;;;;;;;;;:24;14329:7;;14297:49;;14314:4;;14329:7;14339:6;14297:8;:49::i;:::-;14352:7;;14486:16;;14352:179;;-1:-1:-1;;;14352:179:0;;-1:-1:-1;;;;;14352:7:0;;;;:58;;:179;;14419:6;;14352:7;;14473:4;;14486:16;;;14511:15;;14352:179;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14190:345;14138:397;:::o;15396:406::-;15479:16;;;15493:1;15479:16;;;;;;;;15455:21;;15479:16;;;;;;;;;;-1:-1:-1;15479:16:0;15455:40;;15518:4;15500;15505:1;15500:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15500:23:0;;;:7;;;;;;;;;;:23;;;;15538:7;;:14;;;-1:-1:-1;;;15538:14:0;;;;:7;;;;;:12;;:14;;;;;15500:7;;15538:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15528:4;15533:1;15528:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15528:24:0;;;:7;;;;;;;;;:24;15589:7;;15557:54;;15574:4;;15589:7;15599:11;15557:8;:54::i;:::-;15617:7;;:181;;-1:-1:-1;;;15617:181:0;;-1:-1:-1;;;;;15617:7:0;;;;:58;;:181;;15684:11;;15617:7;;15743:4;;15764;;15778:15;;15617:181;;;:::i;15804:292::-;15909:7;;15877:54;;15894:4;;-1:-1:-1;;;;;15909:7:0;15919:11;15877:8;:54::i;:::-;15936:7;;:156;;-1:-1:-1;;;15936:156:0;;15993:4;15936:156;;;15904:34:1;15954:18;;;15947:34;;;-1:-1:-1;15997:18:1;;;15990:34;;;16040:18;;;16033:34;-1:-1:-1;;;;;16047:11:0;16104:15:1;;16083:19;;;16076:44;16072:15:0;16136:19:1;;;16129:35;15936:7:0;;;;:23;;15966:9;;15838:19:1;;15936:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15804:292;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:180::-;675:6;728:2;716:9;707:7;703:23;699:32;696:52;;;744:1;741;734:12;696:52;-1:-1:-1;767:23:1;;616:180;-1:-1:-1;616:180:1:o;801:131::-;-1:-1:-1;;;;;876:31:1;;866:42;;856:70;;922:1;919;912:12;937:315;1005:6;1013;1066:2;1054:9;1045:7;1041:23;1037:32;1034:52;;;1082:1;1079;1072:12;1034:52;1121:9;1108:23;1140:31;1165:5;1140:31;:::i;:::-;1190:5;1242:2;1227:18;;;;1214:32;;-1:-1:-1;;;937:315:1:o;1449:388::-;1517:6;1525;1578:2;1566:9;1557:7;1553:23;1549:32;1546:52;;;1594:1;1591;1584:12;1546:52;1633:9;1620:23;1652:31;1677:5;1652:31;:::i;:::-;1702:5;-1:-1:-1;1759:2:1;1744:18;;1731:32;1772:33;1731:32;1772:33;:::i;:::-;1824:7;1814:17;;;1449:388;;;;;:::o;2024:456::-;2101:6;2109;2117;2170:2;2158:9;2149:7;2145:23;2141:32;2138:52;;;2186:1;2183;2176:12;2138:52;2225:9;2212:23;2244:31;2269:5;2244:31;:::i;:::-;2294:5;-1:-1:-1;2351:2:1;2336:18;;2323:32;2364:33;2323:32;2364:33;:::i;:::-;2024:456;;2416:7;;-1:-1:-1;;;2470:2:1;2455:18;;;;2442:32;;2024:456::o;2693:118::-;2779:5;2772:13;2765:21;2758:5;2755:32;2745:60;;2801:1;2798;2791:12;2816:241;2872:6;2925:2;2913:9;2904:7;2900:23;2896:32;2893:52;;;2941:1;2938;2931:12;2893:52;2980:9;2967:23;2999:28;3021:5;2999:28;:::i;:::-;3046:5;2816:241;-1:-1:-1;;;2816:241:1:o;3062:247::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3229:9;3216:23;3248:31;3273:5;3248:31;:::i;3574:382::-;3639:6;3647;3700:2;3688:9;3679:7;3675:23;3671:32;3668:52;;;3716:1;3713;3706:12;3668:52;3755:9;3742:23;3774:31;3799:5;3774:31;:::i;:::-;3824:5;-1:-1:-1;3881:2:1;3866:18;;3853:32;3894:30;3853:32;3894:30;:::i;5062:380::-;5141:1;5137:12;;;;5184;;;5205:61;;5259:4;5251:6;5247:17;5237:27;;5205:61;5312:2;5304:6;5301:14;5281:18;5278:38;5275:161;;5358:10;5353:3;5349:20;5346:1;5339:31;5393:4;5390:1;5383:15;5421:4;5418:1;5411:15;5275:161;;5062:380;;;:::o;5447:356::-;5649:2;5631:21;;;5668:18;;;5661:30;5727:34;5722:2;5707:18;;5700:62;5794:2;5779:18;;5447:356::o;5808:352::-;6010:2;5992:21;;;6049:2;6029:18;;;6022:30;6088;6083:2;6068:18;;6061:58;6151:2;6136:18;;5808:352::o;6574:127::-;6635:10;6630:3;6626:20;6623:1;6616:31;6666:4;6663:1;6656:15;6690:4;6687:1;6680:15;6706:125;6746:4;6774:1;6771;6768:8;6765:34;;;6779:18;;:::i;:::-;-1:-1:-1;6816:9:1;;6706:125::o;7195:168::-;7235:7;7301:1;7297;7293:6;7289:14;7286:1;7283:21;7278:1;7271:9;7264:17;7260:45;7257:71;;;7308:18;;:::i;:::-;-1:-1:-1;7348:9:1;;7195:168::o;7368:217::-;7408:1;7434;7424:132;;7478:10;7473:3;7469:20;7466:1;7459:31;7513:4;7510:1;7503:15;7541:4;7538:1;7531:15;7424:132;-1:-1:-1;7570:9:1;;7368:217::o;7590:128::-;7630:3;7661:1;7657:6;7654:1;7651:13;7648:39;;;7667:18;;:::i;:::-;-1:-1:-1;7703:9:1;;7590:128::o;9264:245::-;9331:6;9384:2;9372:9;9363:7;9359:23;9355:32;9352:52;;;9400:1;9397;9390:12;9352:52;9432:9;9426:16;9451:28;9473:5;9451:28;:::i;13527:127::-;13588:10;13583:3;13579:20;13576:1;13569:31;13619:4;13616:1;13609:15;13643:4;13640:1;13633:15;13659:251;13729:6;13782:2;13770:9;13761:7;13757:23;13753:32;13750:52;;;13798:1;13795;13788:12;13750:52;13830:9;13824:16;13849:31;13874:5;13849:31;:::i;13915:461::-;13968:3;14006:5;14000:12;14033:6;14028:3;14021:19;14059:4;14088:2;14083:3;14079:12;14072:19;;14125:2;14118:5;14114:14;14146:1;14156:195;14170:6;14167:1;14164:13;14156:195;;;14235:13;;-1:-1:-1;;;;;14231:39:1;14219:52;;14291:12;;;;14326:15;;;;14267:1;14185:9;14156:195;;;-1:-1:-1;14367:3:1;;13915:461;-1:-1:-1;;;;;13915:461:1:o;14381:590::-;14688:6;14677:9;14670:25;14731:6;14726:2;14715:9;14711:18;14704:34;14774:3;14769:2;14758:9;14754:18;14747:31;14651:4;14795:57;14847:3;14836:9;14832:19;14824:6;14795:57;:::i;:::-;-1:-1:-1;;;;;14888:32:1;;;;14883:2;14868:18;;14861:60;-1:-1:-1;14952:3:1;14937:19;14930:35;14787:65;14381:590;-1:-1:-1;;;14381:590:1:o;16175:306::-;16263:6;16271;16279;16332:2;16320:9;16311:7;16307:23;16303:32;16300:52;;;16348:1;16345;16338:12;16300:52;16377:9;16371:16;16361:26;;16427:2;16416:9;16412:18;16406:25;16396:35;;16471:2;16460:9;16456:18;16450:25;16440:35;;16175:306;;;;;:::o

Swarm Source

ipfs://2445943dc73a5607bae95e01e98d4804c5943c7f95a83bf06bc2546aba392d33
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.