ETH Price: $3,636.88 (+3.18%)
 

Overview

Max Total Supply

8,490,000,000 PEMO

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
84,900,000 PEMO

Value
$0.00
0x06137fc425c644c12491d2226990ea6dfe8dc4e0
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:
Pepomonia

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-25
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
  function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
  }

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

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

  function functionCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionCallWithValue(target, data, 0, "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"
    );
    (bool success, bytes memory returndata) = target.call{value: value}(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionStaticCall(
    address target,
    bytes memory data
  ) internal view returns (bytes memory) {
    return
      functionStaticCall(target, data, "Address: low-level static call failed");
  }

  function functionStaticCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    (bool success, bytes memory returndata) = target.staticcall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionDelegateCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionDelegateCall(
        target,
        data,
        "Address: low-level delegate call failed"
      );
  }

  function functionDelegateCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    (bool success, bytes memory returndata) = target.delegatecall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function verifyCallResultFromTarget(
    address target,
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    if (success) {
      if (returndata.length == 0) {
        // only check isContract if the call was successful and the return data is empty
        // otherwise we already know that it was a contract
        require(isContract(target), "Address: call to non-contract");
      }
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function verifyCallResult(
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal pure returns (bytes memory) {
    if (success) {
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function _revert(
    bytes memory returndata,
    string memory errorMessage
  ) private pure {
    // Look for revert reason and bubble it up if present
    if (returndata.length > 0) {
      // The easiest way to bubble the revert reason is using memory via assembly
      /// @solidity memory-safe-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert(errorMessage);
    }
  }
}

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

interface IDEXFactory {
  function createPair(
    address tokenA,
    address tokenB
  ) external returns (address pair);
}

interface IDEXRouter {
  function factory() external pure returns (address);

  function WETH() external pure returns (address);

  function addLiquidityETH(
    address token,
    uint amountTokenDesired,
    uint amountTokenMin,
    uint amountETHMin,
    address to,
    uint deadline
  ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

  function swapExactTokensForETHSupportingFeeOnTransferTokens(
    uint amountIn,
    uint amountOutMin,
    address[] calldata path,
    address to,
    uint deadline
  ) external;
}

abstract contract Ownable is Context {
  address private _owner;

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

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

  modifier onlyOwner() {
    _checkOwner();
    _;
  }

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

  function _checkOwner() internal view virtual {
    require(owner() == _msgSender(), "Ownable: caller is not the owner");
  }

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

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

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

contract Pepomonia is IERC20, Ownable {
  using Address for address;

  address DEAD = 0x000000000000000000000000000000000000dEaD;
  address ZERO = 0x0000000000000000000000000000000000000000;

  string constant _name = "Pepomonia";
  string constant _symbol = "PEMO";
  uint8 constant _decimals = 18;

  uint256 _totalSupply = 8_490_000_000 * (10 ** _decimals);
  uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxSellTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxWalletSize = (_totalSupply * 1) / 100;

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

  mapping(uint256 => uint256) public swapBackCounter;
  uint256 public swapBackRateLimit = 3;

  mapping(address => bool) public isFeeExempt;
  mapping(address => bool) public isTxLimitExempt;
  mapping(address => bool) public isLiquidityCreator;

  uint256 marketingBuyFee = 0;
  uint256 marketingSellFee = 0;
  uint256 liquidityBuyFee = 0;
  uint256 liquiditySellFee = 0;
  uint256 totalBuyFee = marketingBuyFee + liquidityBuyFee;
  uint256 totalSellFee = marketingSellFee + liquiditySellFee;
  uint256 feeDenominator = 10000;

  bool public transferTax = false;

  address payable public liquidityFeeReceiver = payable(0x2c8F195d68830634a184E7652c2A34739D4a048C);
  address payable public marketingFeeReceiver = payable(0x2c8F195d68830634a184E7652c2A34739D4a048C);

  IDEXRouter public router;
  address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
  mapping(address => bool) liquidityPools;
  address public pair;

  mapping(address => uint256) public blacklist;
  uint256 public blacklistCount;

  uint256 public launchBlock;
  uint256 public launchTimestamp;
  bool isTradingEnabled = false;

  bool public swapEnabled = false;
  uint256 public swapThreshold = _totalSupply / 1000;
  uint256 public swapAtMinimum = _totalSupply / 10000;
  bool inSwap;

  modifier swapping() {
    inSwap = true;
    _;
    inSwap = false;
  }

  mapping(address => bool) teamMembers;

  modifier onlyTeam() {
    require(
      teamMembers[_msgSender()] || msg.sender == owner(),
      "Caller is not a team member"
    );
    _;
  }

  event WalletBlacklisted(address, address, uint256);

  constructor() {
    router = IDEXRouter(routerAddress);
    pair = IDEXFactory(router.factory()).createPair(
      router.WETH(),
      address(this)
    );
    liquidityPools[pair] = true;
    _allowances[owner()][routerAddress] = type(uint256).max;
    _allowances[address(this)][routerAddress] = type(uint256).max;

    isFeeExempt[owner()] = true;
    isLiquidityCreator[owner()] = true;

    isTxLimitExempt[address(this)] = true;
    isTxLimitExempt[owner()] = true;
    isTxLimitExempt[routerAddress] = true;
    isTxLimitExempt[DEAD] = true;

    _balances[owner()] = _totalSupply;

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

  receive() external payable {}

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

  function decimals() external pure returns (uint8) {
    return _decimals;
  }

  function symbol() external pure returns (string memory) {
    return _symbol;
  }

  function name() external pure returns (string memory) {
    return _name;
  }

  function getOwner() external view returns (address) {
    return owner();
  }

  function maxBuyTxTokens() external view returns (uint256) {
    return _maxBuyTxAmount / (10 ** _decimals);
  }

  function maxSellTxTokens() external view returns (uint256) {
    return _maxSellTxAmount / (10 ** _decimals);
  }

  function maxWalletTokens() external view returns (uint256) {
    return _maxWalletSize / (10 ** _decimals);
  }

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

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

  function approve(
    address spender,
    uint256 amount
  ) public override returns (bool) {
    _allowances[msg.sender][spender] = amount;
    emit Approval(msg.sender, spender, amount);
    return true;
  }

  function approveMaxAmount(address spender) external returns (bool) {
    return approve(spender, type(uint256).max);
  }

  function setTeamMember(address _team, bool _enabled) external onlyOwner {
    teamMembers[_team] = _enabled;
  }

  function airdrop(
    address[] calldata addresses,
    uint256[] calldata amounts
  ) external onlyOwner {
    require(addresses.length > 0 && amounts.length == addresses.length);
    address from = msg.sender;

    for (uint i = 0; i < addresses.length; i++) {
      if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
        _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
      }
    }
  }

  function clearStuckBalance(
    uint256 amountPercentage,
    address adr
  ) external onlyTeam {
    uint256 amountETH = address(this).balance;

    if (amountETH > 0) {
      (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
      require(sent, "Failed to transfer funds");
    }
  }

  function blacklistWallets(
    address[] calldata _wallets,
    bool _blacklist
  ) external onlyTeam {
    for (uint i = 0; i < _wallets.length; i++) {
      if (_blacklist) {
        blacklistCount++;
        emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
      } else {
        if (blacklist[_wallets[i]] != 0) blacklistCount--;
      }
      blacklist[_wallets[i]] = _blacklist ? block.number : 0;
    }
  }

  function transfer(
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    return _transferFrom(msg.sender, recipient, amount);
  }

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    if (_allowances[sender][msg.sender] != type(uint256).max) {
      _allowances[sender][msg.sender] =
        _allowances[sender][msg.sender] -
        amount;
    }

    return _transferFrom(sender, recipient, amount);
  }

  function _transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    require(sender != address(0), "ERC20: transfer from 0x0");
    require(recipient != address(0), "ERC20: transfer to 0x0");
    require(amount > 0, "Amount must be > zero");
    require(_balances[sender] >= amount, "Insufficient balance");
    if (!launched() && liquidityPools[recipient]) {
      require(isLiquidityCreator[sender], "Liquidity not added yet.");
      launch();
    }
    if (!isTradingEnabled) {
      require(
        isLiquidityCreator[sender] || isLiquidityCreator[recipient],
        "Trading is not launched yet."
      );
    }

    checkTxLimit(sender, recipient, amount);

    if (!liquidityPools[recipient] && recipient != DEAD) {
      if (!isTxLimitExempt[recipient]) {
        checkWalletLimit(recipient, amount);
      }
    }

    if (inSwap) {
      return _basicTransfer(sender, recipient, amount);
    }

    _balances[sender] = _balances[sender] - amount;

    uint256 amountReceived = amount;

    if (shouldTakeFee(sender, recipient)) {
      amountReceived = takeFee(recipient, amount);
      if (shouldSwapBack(recipient) && amount > 0) swapBack(amount);
    }

    _balances[recipient] = _balances[recipient] + amountReceived;

    emit Transfer(sender, recipient, amountReceived);
    return true;
  }

  function launched() internal view returns (bool) {
    return launchBlock != 0;
  }

  function launch() internal {
    launchBlock = block.number;
    launchTimestamp = block.timestamp;
  }

  function openTrading() external onlyTeam {
    require(!isTradingEnabled, "Can't re-open trading");
    isTradingEnabled = true;
    swapEnabled = true;
  }

  function _basicTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    _balances[sender] = _balances[sender] - amount;
    _balances[recipient] = _balances[recipient] + amount;
    emit Transfer(sender, recipient, amount);
    return true;
  }

  function checkWalletLimit(address recipient, uint256 amount) internal view {
    uint256 walletLimit = _maxWalletSize;
    require(
      _balances[recipient] + amount <= walletLimit,
      "Amount exceeds the max wallet size."
    );
  }

  function checkTxLimit(
    address sender,
    address recipient,
    uint256 amount
  ) internal view {
    if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;

    require(
      amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount),
      "Amount exceeds the tx limit."
    );

    require(blacklist[sender] == 0, "Wallet blacklisted!");
  }

  function shouldTakeFee(
    address sender,
    address recipient
  ) public view returns (bool) {
    if (!transferTax && !liquidityPools[recipient] && !liquidityPools[sender])
      return false;
    return !isFeeExempt[sender] && !isFeeExempt[recipient];
  }

  function getTotalFee(bool selling) public view returns (uint256) {
    if (selling) return totalSellFee;
    return totalBuyFee;
  }

  function takeFee(
    address recipient,
    uint256 amount
  ) internal returns (uint256) {
    bool selling = liquidityPools[recipient];
    uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;

    _balances[address(this)] += feeAmount;

    return amount - feeAmount;
  }

  function shouldSwapBack(address recipient) internal view returns (bool) {
    return
      !liquidityPools[msg.sender] &&
      !inSwap &&
      swapEnabled &&
      swapBackCounter[block.number] < swapBackRateLimit &&
      liquidityPools[recipient] &&
      _balances[address(this)] >= swapAtMinimum &&
      totalBuyFee + totalSellFee > 0;
  }

  function swapBack(uint256 amount) internal swapping {
    uint256 totalFee = totalBuyFee + totalSellFee;
    uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
    if (_balances[address(this)] < amountToSwap)
      amountToSwap = _balances[address(this)];

    uint256 totalLiquidityFee = liquidityBuyFee + liquiditySellFee;
    uint256 amountToLiquify = ((amountToSwap * totalLiquidityFee) / 2) /
      totalFee;
    amountToSwap -= amountToLiquify;

    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = router.WETH();

    uint256 balanceBefore = address(this).balance;

    router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      amountToSwap,
      0,
      path,
      address(this),
      block.timestamp
    );

    uint256 amountETH = address(this).balance - balanceBefore;
    uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

    uint256 amountETHLiquidity = ((amountETH * totalLiquidityFee) / 2) /
      totalETHFee;
    uint256 amountETHMarketing = amountETH - amountETHLiquidity;

    if (amountETHMarketing > 0) {
      (bool sentMarketing, ) = marketingFeeReceiver.call{
        value: amountETHMarketing
      }("");
      if (!sentMarketing) {
        //Failed to transfer to marketing wallet
      }
    }

    if (amountToLiquify > 0) {
      router.addLiquidityETH{value: amountETHLiquidity}(
        address(this),
        amountToLiquify,
        0,
        0,
        liquidityFeeReceiver,
        block.timestamp
      );
    }
    swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
    emit FundsDistributed(
      amountETHMarketing,
      amountETHLiquidity,
      amountToLiquify
    );
  }

  function addLiquidityPool(address lp, bool isPool) external onlyOwner {
    require(lp != pair, "Can't alter current liquidity pair");
    liquidityPools[lp] = isPool;
  }

  function setSwapBackRateLimit(uint256 rate) external onlyOwner {
    swapBackRateLimit = rate;
  }

  function setTxLimit(
    uint256 buyNumerator,
    uint256 sellNumerator,
    uint256 divisor
  ) external onlyOwner {
    require(
      buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000
    );
    _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
    _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
  }

  function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner {
    require(numerator > 0 && divisor > 0 && divisor <= 10000);
    _maxWalletSize = (_totalSupply * numerator) / divisor;
  }

  function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
    isFeeExempt[holder] = exempt;
  }

  function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
    isTxLimitExempt[holder] = exempt;
  }

  function setFees(
    uint256 _liquidityBuyFee,
    uint256 _liquiditySellFee,
    uint256 _marketingBuyFee,
    uint256 _marketingSellFee,
    uint256 _feeDenominator
  ) external onlyOwner {
    require(
      ((_liquidityBuyFee + _liquiditySellFee) / 2) * 2 ==
        (_liquidityBuyFee + _liquiditySellFee),
      "Liquidity fee must be an even number for rounding compatibility."
    );
    liquidityBuyFee = _liquidityBuyFee;
    liquiditySellFee = _liquiditySellFee;
    marketingBuyFee = _marketingBuyFee;
    marketingSellFee = _marketingSellFee;
    totalBuyFee = _liquidityBuyFee + _marketingBuyFee;
    totalSellFee = _liquiditySellFee + _marketingSellFee;
    feeDenominator = _feeDenominator;
    emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
  }

  function toggleTransferTax() external onlyOwner {
    transferTax = !transferTax;
  }

  function setFeeReceivers(
    address _liquidityFeeReceiver,
    address _marketingFeeReceiver
  ) external onlyOwner {
    liquidityFeeReceiver = payable(_liquidityFeeReceiver);
    marketingFeeReceiver = payable(_marketingFeeReceiver);
  }

  function setSwapBackSettings(
    bool _enabled,
    uint256 _denominator,
    uint256 _swapAtMinimum
  ) external onlyOwner {
    require(_denominator > 0);
    swapEnabled = _enabled;
    swapThreshold = _totalSupply / _denominator;
    swapAtMinimum = _swapAtMinimum * (10 ** _decimals);
  }

  function getCirculatingSupply() public view returns (uint256) {
    return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
  }

  event FundsDistributed(
    uint256 marketingETH,
    uint256 liquidityETH,
    uint256 liquidityTokens
  );
  event FeesSet(
    uint256 totalBuyFees,
    uint256 totalSellFees,
    uint256 denominator
  );
}

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":false,"internalType":"uint256","name":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","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":"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":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"WalletBlacklisted","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_blacklist","type":"bool"}],"name":"blacklistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSwapBackRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapAtMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapBackCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackRateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326012600a620005fe565b62000043906401fa0b1e8062000616565b6003556064600354600162000059919062000616565b62000065919062000630565b600455606460035460016200007b919062000616565b62000087919062000630565b600555606460035460016200009d919062000616565b620000a9919062000630565b6006556003600a556000600e556000600f5560006010556000601155601054600e54620000d7919062000653565b601255601154600f54620000ec919062000653565b60135561271060145560158054742c8f195d68830634a184e7652c2a34739d4a048c006001600160a81b0319909116179055601680546001600160a01b0319908116732c8f195d68830634a184e7652c2a34739d4a048c1790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601f805461ffff1916905560035462000183906103e89062000630565b60205561271060035462000198919062000630565b602155348015620001a857600080fd5b50620001b43362000499565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000669565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000669565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000332919062000669565b601a80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff1916600117905560001990600890620003846000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000694565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000540578160001904821115620005245762000524620004e9565b808516156200053257918102915b93841c939080029062000504565b509250929050565b6000826200055957506001620005f8565b816200056857506000620005f8565b81600181146200058157600281146200058c57620005ac565b6001915050620005f8565b60ff841115620005a057620005a0620004e9565b50506001821b620005f8565b5060208310610133831016604e8410600b8410161715620005d1575081810a620005f8565b620005dd8383620004ff565b8060001904821115620005f457620005f4620004e9565b0290505b92915050565b60006200060f60ff84168362000548565b9392505050565b8082028115828204841417620005f857620005f8620004e9565b6000826200064e57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005f857620005f8620004e9565b6000602082840312156200067c57600080fd5b81516001600160a01b03811681146200060f57600080fd5b6127dd80620006a46000396000f3fe6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b1461094b578063f84ba65d1461096b578063f887ea401461098b578063f9f92be4146109ab57600080fd5b8063e8b574f2146108de578063e96fada21461090b578063f1f3bca31461092b57600080fd5b8063c9567bf914610818578063d00efb2f1461082d578063d088935814610843578063d58d850c14610863578063d912b2ce14610883578063dd62ed3e1461089857600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079e578063bafe446b146107be578063bb2188b4146107d3578063bfa21d6a146107f357600080fd5b8063a845bd8614610748578063a8aa1b311461075e578063a9059cbb1461077e57600080fd5b8063893d20e81461065b5780638b42507f1461068d5780638da5cb5b146106bd57806395d89b41146106db5780639fdc800514610708578063a4b45c001461072857600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d757806370a08231146105f6578063715018a61461062c5780638124f7ac1461064157600080fd5b8063658d4b7f1461058157806365cf7c9b146105a157806367243482146105b757600080fd5b8063492a937b146104bc57806350713935146104dc57806356a227f2146104fc57806360bba03d1461051c57806360eef7411461053c57806363a803e11461056c57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043b578063313ce56714610450578063332402f81461046c5780633f4218e01461048c57600080fd5b8063188d1644146103f0578063234e94941461040657806323b872dd1461041b57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610395578063178a18ce146103c557806318160ddd146103db57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612175565b6109d8565b005b34801561036657600080fd5b506040805180820190915260098152685065706f6d6f6e696160b81b60208201525b60405161032f91906121b0565b3480156103a157600080fd5b506103b56103b0366004612213565b610b06565b604051901515815260200161032f565b3480156103d157600080fd5b50610325600a5481565b3480156103e757600080fd5b50600354610325565b3480156103fc57600080fd5b50610325601c5481565b34801561041257600080fd5b50610325610b73565b34801561042757600080fd5b506103b561043636600461223f565b610b93565b34801561044757600080fd5b50610325610c28565b34801561045c57600080fd5b506040516012815260200161032f565b34801561047857600080fd5b506103b5610487366004612280565b610c69565b34801561049857600080fd5b506103b56104a73660046122b9565b600b6020526000908152604090205460ff1681565b3480156104c857600080fd5b506103586104d73660046122eb565b610d10565b3480156104e857600080fd5b506103586104f7366004612320565b610dac565b34801561050857600080fd5b5061035861051736600461234c565b610e25565b34801561052857600080fd5b506103586105373660046122eb565b610f2b565b34801561054857600080fd5b506103b56105573660046122b9565b600d6020526000908152604090205460ff1681565b34801561057857600080fd5b50610325610f5e565b34801561058d57600080fd5b5061035861059c3660046122eb565b610f79565b3480156105ad57600080fd5b50610325601e5481565b3480156105c357600080fd5b506103586105d23660046123bd565b610fac565b3480156105e357600080fd5b50601f546103b590610100900460ff1681565b34801561060257600080fd5b506103256106113660046122b9565b6001600160a01b031660009081526007602052604090205490565b34801561063857600080fd5b506103586110f1565b34801561064d57600080fd5b506015546103b59060ff1681565b34801561066757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069957600080fd5b506103b56106a83660046122b9565b600c6020526000908152604090205460ff1681565b3480156106c957600080fd5b506000546001600160a01b0316610675565b3480156106e757600080fd5b5060408051808201909152600481526350454d4f60e01b6020820152610388565b34801561071457600080fd5b506103b56107233660046122b9565b611105565b34801561073457600080fd5b50610358610743366004612280565b611113565b34801561075457600080fd5b5061032560215481565b34801561076a57600080fd5b50601a54610675906001600160a01b031681565b34801561078a57600080fd5b506103b5610799366004612213565b611153565b3480156107aa57600080fd5b506103586107b9366004612429565b611160565b3480156107ca57600080fd5b506103256111af565b3480156107df57600080fd5b506103586107ee36600461244b565b6111ca565b3480156107ff57600080fd5b506015546106759061010090046001600160a01b031681565b34801561082457600080fd5b50610358611371565b34801561083957600080fd5b50610325601d5481565b34801561084f57600080fd5b5061035861085e36600461249f565b611411565b34801561086f57600080fd5b5061035861087e3660046124d2565b611468565b34801561088f57600080fd5b50610358611475565b3480156108a457600080fd5b506103256108b3366004612280565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108ea57600080fd5b506103256108f93660046124d2565b60096020526000908152604090205481565b34801561091757600080fd5b50601654610675906001600160a01b031681565b34801561093757600080fd5b506103256109463660046124eb565b611491565b34801561095757600080fd5b506103586109663660046122b9565b6114a9565b34801561097757600080fd5b506103586109863660046122eb565b611522565b34801561099757600080fd5b50601754610675906001600160a01b031681565b3480156109b757600080fd5b506103256109c63660046122b9565b601b6020526000908152604090205481565b6109e0611555565b6109ea848661251c565b60026109f6868861251c565b610a00919061252f565b610a0b906002612551565b14610a85576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa3838661251c565b601255610ab0828561251c565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b619086815260200190565b60405180910390a35060015b92915050565b6000610b816012600a61264c565b600554610b8e919061252f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c13576001600160a01b0384166000908152600860209081526040808320338452909152902054610bee90839061265b565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1e8484846115af565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5c9161251c565b600354610b8e919061265b565b60155460009060ff16158015610c9857506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbd57506001600160a01b03831660009081526019602052604090205460ff16155b15610cca57506000610b6d565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c215750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d18611555565b601a546001600160a01b0390811690831603610d815760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7c565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db4611555565b600083118015610dc45750600082115b8015610dd05750600081115b8015610dde57506127108111155b610de757600080fd5b8083600354610df69190612551565b610e00919061252f565b6004556003548190610e13908490612551565b610e1d919061252f565b600555505050565b3360009081526023602052604090205460ff1680610e4d57506000546001600160a01b031633145b610e695760405162461bcd60e51b8152600401610a7c9061266e565b478015610f265760006001600160a01b0383166064610e888685612551565b610e92919061252f565b604051600081818185875af1925050503d8060008114610ece576040519150601f19603f3d011682016040523d82523d6000602084013e610ed3565b606091505b5050905080610f245760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7c565b505b505050565b610f33611555565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6c6012600a61264c565b600654610b8e919061252f565b610f81611555565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb4611555565b8215801590610fc257508083145b610fcb57600080fd5b3360005b848110156110e95760196000878784818110610fed57610fed6126a5565b905060200201602081019061100291906122b9565b6001600160a01b0316815260208101919091526040016000205460ff161580156110715750600d600087878481811061103d5761103d6126a5565b905060200201602081019061105291906122b9565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d7576110d58287878481811061108c5761108c6126a5565b90506020020160208101906110a191906122b9565b6110ad6012600a61264c565b8787868181106110bf576110bf6126a5565b905060200201356110d09190612551565b6119c9565b505b806110e1816126bb565b915050610fcf565b505050505050565b6110f9611555565b6111036000611a83565b565b6000610b6d82600019610b06565b61111b611555565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c213384846115af565b611168611555565b6000821180156111785750600081115b801561118657506127108111155b61118f57600080fd5b808260035461119e9190612551565b6111a8919061252f565b6006555050565b60006111bd6012600a61264c565b600454610b8e919061252f565b3360009081526023602052604090205460ff16806111f257506000546001600160a01b031633145b61120e5760405162461bcd60e51b8152600401610a7c9061266e565b60005b82811015610f245781156112ac57601c805490600061122f836126bb565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611268576112686126a5565b905060200201602081019061127d91906122b9565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130c565b601b60008585848181106112c2576112c26126a5565b90506020020160208101906112d791906122b9565b6001600160a01b031681526020810191909152604001600020541561130c57601c8054906000611306836126d4565b91905055505b8161131857600061131a565b435b601b6000868685818110611330576113306126a5565b905060200201602081019061134591906122b9565b6001600160a01b0316815260208101919091526040016000205580611369816126bb565b915050611211565b3360009081526023602052604090205460ff168061139957506000546001600160a01b031633145b6113b55760405162461bcd60e51b8152600401610a7c9061266e565b601f5460ff16156114005760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7c565b601f805461ffff1916610101179055565b611419611555565b6000821161142657600080fd5b601f805461ff0019166101008515150217905560035461144790839061252f565b6020556114566012600a61264c565b6114609082612551565b602155505050565b611470611555565b600a55565b61147d611555565b6015805460ff19811660ff90911615179055565b600081156114a157505060135490565b505060125490565b6114b1611555565b6001600160a01b0381166115165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b61151f81611a83565b50565b61152a611555565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7c565b60006001600160a01b0384166116075760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7c565b6001600160a01b0383166116565760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7c565b6000821161169e5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7c565b6001600160a01b0384166000908152600760205260409020548211156116fd5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7c565b601d5415801561172557506001600160a01b03831660009081526019602052604090205460ff165b1561179f576001600160a01b0384166000908152600d602052604090205460ff166117925760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7c565b61179f43601d5542601e55565b601f5460ff16611834576001600160a01b0384166000908152600d602052604090205460ff16806117e857506001600160a01b0383166000908152600d602052604090205460ff165b6118345760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7c565b61183f848484611ad3565b6001600160a01b03831660009081526019602052604090205460ff1615801561187657506001546001600160a01b03848116911614155b156118a5576001600160a01b0383166000908152600c602052604090205460ff166118a5576118a58383611bf3565b60225460ff16156118c2576118bb8484846119c9565b9050610c21565b6001600160a01b0384166000908152600760205260409020546118e690839061265b565b6001600160a01b0385166000908152600760205260409020558161190a8585610c69565b1561193e576119198484611c76565b905061192484611cf4565b80156119305750600083115b1561193e5761193e83611da7565b6001600160a01b03841660009081526007602052604090205461196290829061251c565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b69085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119ed90839061265b565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1d90839061251c565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a719086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1257506001600160a01b0382166000908152600c602052604090205460ff165b15611b1c57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4457600554611b48565b6004545b811115611b975760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7c565b6001600160a01b0383166000908152601b602052604090205415610f265760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7c565b6006546001600160a01b0383166000908152600760205260409020548190611c1c90849061251c565b1115610f265760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7c565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca383611491565b611cad9086612551565b611cb7919061252f565b30600090815260076020526040812080549293508392909190611cdb90849061251c565b90915550611ceb9050818561265b565b95945050505050565b3360009081526019602052604081205460ff16158015611d17575060225460ff16155b8015611d2a5750601f54610100900460ff165b8015611d465750600a5443600090815260096020526040902054105b8015611d6a57506001600160a01b03821660009081526019602052604090205460ff165b8015611d8757506021543060009081526007602052604090205410155b8015610b6d57506000601354601254611da0919061251c565b1192915050565b6022805460ff19166001179055601354601254600091611dc69161251c565b905060006020548310611ddb57602054611ddd565b825b30600090815260076020526040902054909150811115611e095750306000908152600760205260409020545b6000601154601054611e1b919061251c565b90506000836002611e2c8486612551565b611e36919061252f565b611e40919061252f565b9050611e4c818461265b565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8657611e866126a5565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0391906126eb565b81600181518110611f1657611f166126a5565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f60908890600090879030904290600401612708565b600060405180830381600087803b158015611f7a57600080fd5b505af1158015611f8e573d6000803e3d6000fd5b5050505060008147611fa0919061265b565b90506000611faf60028761252f565b611fb9908961265b565b90506000816002611fca8986612551565b611fd4919061252f565b611fde919061252f565b90506000611fec828561265b565b9050801561204b576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612041576040519150601f19603f3d011682016040523d82523d6000602084013e612046565b606091505b505050505b86156120ef5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120eb9190612779565b5050505b4360009081526009602052604090205461210a90600161251c565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121dd578581018301518582016040015282016121c1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151f57600080fd5b6000806040838503121561222657600080fd5b8235612231816121fe565b946020939093013593505050565b60008060006060848603121561225457600080fd5b833561225f816121fe565b9250602084013561226f816121fe565b929592945050506040919091013590565b6000806040838503121561229357600080fd5b823561229e816121fe565b915060208301356122ae816121fe565b809150509250929050565b6000602082840312156122cb57600080fd5b8135610c21816121fe565b803580151581146122e657600080fd5b919050565b600080604083850312156122fe57600080fd5b8235612309816121fe565b9150612317602084016122d6565b90509250929050565b60008060006060848603121561233557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235f57600080fd5b8235915060208301356122ae816121fe565b60008083601f84011261238357600080fd5b50813567ffffffffffffffff81111561239b57600080fd5b6020830191508360208260051b85010111156123b657600080fd5b9250929050565b600080600080604085870312156123d357600080fd5b843567ffffffffffffffff808211156123eb57600080fd5b6123f788838901612371565b9096509450602087013591508082111561241057600080fd5b5061241d87828801612371565b95989497509550505050565b6000806040838503121561243c57600080fd5b50508035926020909101359150565b60008060006040848603121561246057600080fd5b833567ffffffffffffffff81111561247757600080fd5b61248386828701612371565b90945092506124969050602085016122d6565b90509250925092565b6000806000606084860312156124b457600080fd5b6124bd846122d6565b95602085013595506040909401359392505050565b6000602082840312156124e457600080fd5b5035919050565b6000602082840312156124fd57600080fd5b610c21826122d6565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6d57610b6d612506565b60008261254c57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6d57610b6d612506565b600181815b808511156125a357816000190482111561258957612589612506565b8085161561259657918102915b93841c939080029061256d565b509250929050565b6000826125ba57506001610b6d565b816125c757506000610b6d565b81600181146125dd57600281146125e757612603565b6001915050610b6d565b60ff8411156125f8576125f8612506565b50506001821b610b6d565b5060208310610133831016604e8410600b8410161715612626575081810a610b6d565b6126308383612568565b806000190482111561264457612644612506565b029392505050565b6000610c2160ff8416836125ab565b81810381811115610b6d57610b6d612506565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cd576126cd612506565b5060010190565b6000816126e3576126e3612506565b506000190190565b6000602082840312156126fd57600080fd5b8151610c21816121fe565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127585784516001600160a01b031683529383019391830191600101612733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220950892a269d3716110076f91b09bd09a6b7e79e5bce62b49c8deefc02566d64564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b1461094b578063f84ba65d1461096b578063f887ea401461098b578063f9f92be4146109ab57600080fd5b8063e8b574f2146108de578063e96fada21461090b578063f1f3bca31461092b57600080fd5b8063c9567bf914610818578063d00efb2f1461082d578063d088935814610843578063d58d850c14610863578063d912b2ce14610883578063dd62ed3e1461089857600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079e578063bafe446b146107be578063bb2188b4146107d3578063bfa21d6a146107f357600080fd5b8063a845bd8614610748578063a8aa1b311461075e578063a9059cbb1461077e57600080fd5b8063893d20e81461065b5780638b42507f1461068d5780638da5cb5b146106bd57806395d89b41146106db5780639fdc800514610708578063a4b45c001461072857600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d757806370a08231146105f6578063715018a61461062c5780638124f7ac1461064157600080fd5b8063658d4b7f1461058157806365cf7c9b146105a157806367243482146105b757600080fd5b8063492a937b146104bc57806350713935146104dc57806356a227f2146104fc57806360bba03d1461051c57806360eef7411461053c57806363a803e11461056c57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043b578063313ce56714610450578063332402f81461046c5780633f4218e01461048c57600080fd5b8063188d1644146103f0578063234e94941461040657806323b872dd1461041b57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610395578063178a18ce146103c557806318160ddd146103db57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612175565b6109d8565b005b34801561036657600080fd5b506040805180820190915260098152685065706f6d6f6e696160b81b60208201525b60405161032f91906121b0565b3480156103a157600080fd5b506103b56103b0366004612213565b610b06565b604051901515815260200161032f565b3480156103d157600080fd5b50610325600a5481565b3480156103e757600080fd5b50600354610325565b3480156103fc57600080fd5b50610325601c5481565b34801561041257600080fd5b50610325610b73565b34801561042757600080fd5b506103b561043636600461223f565b610b93565b34801561044757600080fd5b50610325610c28565b34801561045c57600080fd5b506040516012815260200161032f565b34801561047857600080fd5b506103b5610487366004612280565b610c69565b34801561049857600080fd5b506103b56104a73660046122b9565b600b6020526000908152604090205460ff1681565b3480156104c857600080fd5b506103586104d73660046122eb565b610d10565b3480156104e857600080fd5b506103586104f7366004612320565b610dac565b34801561050857600080fd5b5061035861051736600461234c565b610e25565b34801561052857600080fd5b506103586105373660046122eb565b610f2b565b34801561054857600080fd5b506103b56105573660046122b9565b600d6020526000908152604090205460ff1681565b34801561057857600080fd5b50610325610f5e565b34801561058d57600080fd5b5061035861059c3660046122eb565b610f79565b3480156105ad57600080fd5b50610325601e5481565b3480156105c357600080fd5b506103586105d23660046123bd565b610fac565b3480156105e357600080fd5b50601f546103b590610100900460ff1681565b34801561060257600080fd5b506103256106113660046122b9565b6001600160a01b031660009081526007602052604090205490565b34801561063857600080fd5b506103586110f1565b34801561064d57600080fd5b506015546103b59060ff1681565b34801561066757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069957600080fd5b506103b56106a83660046122b9565b600c6020526000908152604090205460ff1681565b3480156106c957600080fd5b506000546001600160a01b0316610675565b3480156106e757600080fd5b5060408051808201909152600481526350454d4f60e01b6020820152610388565b34801561071457600080fd5b506103b56107233660046122b9565b611105565b34801561073457600080fd5b50610358610743366004612280565b611113565b34801561075457600080fd5b5061032560215481565b34801561076a57600080fd5b50601a54610675906001600160a01b031681565b34801561078a57600080fd5b506103b5610799366004612213565b611153565b3480156107aa57600080fd5b506103586107b9366004612429565b611160565b3480156107ca57600080fd5b506103256111af565b3480156107df57600080fd5b506103586107ee36600461244b565b6111ca565b3480156107ff57600080fd5b506015546106759061010090046001600160a01b031681565b34801561082457600080fd5b50610358611371565b34801561083957600080fd5b50610325601d5481565b34801561084f57600080fd5b5061035861085e36600461249f565b611411565b34801561086f57600080fd5b5061035861087e3660046124d2565b611468565b34801561088f57600080fd5b50610358611475565b3480156108a457600080fd5b506103256108b3366004612280565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108ea57600080fd5b506103256108f93660046124d2565b60096020526000908152604090205481565b34801561091757600080fd5b50601654610675906001600160a01b031681565b34801561093757600080fd5b506103256109463660046124eb565b611491565b34801561095757600080fd5b506103586109663660046122b9565b6114a9565b34801561097757600080fd5b506103586109863660046122eb565b611522565b34801561099757600080fd5b50601754610675906001600160a01b031681565b3480156109b757600080fd5b506103256109c63660046122b9565b601b6020526000908152604090205481565b6109e0611555565b6109ea848661251c565b60026109f6868861251c565b610a00919061252f565b610a0b906002612551565b14610a85576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa3838661251c565b601255610ab0828561251c565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b619086815260200190565b60405180910390a35060015b92915050565b6000610b816012600a61264c565b600554610b8e919061252f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c13576001600160a01b0384166000908152600860209081526040808320338452909152902054610bee90839061265b565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1e8484846115af565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5c9161251c565b600354610b8e919061265b565b60155460009060ff16158015610c9857506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbd57506001600160a01b03831660009081526019602052604090205460ff16155b15610cca57506000610b6d565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c215750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d18611555565b601a546001600160a01b0390811690831603610d815760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7c565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db4611555565b600083118015610dc45750600082115b8015610dd05750600081115b8015610dde57506127108111155b610de757600080fd5b8083600354610df69190612551565b610e00919061252f565b6004556003548190610e13908490612551565b610e1d919061252f565b600555505050565b3360009081526023602052604090205460ff1680610e4d57506000546001600160a01b031633145b610e695760405162461bcd60e51b8152600401610a7c9061266e565b478015610f265760006001600160a01b0383166064610e888685612551565b610e92919061252f565b604051600081818185875af1925050503d8060008114610ece576040519150601f19603f3d011682016040523d82523d6000602084013e610ed3565b606091505b5050905080610f245760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7c565b505b505050565b610f33611555565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6c6012600a61264c565b600654610b8e919061252f565b610f81611555565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb4611555565b8215801590610fc257508083145b610fcb57600080fd5b3360005b848110156110e95760196000878784818110610fed57610fed6126a5565b905060200201602081019061100291906122b9565b6001600160a01b0316815260208101919091526040016000205460ff161580156110715750600d600087878481811061103d5761103d6126a5565b905060200201602081019061105291906122b9565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d7576110d58287878481811061108c5761108c6126a5565b90506020020160208101906110a191906122b9565b6110ad6012600a61264c565b8787868181106110bf576110bf6126a5565b905060200201356110d09190612551565b6119c9565b505b806110e1816126bb565b915050610fcf565b505050505050565b6110f9611555565b6111036000611a83565b565b6000610b6d82600019610b06565b61111b611555565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c213384846115af565b611168611555565b6000821180156111785750600081115b801561118657506127108111155b61118f57600080fd5b808260035461119e9190612551565b6111a8919061252f565b6006555050565b60006111bd6012600a61264c565b600454610b8e919061252f565b3360009081526023602052604090205460ff16806111f257506000546001600160a01b031633145b61120e5760405162461bcd60e51b8152600401610a7c9061266e565b60005b82811015610f245781156112ac57601c805490600061122f836126bb565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611268576112686126a5565b905060200201602081019061127d91906122b9565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130c565b601b60008585848181106112c2576112c26126a5565b90506020020160208101906112d791906122b9565b6001600160a01b031681526020810191909152604001600020541561130c57601c8054906000611306836126d4565b91905055505b8161131857600061131a565b435b601b6000868685818110611330576113306126a5565b905060200201602081019061134591906122b9565b6001600160a01b0316815260208101919091526040016000205580611369816126bb565b915050611211565b3360009081526023602052604090205460ff168061139957506000546001600160a01b031633145b6113b55760405162461bcd60e51b8152600401610a7c9061266e565b601f5460ff16156114005760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7c565b601f805461ffff1916610101179055565b611419611555565b6000821161142657600080fd5b601f805461ff0019166101008515150217905560035461144790839061252f565b6020556114566012600a61264c565b6114609082612551565b602155505050565b611470611555565b600a55565b61147d611555565b6015805460ff19811660ff90911615179055565b600081156114a157505060135490565b505060125490565b6114b1611555565b6001600160a01b0381166115165760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7c565b61151f81611a83565b50565b61152a611555565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111035760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7c565b60006001600160a01b0384166116075760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7c565b6001600160a01b0383166116565760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7c565b6000821161169e5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7c565b6001600160a01b0384166000908152600760205260409020548211156116fd5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7c565b601d5415801561172557506001600160a01b03831660009081526019602052604090205460ff165b1561179f576001600160a01b0384166000908152600d602052604090205460ff166117925760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7c565b61179f43601d5542601e55565b601f5460ff16611834576001600160a01b0384166000908152600d602052604090205460ff16806117e857506001600160a01b0383166000908152600d602052604090205460ff165b6118345760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7c565b61183f848484611ad3565b6001600160a01b03831660009081526019602052604090205460ff1615801561187657506001546001600160a01b03848116911614155b156118a5576001600160a01b0383166000908152600c602052604090205460ff166118a5576118a58383611bf3565b60225460ff16156118c2576118bb8484846119c9565b9050610c21565b6001600160a01b0384166000908152600760205260409020546118e690839061265b565b6001600160a01b0385166000908152600760205260409020558161190a8585610c69565b1561193e576119198484611c76565b905061192484611cf4565b80156119305750600083115b1561193e5761193e83611da7565b6001600160a01b03841660009081526007602052604090205461196290829061251c565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b69085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119ed90839061265b565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1d90839061251c565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a719086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1257506001600160a01b0382166000908152600c602052604090205460ff165b15611b1c57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4457600554611b48565b6004545b811115611b975760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7c565b6001600160a01b0383166000908152601b602052604090205415610f265760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7c565b6006546001600160a01b0383166000908152600760205260409020548190611c1c90849061251c565b1115610f265760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7c565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca383611491565b611cad9086612551565b611cb7919061252f565b30600090815260076020526040812080549293508392909190611cdb90849061251c565b90915550611ceb9050818561265b565b95945050505050565b3360009081526019602052604081205460ff16158015611d17575060225460ff16155b8015611d2a5750601f54610100900460ff165b8015611d465750600a5443600090815260096020526040902054105b8015611d6a57506001600160a01b03821660009081526019602052604090205460ff165b8015611d8757506021543060009081526007602052604090205410155b8015610b6d57506000601354601254611da0919061251c565b1192915050565b6022805460ff19166001179055601354601254600091611dc69161251c565b905060006020548310611ddb57602054611ddd565b825b30600090815260076020526040902054909150811115611e095750306000908152600760205260409020545b6000601154601054611e1b919061251c565b90506000836002611e2c8486612551565b611e36919061252f565b611e40919061252f565b9050611e4c818461265b565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8657611e866126a5565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0391906126eb565b81600181518110611f1657611f166126a5565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f60908890600090879030904290600401612708565b600060405180830381600087803b158015611f7a57600080fd5b505af1158015611f8e573d6000803e3d6000fd5b5050505060008147611fa0919061265b565b90506000611faf60028761252f565b611fb9908961265b565b90506000816002611fca8986612551565b611fd4919061252f565b611fde919061252f565b90506000611fec828561265b565b9050801561204b576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612041576040519150601f19603f3d011682016040523d82523d6000602084013e612046565b606091505b505050505b86156120ef5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120eb9190612779565b5050505b4360009081526009602052604090205461210a90600161251c565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218d57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121dd578581018301518582016040015282016121c1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151f57600080fd5b6000806040838503121561222657600080fd5b8235612231816121fe565b946020939093013593505050565b60008060006060848603121561225457600080fd5b833561225f816121fe565b9250602084013561226f816121fe565b929592945050506040919091013590565b6000806040838503121561229357600080fd5b823561229e816121fe565b915060208301356122ae816121fe565b809150509250929050565b6000602082840312156122cb57600080fd5b8135610c21816121fe565b803580151581146122e657600080fd5b919050565b600080604083850312156122fe57600080fd5b8235612309816121fe565b9150612317602084016122d6565b90509250929050565b60008060006060848603121561233557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235f57600080fd5b8235915060208301356122ae816121fe565b60008083601f84011261238357600080fd5b50813567ffffffffffffffff81111561239b57600080fd5b6020830191508360208260051b85010111156123b657600080fd5b9250929050565b600080600080604085870312156123d357600080fd5b843567ffffffffffffffff808211156123eb57600080fd5b6123f788838901612371565b9096509450602087013591508082111561241057600080fd5b5061241d87828801612371565b95989497509550505050565b6000806040838503121561243c57600080fd5b50508035926020909101359150565b60008060006040848603121561246057600080fd5b833567ffffffffffffffff81111561247757600080fd5b61248386828701612371565b90945092506124969050602085016122d6565b90509250925092565b6000806000606084860312156124b457600080fd5b6124bd846122d6565b95602085013595506040909401359392505050565b6000602082840312156124e457600080fd5b5035919050565b6000602082840312156124fd57600080fd5b610c21826122d6565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6d57610b6d612506565b60008261254c57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6d57610b6d612506565b600181815b808511156125a357816000190482111561258957612589612506565b8085161561259657918102915b93841c939080029061256d565b509250929050565b6000826125ba57506001610b6d565b816125c757506000610b6d565b81600181146125dd57600281146125e757612603565b6001915050610b6d565b60ff8411156125f8576125f8612506565b50506001821b610b6d565b5060208310610133831016604e8410600b8410161715612626575081810a610b6d565b6126308383612568565b806000190482111561264457612644612506565b029392505050565b6000610c2160ff8416836125ab565b81810381811115610b6d57610b6d612506565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cd576126cd612506565b5060010190565b6000816126e3576126e3612506565b506000190190565b6000602082840312156126fd57600080fd5b8151610c21816121fe565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127585784516001600160a01b031683529383019391830191600101612733565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220950892a269d3716110076f91b09bd09a6b7e79e5bce62b49c8deefc02566d64564736f6c63430008110033

Deployed Bytecode Sourcemap

6835:14841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8667:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8667:50:0;;;;;;;;19867:791;;;;;;;;;;-1:-1:-1;19867:791:0;;;;;:::i;:::-;;:::i;:::-;;10121:79;;;;;;;;;;-1:-1:-1;10189:5:0;;;;;;;;;;;;-1:-1:-1;;;10189:5:0;;;;10121:79;;;;;;;:::i;10931:217::-;;;;;;;;;;-1:-1:-1;10931:217:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;10931:217:0;1664:187:1;7540:36:0;;;;;;;;;;;;;;;;9845:96;;;;;;;;;;-1:-1:-1;9923:12:0;;9845:96;;8493:29;;;;;;;;;;;;;;;;10410:115;;;;;;;;;;;;;:::i;12798:361::-;;;;;;;;;;-1:-1:-1;12798:361:0;;;;;:::i;:::-;;:::i;21319:132::-;;;;;;;;;;;;;:::i;9947:79::-;;;;;;;;;;-1:-1:-1;9947:79:0;;7140:2;2459:36:1;;2447:2;2432:18;9947:79:0;2317:184:1;15901:268:0;;;;;;;;;;-1:-1:-1;15901:268:0;;;;;:::i;:::-;;:::i;7583:43::-;;;;;;;;;;-1:-1:-1;7583:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18757:174;;;;;;;;;;-1:-1:-1;18757:174:0;;;;;:::i;:::-;;:::i;19043:359::-;;;;;;;;;;-1:-1:-1;19043:359:0;;;;;:::i;:::-;;:::i;11856:320::-;;;;;;;;;;-1:-1:-1;11856:320:0;;;;;:::i;:::-;;:::i;11282:114::-;;;;;;;;;;-1:-1:-1;11282:114:0;;;;;:::i;:::-;;:::i;7683:50::-;;;;;;;;;;-1:-1:-1;7683:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10531:113;;;;;;;;;;;;;:::i;19621:::-;;;;;;;;;;-1:-1:-1;19621:113:0;;;;;:::i;:::-;;:::i;8560:30::-;;;;;;;;;;;;;;;;11402:448;;;;;;;;;;-1:-1:-1;11402:448:0;;;;;:::i;:::-;;:::i;8631:31::-;;;;;;;;;;-1:-1:-1;8631:31:0;;;;;;;;;;;10650:113;;;;;;;;;;-1:-1:-1;10650:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;10739:18:0;10716:7;10739:18;;;:9;:18;;;;;;;10650:113;6351:97;;;;;;;;;;;;;:::i;8030:31::-;;;;;;;;;;-1:-1:-1;8030:31:0;;;;;;;;10206:79;;;;;;;;;;-1:-1:-1;10249:7:0;6201:6;-1:-1:-1;;;;;6201:6:0;10206:79;;;-1:-1:-1;;;;;5591:32:1;;;5573:51;;5561:2;5546:18;10206:79:0;5427:203:1;7631:47:0;;;;;;;;;;-1:-1:-1;7631:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6132:81;;;;;;;;;;-1:-1:-1;6178:7:0;6201:6;-1:-1:-1;;;;;6201:6:0;6132:81;;10032:83;;;;;;;;;;-1:-1:-1;10102:7:0;;;;;;;;;;;;-1:-1:-1;;;10102:7:0;;;;10032:83;;11154:122;;;;;;;;;;-1:-1:-1;11154:122:0;;;;;:::i;:::-;;:::i;20757:247::-;;;;;;;;;;-1:-1:-1;20757:247:0;;;;;:::i;:::-;;:::i;8722:51::-;;;;;;;;;;;;;;;;8418:19;;;;;;;;;;-1:-1:-1;8418:19:0;;;;-1:-1:-1;;;;;8418:19:0;;;12627:165;;;;;;;;;;-1:-1:-1;12627:165:0;;;;;:::i;:::-;;:::i;19408:207::-;;;;;;;;;;-1:-1:-1;19408:207:0;;;;;:::i;:::-;;:::i;10291:113::-;;;;;;;;;;;;;:::i;12182:439::-;;;;;;;;;;-1:-1:-1;12182:439:0;;;;;:::i;:::-;;:::i;8068:97::-;;;;;;;;;;-1:-1:-1;8068:97:0;;;;;;;-1:-1:-1;;;;;8068:97:0;;;14781:160;;;;;;;;;;;;;:::i;8529:26::-;;;;;;;;;;;;;;;;21010:303;;;;;;;;;;-1:-1:-1;21010:303:0;;;;;:::i;:::-;;:::i;18937:100::-;;;;;;;;;;-1:-1:-1;18937:100:0;;;;;:::i;:::-;;:::i;20664:87::-;;;;;;;;;;;;;:::i;10769:156::-;;;;;;;;;;-1:-1:-1;10769:156:0;;;;;:::i;:::-;-1:-1:-1;;;;;10891:19:0;;;10868:7;10891:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10769:156;7485:50;;;;;;;;;;-1:-1:-1;7485:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;8170:97;;;;;;;;;;-1:-1:-1;8170:97:0;;;;-1:-1:-1;;;;;8170:97:0;;;16175:135;;;;;;;;;;-1:-1:-1;16175:135:0;;;;;:::i;:::-;;:::i;6454:191::-;;;;;;;;;;-1:-1:-1;6454:191:0;;;;;:::i;:::-;;:::i;19740:121::-;;;;;;;;;;-1:-1:-1;19740:121:0;;;;;:::i;:::-;;:::i;8274:24::-;;;;;;;;;;-1:-1:-1;8274:24:0;;;;-1:-1:-1;;;;;8274:24:0;;;8444:44;;;;;;;;;;-1:-1:-1;8444:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;19867:791;6099:13;:11;:13::i;:::-;20149:36:::1;20168:17:::0;20149:16;:36:::1;:::i;:::-;20129:1;20089:36;20108:17:::0;20089:16;:36:::1;:::i;:::-;20088:42;;;;:::i;:::-;20087:48;::::0;20134:1:::1;20087:48;:::i;:::-;:99;20071:197;;;::::0;;-1:-1:-1;;;20071:197:0;;8398:2:1;20071:197:0::1;::::0;::::1;8380:21:1::0;8417:18;;;8410:30;;;;8476:34;8456:18;;;8449:62;8547:34;8527:18;;;8520:62;8599:19;;20071:197:0::1;;;;;;;;;20275:15;:34:::0;;;20316:16:::1;:36:::0;;;20359:15:::1;:34:::0;;;20400:16:::1;:36:::0;;;20457:35:::1;20377:16:::0;20293;20457:35:::1;:::i;:::-;20443:11;:49:::0;20514:37:::1;20534:17:::0;20514;:37:::1;:::i;:::-;20499:12;:52:::0;;;20558:14:::1;:32:::0;;;20610:11:::1;::::0;20602:50:::1;::::0;;8831:25:1;;;8887:2;8872:18;;8865:34;;;;8915:18;;;8908:34;;;20602:50:0::1;::::0;8819:2:1;8804:18;20602:50:0::1;;;;;;;19867:791:::0;;;;;:::o;10931:217::-;11046:10;11021:4;11034:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11034:32:0;;;;;;;;;;:41;;;11087:37;11021:4;;11034:32;;11087:37;;;;11069:6;160:25:1;;148:2;133:18;;14:177;11087:37:0;;;;;;;;-1:-1:-1;11138:4:0;10931:217;;;;;:::o;10410:115::-;10460:7;10503:15;7140:2;10503;:15;:::i;:::-;10483:16;;:36;;;;:::i;:::-;10476:43;;10410:115;:::o;12798:361::-;-1:-1:-1;;;;;12935:19:0;;12918:4;12935:19;;;:11;:19;;;;;;;;12955:10;12935:31;;;;;;;;-1:-1:-1;;12935:52:0;12931:167;;-1:-1:-1;;;;;13041:19:0;;;;;;:11;:19;;;;;;;;13061:10;13041:31;;;;;;;;:49;;13084:6;;13041:49;:::i;:::-;-1:-1:-1;;;;;12998:19:0;;;;;;:11;:19;;;;;;;;13018:10;12998:31;;;;;;;:92;12931:167;13113:40;13127:6;13135:9;13146:6;13113:13;:40::i;:::-;13106:47;;12798:361;;;;;;:::o;21319:132::-;21439:4;;-1:-1:-1;;;;;21439:4:0;;;21372:7;10739:18;;;:9;:18;;;;;;;21421:4;;;;;10739:18;;;;;21372:7;;21411:33;;;:::i;:::-;21395:12;;:50;;;;:::i;15901:268::-;16013:11;;15995:4;;16013:11;;16012:12;:42;;;;-1:-1:-1;;;;;;16029:25:0;;;;;;:14;:25;;;;;;;;16028:26;16012:42;:69;;;;-1:-1:-1;;;;;;16059:22:0;;;;;;:14;:22;;;;;;;;16058:23;16012:69;16008:94;;;-1:-1:-1;16097:5:0;16090:12;;16008:94;-1:-1:-1;;;;;16117:19:0;;;;;;:11;:19;;;;;;;;16116:20;:47;;;;-1:-1:-1;;;;;;;16141:22:0;;;;;:11;:22;;;;;;;;16140:23;;16109:54;-1:-1:-1;15901:268:0:o;18757:174::-;6099:13;:11;:13::i;:::-;18848:4:::1;::::0;-1:-1:-1;;;;;18848:4:0;;::::1;18842:10:::0;;::::1;::::0;18834:57:::1;;;::::0;-1:-1:-1;;;18834:57:0;;10671:2:1;18834:57:0::1;::::0;::::1;10653:21:1::0;10710:2;10690:18;;;10683:30;10749:34;10729:18;;;10722:62;-1:-1:-1;;;10800:18:1;;;10793:32;10842:19;;18834:57:0::1;10469:398:1::0;18834:57:0::1;-1:-1:-1::0;;;;;18898:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;18898:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18757:174::o;19043:359::-;6099:13;:11;:13::i;:::-;19202:1:::1;19187:12;:16;:37;;;;;19223:1;19207:13;:17;19187:37;:52;;;;;19238:1;19228:7;:11;19187:52;:72;;;;;19254:5;19243:7;:16;;19187:72;19171:95;;;::::0;::::1;;19323:7;19307:12;19292;;:27;;;;:::i;:::-;19291:39;;;;:::i;:::-;19273:15;:57:::0;19357:12:::1;::::0;19389:7;;19357:28:::1;::::0;19372:13;;19357:28:::1;:::i;:::-;19356:40;;;;:::i;:::-;19337:16;:59:::0;-1:-1:-1;;;19043:359:0:o;11856:320::-;4287:10;8963:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6178:7:0;6201:6;-1:-1:-1;;;;;6201:6:0;8992:10;:21;8963:50;8947:111;;;;-1:-1:-1;;;8947:111:0;;;;;;;:::i;:::-;11982:21:::1;12016:13:::0;;12012:159:::1;;12041:9;-1:-1:-1::0;;;;;12056:8:0;::::1;12105:3;12073:28;12085:16:::0;12073:9;:28:::1;:::i;:::-;12072:36;;;;:::i;:::-;12056:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:73;;;12130:4;12122:41;;;::::0;-1:-1:-1;;;12122:41:0;;11640:2:1;12122:41:0::1;::::0;::::1;11622:21:1::0;11679:2;11659:18;;;11652:30;11718:26;11698:18;;;11691:54;11762:18;;12122:41:0::1;11438:348:1::0;12122:41:0::1;12031:140;12012:159;11955:221;11856:320:::0;;:::o;11282:114::-;6099:13;:11;:13::i;:::-;-1:-1:-1;;;;;11361:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:29;;-1:-1:-1;;11361:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11282:114::o;10531:113::-;10581:7;10622:15;7140:2;10622;:15;:::i;:::-;10604:14;;:34;;;;:::i;19621:113::-;6099:13;:11;:13::i;:::-;-1:-1:-1;;;;;19700:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;19700:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19621:113::o;11402:448::-;6099:13;:11;:13::i;:::-;11526:20;;;;;:58:::1;;-1:-1:-1::0;11550:34:0;;::::1;11526:58;11518:67;;;::::0;::::1;;11607:10;11592:12;11626:219;11643:20:::0;;::::1;11626:219;;;11684:14;:28;11699:9;;11709:1;11699:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11684:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11684:28:0;;::::1;;11683:29;:66:::0;::::1;;;;11717:18;:32;11736:9;;11746:1;11736:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11717:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11717:32:0;;::::1;;11716:33;11683:66;11679:159;;;11762:66;11777:4;11783:9;;11793:1;11783:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11811:15;7140:2;11811;:15;:::i;:::-;11797:7;;11805:1;11797:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;11762:14;:66::i;:::-;;11679:159;11665:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11626:219;;;;11511:339;11402:448:::0;;;;:::o;6351:97::-;6099:13;:11;:13::i;:::-;6412:30:::1;6439:1;6412:18;:30::i;:::-;6351:97::o:0;11154:122::-;11215:4;11235:35;11243:7;-1:-1:-1;;11235:7:0;:35::i;20757:247::-;6099:13;:11;:13::i;:::-;20885:20:::1;:53:::0;;-1:-1:-1;;;;;;20885:53:0::1;;-1:-1:-1::0;;;;;20885:53:0;;::::1;;;::::0;;20945:20:::1;:53:::0;;-1:-1:-1;;;;;;20945:53:0::1;::::0;;;::::1;;::::0;;20757:247::o;12627:165::-;12722:4;12742:44;12756:10;12768:9;12779:6;12742:13;:44::i;19408:207::-;6099:13;:11;:13::i;:::-;19512:1:::1;19500:9;:13;:28;;;;;19527:1;19517:7;:11;19500:28;:48;;;;;19543:5;19532:7;:16;;19500:48;19492:57;;;::::0;::::1;;19602:7;19589:9;19574:12;;:24;;;;:::i;:::-;19573:36;;;;:::i;:::-;19556:14;:53:::0;-1:-1:-1;;19408:207:0:o;10291:113::-;10340:7;10382:15;7140:2;10382;:15;:::i;:::-;10363;;:35;;;;:::i;12182:439::-;4287:10;8963:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6178:7:0;6201:6;-1:-1:-1;;;;;6201:6:0;8992:10;:21;8963:50;8947:111;;;;-1:-1:-1;;;8947:111:0;;;;;;;:::i;:::-;12299:6:::1;12294:322;12311:19:::0;;::::1;12294:322;;;12350:10;12346:200;;;12373:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12405:55;12423:9;12434:8;;12443:1;12434:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12405:55;::::0;;-1:-1:-1;;;;;12321:15:1;;;12303:34;;12373:15;;;;12368:2;12353:18;;12346:43;12447:12:0::1;12405:18:1::0;;;12398:34;12253:2;12238:18;12405:55:0::1;;;;;;;12346:200;;;12491:9;:22;12501:8;;12510:1;12501:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12491:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12491:22:0;;:27;12487:49:::1;;12520:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12487:49;12579:10;:29;;12607:1;12579:29;;;12592:12;12579:29;12554:9;:22;12564:8;;12573:1;12564:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12554:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12554:22:0;:54;12332:3;::::1;::::0;::::1;:::i;:::-;;;;12294:322;;14781:160:::0;4287:10;8963:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6178:7:0;6201:6;-1:-1:-1;;;;;6201:6:0;8992:10;:21;8963:50;8947:111;;;;-1:-1:-1;;;8947:111:0;;;;;;;:::i;:::-;14838:16:::1;::::0;::::1;;14837:17;14829:51;;;::::0;-1:-1:-1;;;14829:51:0;;12786:2:1;14829:51:0::1;::::0;::::1;12768:21:1::0;12825:2;12805:18;;;12798:30;-1:-1:-1;;;12844:18:1;;;12837:51;12905:18;;14829:51:0::1;12584:345:1::0;14829:51:0::1;14887:16;:23:::0;;-1:-1:-1;;14917:18:0;;;;;14781:160::o;21010:303::-;6099:13;:11;:13::i;:::-;21169:1:::1;21154:12;:16;21146:25;;;::::0;::::1;;21178:11;:22:::0;;-1:-1:-1;;21178:22:0::1;;::::0;::::1;;;;::::0;;21223:12:::1;::::0;:27:::1;::::0;21238:12;;21223:27:::1;:::i;:::-;21207:13;:43:::0;21291:15:::1;7140:2;21291;:15;:::i;:::-;21273:34;::::0;:14;:34:::1;:::i;:::-;21257:13;:50:::0;-1:-1:-1;;;21010:303:0:o;18937:100::-;6099:13;:11;:13::i;:::-;19007:17:::1;:24:::0;18937:100::o;20664:87::-;6099:13;:11;:13::i;:::-;20734:11:::1;::::0;;-1:-1:-1;;20719:26:0;::::1;20734:11;::::0;;::::1;20733:12;20719:26;::::0;;20664:87::o;16175:135::-;16231:7;16251;16247:32;;;-1:-1:-1;;16267:12:0;;;16175:135::o;16247:32::-;-1:-1:-1;;16293:11:0;;;16175:135::o;6454:191::-;6099:13;:11;:13::i;:::-;-1:-1:-1;;;;;6539:22:0;::::1;6531:73;;;::::0;-1:-1:-1;;;6531:73:0;;13136:2:1;6531:73:0::1;::::0;::::1;13118:21:1::0;13175:2;13155:18;;;13148:30;13214:34;13194:18;;;13187:62;-1:-1:-1;;;13265:18:1;;;13258:36;13311:19;;6531:73:0::1;12934:402:1::0;6531:73:0::1;6611:28;6630:8;6611:18;:28::i;:::-;6454:191:::0;:::o;19740:121::-;6099:13;:11;:13::i;:::-;-1:-1:-1;;;;;19823:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;19823:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19740:121::o;6219:126::-;6178:7;6201:6;-1:-1:-1;;;;;6201:6:0;4287:10;6279:23;6271:68;;;;-1:-1:-1;;;6271:68:0;;13543:2:1;6271:68:0;;;13525:21:1;;;13562:18;;;13555:30;13621:34;13601:18;;;13594:62;13673:18;;6271:68:0;13341:356:1;13165:1407:0;13277:4;-1:-1:-1;;;;;13298:20:0;;13290:57;;;;-1:-1:-1;;;13290:57:0;;13904:2:1;13290:57:0;;;13886:21:1;13943:2;13923:18;;;13916:30;13982:26;13962:18;;;13955:54;14026:18;;13290:57:0;13702:348:1;13290:57:0;-1:-1:-1;;;;;13362:23:0;;13354:58;;;;-1:-1:-1;;;13354:58:0;;14257:2:1;13354:58:0;;;14239:21:1;14296:2;14276:18;;;14269:30;-1:-1:-1;;;14315:18:1;;;14308:52;14377:18;;13354:58:0;14055:346:1;13354:58:0;13436:1;13427:6;:10;13419:44;;;;-1:-1:-1;;;13419:44:0;;14608:2:1;13419:44:0;;;14590:21:1;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:1;;;14659:51;14727:18;;13419:44:0;14406:345:1;13419:44:0;-1:-1:-1;;;;;13478:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13478:27:0;13470:60;;;;-1:-1:-1;;;13470:60:0;;14958:2:1;13470:60:0;;;14940:21:1;14997:2;14977:18;;;14970:30;-1:-1:-1;;;15016:18:1;;;15009:50;15076:18;;13470:60:0;14756:344:1;13470:60:0;14641:11;;:16;;;13541:40;;-1:-1:-1;;;;;;13556:25:0;;;;;;:14;:25;;;;;;;;13541:40;13537:143;;;-1:-1:-1;;;;;13600:26:0;;;;;;:18;:26;;;;;;;;13592:63;;;;-1:-1:-1;;;13592:63:0;;15307:2:1;13592:63:0;;;15289:21:1;15346:2;15326:18;;;15319:30;15385:26;15365:18;;;15358:54;15429:18;;13592:63:0;15105:348:1;13592:63:0;13664:8;14717:12;14703:11;:26;14754:15;14736;:33;14669:106;13664:8;13691:16;;;;13686:167;;-1:-1:-1;;;;;13736:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;13766:29:0;;;;;;:18;:29;;;;;;;;13736:59;13718:127;;;;-1:-1:-1;;;13718:127:0;;15660:2:1;13718:127:0;;;15642:21:1;15699:2;15679:18;;;15672:30;15738;15718:18;;;15711:58;15786:18;;13718:127:0;15458:352:1;13718:127:0;13861:39;13874:6;13882:9;13893:6;13861:12;:39::i;:::-;-1:-1:-1;;;;;13914:25:0;;;;;;:14;:25;;;;;;;;13913:26;:47;;;;-1:-1:-1;13956:4:0;;-1:-1:-1;;;;;13943:17:0;;;13956:4;;13943:17;;13913:47;13909:158;;;-1:-1:-1;;;;;13976:26:0;;;;;;:15;:26;;;;;;;;13971:89;;14015:35;14032:9;14043:6;14015:16;:35::i;:::-;14079:6;;;;14075:77;;;14103:41;14118:6;14126:9;14137:6;14103:14;:41::i;:::-;14096:48;;;;14075:77;-1:-1:-1;;;;;14180:17:0;;;;;;:9;:17;;;;;;:26;;14200:6;;14180:26;:::i;:::-;-1:-1:-1;;;;;14160:17:0;;;;;;:9;:17;;;;;:46;14240:6;14259:32;14170:6;14281:9;14259:13;:32::i;:::-;14255:168;;;14319:26;14327:9;14338:6;14319:7;:26::i;:::-;14302:43;;14358:25;14373:9;14358:14;:25::i;:::-;:39;;;;;14396:1;14387:6;:10;14358:39;14354:61;;;14399:16;14408:6;14399:8;:16::i;:::-;-1:-1:-1;;;;;14454:20:0;;;;;;:9;:20;;;;;;:37;;14477:14;;14454:37;:::i;:::-;-1:-1:-1;;;;;14431:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14505:43;;;;;;;;;;14533:14;160:25:1;;148:2;133:18;;14:177;14505:43:0;;;;;;;;-1:-1:-1;14562:4:0;;13165:1407;-1:-1:-1;;;;13165:1407:0:o;14947:302::-;-1:-1:-1;;;;;15093:17:0;;15060:4;15093:17;;;:9;:17;;;;;;:26;;15113:6;;15093:26;:::i;:::-;-1:-1:-1;;;;;15073:17:0;;;;;;;:9;:17;;;;;;:46;;;;15149:20;;;;;;;:29;;15172:6;;15149:29;:::i;:::-;-1:-1:-1;;;;;15126:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15190:35;;;;;;;;;;15218:6;160:25:1;;148:2;133:18;;14:177;15190:35:0;;;;;;;;-1:-1:-1;15239:4:0;14947:302;;;;;:::o;6651:177::-;6721:16;6740:6;;-1:-1:-1;;;;;6753:17:0;;;-1:-1:-1;;;;;;6753:17:0;;;;;;6782:40;;6740:6;;;;;;;6782:40;;6721:16;6782:40;6714:114;6651:177;:::o;15505:390::-;-1:-1:-1;;;;;15623:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;15650:26:0;;;;;;:15;:26;;;;;;;;15623:53;15619:66;;;15505:390;;;:::o;15619:66::-;-1:-1:-1;;;;;15720:22:0;;;;;;:14;:22;;;;;;;;:59;;15763:16;;15720:59;;;15745:15;;15720:59;15709:6;:71;;15693:133;;;;-1:-1:-1;;;15693:133:0;;16017:2:1;15693:133:0;;;15999:21:1;16056:2;16036:18;;;16029:30;16095;16075:18;;;16068:58;16143:18;;15693:133:0;15815:352:1;15693:133:0;-1:-1:-1;;;;;15843:17:0;;;;;;:9;:17;;;;;;:22;15835:54;;;;-1:-1:-1;;;15835:54:0;;16374:2:1;15835:54:0;;;16356:21:1;16413:2;16393:18;;;16386:30;-1:-1:-1;;;16432:18:1;;;16425:49;16491:18;;15835:54:0;16172:343:1;15255:244:0;15359:14;;-1:-1:-1;;;;;15396:20:0;;15337:19;15396:20;;;:9;:20;;;;;;15359:14;;15396:29;;15419:6;;15396:29;:::i;:::-;:44;;15380:113;;;;-1:-1:-1;;;15380:113:0;;16722:2:1;15380:113:0;;;16704:21:1;16761:2;16741:18;;;16734:30;16800:34;16780:18;;;16773:62;-1:-1:-1;;;16851:18:1;;;16844:33;16894:19;;15380:113:0;16520:399:1;16316:302:0;-1:-1:-1;;;;;16432:25:0;;16401:7;16432:25;;;:14;:25;;;;;;16518:14;;16432:25;;;;;16401:7;;16494:20;16432:25;16494:11;:20::i;:::-;16485:29;;:6;:29;:::i;:::-;16484:48;;;;:::i;:::-;16559:4;16541:24;;;;:9;:24;;;;;:37;;16464:68;;-1:-1:-1;16464:68:0;;16541:24;;;:37;;16464:68;;16541:37;:::i;:::-;;;;-1:-1:-1;16594:18:0;;-1:-1:-1;16603:9:0;16594:6;:18;:::i;:::-;16587:25;16316:302;-1:-1:-1;;;;;16316:302:0:o;16624:355::-;16733:10;16690:4;16718:26;;;:14;:26;;;;;;;;16717:27;:45;;;;-1:-1:-1;16756:6:0;;;;16755:7;16717:45;:67;;;;-1:-1:-1;16773:11:0;;;;;;;16717:67;:127;;;;-1:-1:-1;16827:17:0;;16811:12;16795:29;;;;:15;:29;;;;;;:49;16717:127;:163;;;;-1:-1:-1;;;;;;16855:25:0;;;;;;:14;:25;;;;;;;;16717:163;:215;;;;-1:-1:-1;16919:13:0;;16909:4;16891:24;;;;:9;:24;;;;;;:41;;16717:215;:256;;;;;16972:1;16957:12;;16943:11;;:26;;;;:::i;:::-;:30;16703:270;16624:355;-1:-1:-1;;16624:355:0:o;16985:1766::-;8823:6;:13;;-1:-1:-1;;8823:13:0;8832:4;8823:13;;;17077:12:::1;::::0;17063:11:::1;::::0;8823:6;;17063:26:::1;::::0;::::1;:::i;:::-;17044:45;;17096:20;17128:13;;17119:6;:22;:47;;17153:13;;17119:47;;;17144:6;17119:47;17195:4;17177:24;::::0;;;:9:::1;:24;::::0;;;;;17096:70;;-1:-1:-1;17177:39:0;-1:-1:-1;17173:91:0::1;;;-1:-1:-1::0;17258:4:0::1;17240:24;::::0;;;:9:::1;:24;::::0;;;;;17173:91:::1;17273:25;17319:16;;17301:15;;:34;;;;:::i;:::-;17273:62:::0;-1:-1:-1;17342:23:0::1;17418:8:::0;17406:1:::1;17370:32;17273:62:::0;17370:12;:32:::1;:::i;:::-;17369:38;;;;:::i;:::-;17368:58;;;;:::i;:::-;17342:84:::0;-1:-1:-1;17433:31:0::1;17342:84:::0;17433:31;::::1;:::i;:::-;17497:16;::::0;;17511:1:::1;17497:16:::0;;;;;::::1;::::0;;17433:31;;-1:-1:-1;17473:21:0::1;::::0;17497:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17497:16:0::1;17473:40;;17538:4;17520;17525:1;17520:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17520:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17560:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17560:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17520:7;;17560:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17550:4;17555:1;17550:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17550:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17636:6:::1;::::0;:154:::1;::::0;-1:-1:-1;;;17636:154:0;;17606:21:::1;::::0;17636:6;;;::::1;::::0;:57:::1;::::0;:154:::1;::::0;17702:12;;17582:21:::1;::::0;17733:4;;17754::::1;::::0;17768:15:::1;::::0;17636:154:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17799:17;17843:13;17819:21;:37;;;;:::i;:::-;17799:57:::0;-1:-1:-1;17863:19:0::1;17897:21;17917:1;17897:17:::0;:21:::1;:::i;:::-;17885:34;::::0;:8;:34:::1;:::i;:::-;17863:56:::0;-1:-1:-1;17928:26:0::1;17863:56:::0;17992:1:::1;17959:29;17971:17:::0;17959:9;:29:::1;:::i;:::-;17958:35;;;;:::i;:::-;17957:58;;;;:::i;:::-;17928:87:::0;-1:-1:-1;18022:26:0::1;18051:30;17928:87:::0;18051:9;:30:::1;:::i;:::-;18022:59:::0;-1:-1:-1;18094:22:0;;18090:232:::1;;18152:20;::::0;:74:::1;::::0;18128:18:::1;::::0;-1:-1:-1;;;;;18152:20:0::1;::::0;18195:18;;18128;18152:74;18128:18;18152:74;18195:18;18152:20;:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;18090:232:0::1;18334:19:::0;;18330:231:::1;;18364:6;::::0;18498:20:::1;::::0;18364:189:::1;::::0;-1:-1:-1;;;18364:189:0;;18432:4:::1;18364:189;::::0;::::1;18646:34:1::0;18696:18;;;18689:34;;;-1:-1:-1;18739:18:1;;;18732:34;;;18782:18;;;18775:34;-1:-1:-1;;;;;18364:6:0::1;18498:20:::0;;::::1;::::0;::::1;18825:19:1::0;;;18818:44;18529:15:0::1;18878:19:1::0;;;18871:35;18364:6:0;::::1;::::0;:22:::1;::::0;18394:18;;18580:19:1;;18364:189:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18330:231;18615:12;18599:29;::::0;;;:15:::1;:29;::::0;;;;;:33:::1;::::0;18631:1:::1;18599:33;:::i;:::-;18583:12;18567:29;::::0;;;:15:::1;:29;::::0;;;;;;;;:65;;;;18644:101;;8831:25:1;;;8872:18;;;8865:34;;;8915:18;;8908:34;;;18644:101:0::1;::::0;8819:2:1;8804:18;18644:101:0::1;;;;;;;-1:-1:-1::0;;8851:6:0;:14;;-1:-1:-1;;8851:14:0;;;-1:-1:-1;;;;;;;;;16985:1766:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:548::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;939:3;1124:1;1119:2;1110:6;1099:9;1095:22;1091:31;1084:42;1194:2;1187;1183:7;1178:2;1170:6;1166:15;1162:29;1151:9;1147:45;1143:54;1135:62;;;;655:548;;;;:::o;1208:131::-;-1:-1:-1;;;;;1283:31:1;;1273:42;;1263:70;;1329:1;1326;1319:12;1344:315;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:456::-;1933:6;1941;1949;2002:2;1990:9;1981:7;1977:23;1973:32;1970:52;;;2018:1;2015;2008:12;1970:52;2057:9;2044:23;2076:31;2101:5;2076:31;:::i;:::-;2126:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2196:33;2155:32;2196:33;:::i;:::-;1856:456;;2248:7;;-1:-1:-1;;;2302:2:1;2287:18;;;;2274:32;;1856:456::o;2506:388::-;2574:6;2582;2635:2;2623:9;2614:7;2610:23;2606:32;2603:52;;;2651:1;2648;2641:12;2603:52;2690:9;2677:23;2709:31;2734:5;2709:31;:::i;:::-;2759:5;-1:-1:-1;2816:2:1;2801:18;;2788:32;2829:33;2788:32;2829:33;:::i;:::-;2881:7;2871:17;;;2506:388;;;;;:::o;2899:247::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;3151:160::-;3216:20;;3272:13;;3265:21;3255:32;;3245:60;;3301:1;3298;3291:12;3245:60;3151:160;;;:::o;3316:315::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3590:35:1;3621:2;3606:18;;3590:35;:::i;:::-;3580:45;;3316:315;;;;;:::o;3636:316::-;3713:6;3721;3729;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;-1:-1:-1;;3821:23:1;;;3891:2;3876:18;;3863:32;;-1:-1:-1;3942:2:1;3927:18;;;3914:32;;3636:316;-1:-1:-1;3636:316:1:o;3957:315::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4138:9;4125:23;4115:33;;4198:2;4187:9;4183:18;4170:32;4211:31;4236:5;4211:31;:::i;4277:367::-;4340:8;4350:6;4404:3;4397:4;4389:6;4385:17;4381:27;4371:55;;4422:1;4419;4412:12;4371:55;-1:-1:-1;4445:20:1;;4488:18;4477:30;;4474:50;;;4520:1;4517;4510:12;4474:50;4557:4;4549:6;4545:17;4533:29;;4617:3;4610:4;4600:6;4597:1;4593:14;4585:6;4581:27;4577:38;4574:47;4571:67;;;4634:1;4631;4624:12;4571:67;4277:367;;;;;:::o;4649:773::-;4771:6;4779;4787;4795;4848:2;4836:9;4827:7;4823:23;4819:32;4816:52;;;4864:1;4861;4854:12;4816:52;4904:9;4891:23;4933:18;4974:2;4966:6;4963:14;4960:34;;;4990:1;4987;4980:12;4960:34;5029:70;5091:7;5082:6;5071:9;5067:22;5029:70;:::i;:::-;5118:8;;-1:-1:-1;5003:96:1;-1:-1:-1;5206:2:1;5191:18;;5178:32;;-1:-1:-1;5222:16:1;;;5219:36;;;5251:1;5248;5241:12;5219:36;;5290:72;5354:7;5343:8;5332:9;5328:24;5290:72;:::i;:::-;4649:773;;;;-1:-1:-1;5381:8:1;-1:-1:-1;;;;4649:773:1:o;5635:248::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;-1:-1:-1;;5803:23:1;;;5873:2;5858:18;;;5845:32;;-1:-1:-1;5635:248:1:o;5888:505::-;5980:6;5988;5996;6049:2;6037:9;6028:7;6024:23;6020:32;6017:52;;;6065:1;6062;6055:12;6017:52;6105:9;6092:23;6138:18;6130:6;6127:30;6124:50;;;6170:1;6167;6160:12;6124:50;6209:70;6271:7;6262:6;6251:9;6247:22;6209:70;:::i;:::-;6298:8;;-1:-1:-1;6183:96:1;-1:-1:-1;6352:35:1;;-1:-1:-1;6383:2:1;6368:18;;6352:35;:::i;:::-;6342:45;;5888:505;;;;;:::o;6622:316::-;6696:6;6704;6712;6765:2;6753:9;6744:7;6740:23;6736:32;6733:52;;;6781:1;6778;6771:12;6733:52;6804:26;6820:9;6804:26;:::i;:::-;6794:36;6877:2;6862:18;;6849:32;;-1:-1:-1;6928:2:1;6913:18;;;6900:32;;6622:316;-1:-1:-1;;;6622:316:1:o;6943:180::-;7002:6;7055:2;7043:9;7034:7;7030:23;7026:32;7023:52;;;7071:1;7068;7061:12;7023:52;-1:-1:-1;7094:23:1;;6943:180;-1:-1:-1;6943:180:1:o;7128:::-;7184:6;7237:2;7225:9;7216:7;7212:23;7208:32;7205:52;;;7253:1;7250;7243:12;7205:52;7276:26;7292:9;7276:26;:::i;7539:127::-;7600:10;7595:3;7591:20;7588:1;7581:31;7631:4;7628:1;7621:15;7655:4;7652:1;7645:15;7671:125;7736:9;;;7757:10;;;7754:36;;;7770:18;;:::i;7801:217::-;7841:1;7867;7857:132;;7911:10;7906:3;7902:20;7899:1;7892:31;7946:4;7943:1;7936:15;7974:4;7971:1;7964:15;7857:132;-1:-1:-1;8003:9:1;;7801:217::o;8023:168::-;8096:9;;;8127;;8144:15;;;8138:22;;8124:37;8114:71;;8165:18;;:::i;8953:422::-;9042:1;9085:5;9042:1;9099:270;9120:7;9110:8;9107:21;9099:270;;;9179:4;9175:1;9171:6;9167:17;9161:4;9158:27;9155:53;;;9188:18;;:::i;:::-;9238:7;9228:8;9224:22;9221:55;;;9258:16;;;;9221:55;9337:22;;;;9297:15;;;;9099:270;;;9103:3;8953:422;;;;;:::o;9380:806::-;9429:5;9459:8;9449:80;;-1:-1:-1;9500:1:1;9514:5;;9449:80;9548:4;9538:76;;-1:-1:-1;9585:1:1;9599:5;;9538:76;9630:4;9648:1;9643:59;;;;9716:1;9711:130;;;;9623:218;;9643:59;9673:1;9664:10;;9687:5;;;9711:130;9748:3;9738:8;9735:17;9732:43;;;9755:18;;:::i;:::-;-1:-1:-1;;9811:1:1;9797:16;;9826:5;;9623:218;;9925:2;9915:8;9912:16;9906:3;9900:4;9897:13;9893:36;9887:2;9877:8;9874:16;9869:2;9863:4;9860:12;9856:35;9853:77;9850:159;;;-1:-1:-1;9962:19:1;;;9994:5;;9850:159;10041:34;10066:8;10060:4;10041:34;:::i;:::-;10111:6;10107:1;10103:6;10099:19;10090:7;10087:32;10084:58;;;10122:18;;:::i;:::-;10160:20;;9380:806;-1:-1:-1;;;9380:806:1:o;10191:140::-;10249:5;10278:47;10319:4;10309:8;10305:19;10299:4;10278:47;:::i;10336:128::-;10403:9;;;10424:11;;;10421:37;;;10438:18;;:::i;10872:351::-;11074:2;11056:21;;;11113:2;11093:18;;;11086:30;11152:29;11147:2;11132:18;;11125:57;11214:2;11199:18;;10872:351::o;11791:127::-;11852:10;11847:3;11843:20;11840:1;11833:31;11883:4;11880:1;11873:15;11907:4;11904:1;11897:15;11923:135;11962:3;11983:17;;;11980:43;;12003:18;;:::i;:::-;-1:-1:-1;12050:1:1;12039:13;;11923:135::o;12443:136::-;12482:3;12510:5;12500:39;;12519:18;;:::i;:::-;-1:-1:-1;;;12555:18:1;;12443:136::o;17056:251::-;17126:6;17179:2;17167:9;17158:7;17154:23;17150:32;17147:52;;;17195:1;17192;17185:12;17147:52;17227:9;17221:16;17246:31;17271:5;17246:31;:::i;17312:980::-;17574:4;17622:3;17611:9;17607:19;17653:6;17642:9;17635:25;17679:2;17717:6;17712:2;17701:9;17697:18;17690:34;17760:3;17755:2;17744:9;17740:18;17733:31;17784:6;17819;17813:13;17850:6;17842;17835:22;17888:3;17877:9;17873:19;17866:26;;17927:2;17919:6;17915:15;17901:29;;17948:1;17958:195;17972:6;17969:1;17966:13;17958:195;;;18037:13;;-1:-1:-1;;;;;18033:39:1;18021:52;;18128:15;;;;18093:12;;;;18069:1;17987:9;17958:195;;;-1:-1:-1;;;;;;;18209:32:1;;;;18204:2;18189:18;;18182:60;-1:-1:-1;;;18273:3:1;18258:19;18251:35;18170:3;17312:980;-1:-1:-1;;;17312:980:1:o;18917:306::-;19005:6;19013;19021;19074:2;19062:9;19053:7;19049:23;19045:32;19042:52;;;19090:1;19087;19080:12;19042:52;19119:9;19113:16;19103:26;;19169:2;19158:9;19154:18;19148:25;19138:35;;19213:2;19202:9;19198:18;19192:25;19182:35;;18917:306;;;;;:::o

Swarm Source

ipfs://950892a269d3716110076f91b09bd09a6b7e79e5bce62b49c8deefc02566d645
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.