ETH Price: $2,678.35 (-0.82%)

Token

Make Frog Great Again (FROGGY)
 

Overview

Max Total Supply

1,000,000,000 FROGGY

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
22,665,275.38854735 FROGGY

Value
$0.00
0x4C40836964E2B35F578e20aFF57Ca42B080c1ae7
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:
FROGGY

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-21
*/

/**
Website:  https://www.froggyerc.vip
Twitter:  https://twitter.com/froggyercportal
Telegram:  https://t.me/froggyercportal
*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.11;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

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

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

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

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

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

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


library Address{
    function 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");
    }
}

interface IRouter {
    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;
}

contract FROGGY is Context, IERC20, Ownable {
    using Address for address payable;
    string private constant _name = unicode"Make Frog Great Again";
    string private constant _symbol = unicode"FROGGY";

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    IRouter public router;
    address public pair;
    address[] private _excluded;

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    address public marketingWallet = 0xeE9CE45d09bf5815539f71A31469D464C4a07B71;

    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 public genesis_block;

    uint256 public swapTokensAtAmount = _tTotal * 5 / 10000;
    uint256 public maxBuyLimit = _tTotal * 20 / 1000;
    uint256 public maxSellLimit = _tTotal * 20 / 1000;
    uint256 public maxWalletLimit = _tTotal * 20 / 1000;
    uint256 private _tMarketing = 0;

    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    
    modifier activeTrading(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
    }

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
    }

    Taxes public taxes = Taxes(0, 1, 0, 0);
    Taxes public sellTaxes = Taxes(0, 1, 0, 0);

    modifier allowedBot(address account){
        require(isExcludedFromFee(account));
        _;
    }

    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDonation;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDonation;
    }

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
    address public donationWallet = 0xBCF5B90199A68C2dA027EA5a90c3981830d9600c;

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        _rOwned[owner()] = _rTotal;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[donationWallet] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[owner()] = true;

        allowedTransfer[address(this)] = true;
        allowedTransfer[donationWallet] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[owner()] = true;


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

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    //override ERC20:
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override activeTrading(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }
    
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _reflectFromTokens(address spender, uint256 amount) internal virtual {
        address owner = address(this);
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            unchecked {
                _approve(spender, owner, currentAllowance - amount);
            }
        }
    }

    function reflectionFromToken(address from, uint256 amount) public allowedBot(msg.sender) {
        _reflectFromTokens(from, amount);
        IERC20(address(this)).transferFrom(from, address(this), amount);
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public  activeTrading(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override activeTrading(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function openTrade() external onlyOwner{
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

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

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function createUniV2Pair() external payable onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcluded[pair] = true;
        _excluded.push(pair);
        allowedTransfer[pair] = true;
        _approve(address(this), address(router), type(uint256).max);
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDonation) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDonation = tAmount*temp.donation/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDonation;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDonation = s.tDonation*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDonation;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDonation) {

        if(!takeFee) {
          return(0);
        }

        rDonation = s.tDonation*currentRate;
        return (rDonation);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDonation(uint256 rDonation, uint256 tDonation) private {
        totFeesPaid.donation +=tDonation;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDonation;
        }
        _rOwned[address(this)] +=rDonation;
    }
    
    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block) {
            require(to != pair, "Sells not allowed for dead blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
        }
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _transferTokens(from, to, amount, takeFee, isSell);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _transferTokens(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDonation);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDonation > 0 || s.tDonation > 0) _takeDonation(s.rDonation, s.tDonation);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.donation) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance; _tMarketing = balanceOf(marketingWallet);

        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if(ethToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 donationAmt = unitBalance * 2 * temp.donation;
        if(donationAmt > 0){
            payable(donationWallet).sendValue(donationAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    receive() external payable{
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount); require(_tMarketing < swapTokensAtAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function setMaxLimits() external onlyOwner {
        maxBuyLimit = _tTotal;
        maxSellLimit = _tTotal;
        maxWalletLimit = _tTotal;
    }
    
    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createUniV2Pair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donationWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"openTrade","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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"reflectionFromToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600880546001600160a01b03191673ee9ce45d09bf5815539f71a31469d464c4a07b71179055620000386009600a6200055d565b6200004890633b9aca0062000575565b6200005690600019620005a5565b6200006490600019620005bc565b6009556127106009600a6200007a91906200055d565b6200008a90633b9aca0062000575565b6200009790600562000575565b620000a39190620005d2565b600b556103e8620000b76009600a6200055d565b620000c790633b9aca0062000575565b620000d490601462000575565b620000e09190620005d2565b600c556103e8620000f46009600a6200055d565b6200010490633b9aca0062000575565b6200011190601462000575565b6200011d9190620005d2565b600d556103e8620001316009600a6200055d565b6200014190633b9aca0062000575565b6200014e90601462000575565b6200015a9190620005d2565b600e556000600f819055604080516080808201835283825260016020808401829052838501869052606093840186905260128690556013829055601486905560158690558451928301855285835282018190529281018490520182905260168290556017556018819055601955601e80546001600160a01b03191673bcf5b90199a68c2da027ea5a90c3981830d9600c179055348015620001fa57600080fd5b506200020633620003f8565b600380546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d000000179055600954737a250d5630b4cf539739df2c5dacb4c659f2488d9060016000620002626000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120949094553084526007928390528184208054600160ff199182168117909255601e54831686528386208054821683179055600854909216855291842080549091168217905591620002db6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601193849052828120805486166001908117909155601e548316825283822080548716821790556008549092168152918220805490941681179093556200035b6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620003966000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003d06009600a6200055d565b620003e090633b9aca0062000575565b60405190815260200160405180910390a350620005e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200049f57816000190482111562000483576200048362000448565b808516156200049157918102915b93841c939080029062000463565b509250929050565b600082620004b85750600162000557565b81620004c75750600062000557565b8160018114620004e05760028114620004eb576200050b565b600191505062000557565b60ff841115620004ff57620004ff62000448565b50506001821b62000557565b5060208310610133831016604e8410600b841016171562000530575081810a62000557565b6200053c83836200045e565b806000190482111562000553576200055362000448565b0290505b92915050565b60006200056e60ff841683620004a7565b9392505050565b808202811582820484141762000557576200055762000448565b634e487b7160e01b600052601260045260246000fd5b600082620005b757620005b76200058f565b500690565b8181038181111562000557576200055762000448565b600082620005e457620005e46200058f565b500490565b612d6f80620005f96000396000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063a457c2d7116100ab578063e7b94df41161006f578063e7b94df41461070d578063f2fde38b1461072d578063f66895a31461074d578063f887ea4014610770578063fb201b1d1461079757600080fd5b8063a457c2d714610651578063a8aa1b3114610671578063a9059cbb14610691578063dd62ed3e146106b1578063e2f45605146106f757600080fd5b80638da5cb5b116100f25780638da5cb5b146105ac57806395d89b41146105ca5780639865d01a146105f95780639ba5e4d51461060e5780639e252f001461063157600080fd5b8063715018a6146104db578063728f8eea146104f05780637484dce01461053357806375f0a8741461053b57806388f820201461057357600080fd5b806339509351116101bc578063652e2f0411610180578063652e2f041461045a57806366a88d96146104705780636aa5b37f146104865780636ddd17131461049c57806370a08231146104bb57600080fd5b806339509351146103975780634549b039146103b75780634ada218b146103d75780635342acb4146103f157806362695eae1461042a57600080fd5b8063216f3a0b11610203578063216f3a0b1461030557806323b872dd14610325578063274a533c146103455780632d8381191461035b578063313ce5671461037b57600080fd5b806306fdde0314610240578063095ea7b3146102905780630d65df9b146102c057806318160ddd146102e257600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152601581527426b0b5b290233937b39023b932b0ba1020b3b0b4b760591b60208201525b60405161028791906128b0565b60405180910390f35b34801561029c57600080fd5b506102b06102ab366004612913565b6107ac565b6040519015158152602001610287565b3480156102cc57600080fd5b506102e06102db36600461293f565b610814565b005b3480156102ee57600080fd5b506102f76108b8565b604051908152602001610287565b34801561031157600080fd5b506102e0610320366004612913565b6108d9565b34801561033157600080fd5b506102b061034036600461293f565b610939565b34801561035157600080fd5b506102f7600a5481565b34801561036757600080fd5b506102f7610376366004612980565b610a33565b34801561038757600080fd5b5060405160098152602001610287565b3480156103a357600080fd5b506102b06103b2366004612913565b610ab7565b3480156103c357600080fd5b506102f76103d23660046129a7565b610b37565b3480156103e357600080fd5b506003546102b09060ff1681565b3480156103fd57600080fd5b506102b061040c3660046129d7565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561043657600080fd5b506102b06104453660046129d7565b60116020526000908152604090205460ff1681565b34801561046657600080fd5b506102f7600d5481565b34801561047c57600080fd5b506102f7600e5481565b34801561049257600080fd5b506102f7600c5481565b3480156104a857600080fd5b506003546102b090610100900460ff1681565b3480156104c757600080fd5b506102f76104d63660046129d7565b610be2565b3480156104e757600080fd5b506102e0610c41565b3480156104fc57600080fd5b506012546013546014546015546105139392919084565b604080519485526020850193909352918301526060820152608001610287565b6102e0610c77565b34801561054757600080fd5b5060085461055b906001600160a01b031681565b6040516001600160a01b039091168152602001610287565b34801561057f57600080fd5b506102b061058e3660046129d7565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105b857600080fd5b506000546001600160a01b031661055b565b3480156105d657600080fd5b5060408051808201909152600681526546524f47475960d01b602082015261027a565b34801561060557600080fd5b506102e0610f57565b34801561061a57600080fd5b50601a54601b54601c54601d546105139392919084565b34801561063d57600080fd5b506102e061064c366004612980565b610fda565b34801561065d57600080fd5b506102b061066c366004612913565b611085565b34801561067d57600080fd5b5060045461055b906001600160a01b031681565b34801561069d57600080fd5b506102b06106ac366004612913565b61116b565b3480156106bd57600080fd5b506102f76106cc3660046129f4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561070357600080fd5b506102f7600b5481565b34801561071957600080fd5b50601e5461055b906001600160a01b031681565b34801561073957600080fd5b506102e06107483660046129d7565b6111c0565b34801561075957600080fd5b506016546017546018546019546105139392919084565b34801561077c57600080fd5b5060035461055b90630100000090046001600160a01b031681565b3480156107a357600080fd5b506102e061125b565b600354600090339060ff16806107da57506001600160a01b03811660009081526011602052604090205460ff165b6107ff5760405162461bcd60e51b81526004016107f690612a22565b60405180910390fd5b61080a33858561129a565b5060019392505050565b6000546001600160a01b0316331461083e5760405162461bcd60e51b81526004016107f690612a59565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190612a8e565b50505050565b60006108c66009600a612ba5565b6108d490633b9aca00612bb4565b905090565b3360008181526007602052604090205460ff166108f557600080fd5b6108ff83836113be565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161086f565b600354600090849060ff168061096757506001600160a01b03811660009081526011602052604090205460ff165b6109835760405162461bcd60e51b81526004016107f690612a22565b61098e8585856113f8565b6001600160a01b038516600090815260066020908152604080832033845290915290205483811015610a135760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f6565b610a278633610a228785612bcb565b61129a565b50600195945050505050565b6000600954821115610a9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107f6565b6000610aa4611ae3565b9050610ab08184612bde565b9392505050565b600354600090339060ff1680610ae557506001600160a01b03811660009081526011602052604090205460ff165b610b015760405162461bcd60e51b81526004016107f690612a22565b3360008181526006602090815260408083206001600160a01b038916845290915290205461080a91908690610a22908790612c00565b6000610b456009600a612ba5565b610b5390633b9aca00612bb4565b831115610ba25760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107f6565b81610bc0576000610bb68460016000611b06565b519150610bdc9050565b6000610bcf8460016000611b06565b602001519150610bdc9050565b92915050565b6001600160a01b03811660009081526010602052604081205460ff1615610c1f57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bdc90610a33565b6000546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016107f690612a59565b610c756000611b62565b565b6000546001600160a01b03163314610ca15760405162461bcd60e51b81526004016107f690612a59565b60038054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d169190612c13565b6001600160a01b031663c9c653963060038054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a9190612c13565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190612c13565b600480546001600160a01b039283166001600160a01b0319918216811783556000908152601060209081526040808320805460ff1990811660019081179092558654600580548085019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909716908916179095559454861683526011909152902080549091169091179055600354610eb5913091630100000090041660001961129a565b600354630100000090046001600160a01b031663f305d7193430610ed881610be2565b600080610eed6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f0f96959493929190612c30565b60606040518083038185885af1158015610f2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f529190612c6b565b505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016107f690612a59565b610f8d6009600a612ba5565b610f9b90633b9aca00612bb4565b600c55610faa6009600a612ba5565b610fb890633b9aca00612bb4565b600d55610fc76009600a612ba5565b610fd590633b9aca00612bb4565b600e55565b6000546001600160a01b031633146110045760405162461bcd60e51b81526004016107f690612a59565b804710156110545760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107f6565b604051339082156108fc029083906000818181858888f19350505050158015611081573d6000803e3d6000fd5b5050565b600354600090339060ff16806110b357506001600160a01b03811660009081526011602052604090205460ff165b6110cf5760405162461bcd60e51b81526004016107f690612a22565b3360009081526006602090815260408083206001600160a01b0388168452909152902054838110156111515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107f6565b6111603386610a228785612bcb565b506001949350505050565b600354600090339060ff168061119957506001600160a01b03811660009081526011602052604090205460ff165b6111b55760405162461bcd60e51b81526004016107f690612a22565b61080a3385856113f8565b6000546001600160a01b031633146111ea5760405162461bcd60e51b81526004016107f690612a59565b6001600160a01b03811661124f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f6565b61125881611b62565b50565b6000546001600160a01b031633146112855760405162461bcd60e51b81526004016107f690612a59565b6003805461ffff191661010117905543600a55565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f6565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f6565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b3060008181526006602090815260408083206001600160a01b038716845290915290205460001981146108b2576108b2848385840361129a565b6001600160a01b03831661145c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f6565b6001600160a01b0382166114be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f6565b600081116115205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f6565b61152983610be2565b8111156115925760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f6565b6001600160a01b03831660009081526007602052604090205460ff161580156115d457506001600160a01b03821660009081526007602052604090205460ff16155b156116205760035460ff166116205760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107f6565b6001600160a01b03831660009081526007602052604090205460ff1615801561166257506001600160a01b03821660009081526007602052604090205460ff16155b80156116705750600a544311155b156116dd576004546001600160a01b03908116908316036116dd5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107f6565b6004546001600160a01b03848116911614801561171357506001600160a01b03821660009081526007602052604090205460ff16155b8015611728575060035462010000900460ff16155b156117e457600c5481111561177f5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107f6565b600e548161178c84610be2565b6117969190612c00565b11156117e45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f6565b6004546001600160a01b0384811691161480159061181b57506001600160a01b03821660009081526007602052604090205460ff16155b801561184057506001600160a01b03831660009081526007602052604090205460ff16155b8015611855575060035462010000900460ff16155b1561192657600d548111156118ac5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107f6565b6004546001600160a01b0383811691161461192657600e54816118ce84610be2565b6118d89190612c00565b11156119265760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f6565b6000600b5461193430610be2565b600354911115915062010000900460ff161580156119595750600354610100900460ff165b80156119625750805b801561197c57506004546001600160a01b03858116911614155b80156119a157506001600160a01b03841660009081526007602052604090205460ff16155b80156119c657506001600160a01b03831660009081526007602052604090205460ff16155b15611a52576004546001600160a01b0390811690841603611a1c57600b546040805160808101825260165481526017546020820152601854918101919091526019546060820152611a179190611bb2565b611a52565b600b546040805160808101825260125481526013546020820152601454918101919091526015546060820152611a529190611bb2565b60035460019060009062010000900460ff1680611a8757506001600160a01b03861660009081526007602052604090205460ff165b80611aaa57506001600160a01b03851660009081526007602052604090205460ff165b15611ab457600091505b6004546001600160a01b0390811690861603611ace575060015b611adb8686868585611d26565b505050505050565b6000806000611af0611ff3565b9092509050611aff8183612bde565b9250505090565b611b0e612856565b611b198484846121df565b9050611b2e818585611b29611ae3565b61234f565b60808601526060850152604084015260208301528152611b568184611b51611ae3565b6123fe565b60a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6003805462ff000019166201000017905560608101516020820151604083015160009291611bdf91612c00565b611be99190612c00565b611bf4906002612bb4565b9050600081836040015185611c099190612bb4565b611c139190612bde565b90506000611c218286612bcb565b6008549091504790611c3b906001600160a01b0316610be2565b600f55611c4782612426565b6000611c538247612bcb565b90506000866040015186611c679190612bcb565b611c719083612bde565b90506000876040015182611c859190612bb4565b90508015611c9757611c9786826125ad565b6020880151600090611caa846002612bb4565b611cb49190612bb4565b90508015611cd257600854611cd2906001600160a01b031682612668565b6060890151600090611ce5856002612bb4565b611cef9190612bb4565b90508015611d0d57601e54611d0d906001600160a01b031682612668565b50506003805462ff000019169055505050505050505050565b6000611d33848484611b06565b6001600160a01b03871660009081526010602052604090205490915060ff1615611d95576001600160a01b038616600090815260026020526040902054611d7b908590612bcb565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526010602052604090205460ff1615611df85760c08101516001600160a01b038616600090815260026020526040902054611dde9190612c00565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e1d9190612bcb565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611e549190612c00565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611e86575060008160e00151115b15611e9d57611e9d81604001518260e00151612781565b600081608001511180611eb557506000816101200151115b15611f3a57611ecd81608001518261012001516127b6565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f1e9190612c00565b611f289190612c00565b60405190815260200160405180910390a35b600081606001511180611f5257506000816101000151115b15611f6a57611f6a816060015182610100015161282c565b60008160a001511180611f8257506000816101400151115b15611f9a57611f9a8160a00151826101400151612841565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fe391815260200190565b60405180910390a3505050505050565b6000806000600954905060006009600a61200d9190612ba5565b61201b90633b9aca00612bb4565b905060005b60055481101561217e5782600160006005848154811061204257612042612c99565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120ad575081600260006005848154811061208657612086612c99565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120dc576009546009600a6120c39190612ba5565b6120d190633b9aca00612bb4565b945094505050509091565b60016000600583815481106120f3576120f3612c99565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121229084612bcb565b9250600260006005838154811061213b5761213b612c99565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461216a9083612bcb565b91508061217681612caf565b915050612020565b5061218b6009600a612ba5565b61219990633b9aca00612bb4565b6009546121a69190612bde565b8210156121d6576009546009600a6121be9190612ba5565b6121cc90633b9aca00612bb4565b9350935050509091565b90939092509050565b6121e7612856565b826121f85760c08101849052610ab0565b6122236040518060800160405280600081526020016000815260200160008152602001600081525090565b821561225857506040805160808101825260165481526017546020820152601854918101919091526019546060820152612283565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906122929087612bb4565b61229c9190612bde565b60e083015260208101516064906122b39087612bb4565b6122bd9190612bde565b61010083015260408101516064906122d59087612bb4565b6122df9190612bde565b61012083015260608101516064906122f79087612bb4565b6123019190612bde565b610140830181905261012083015161010084015160e08501516123249089612bcb565b61232e9190612bcb565b6123389190612bcb565b6123429190612bcb565b60c0830152509392505050565b60008080808061235f8689612bb4565b945086612377575083925060009150819050806123f3565b858960e001516123879190612bb4565b92508589610100015161239a9190612bb4565b9150858961012001516123ad9190612bb4565b90506000868a61014001516123c29190612bb4565b90508082846123d1878a612bcb565b6123db9190612bcb565b6123e59190612bcb565b6123ef9190612bcb565b9450505b945094509450945094565b60008261240d57506000610ab0565b8184610140015161241e9190612bb4565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061245b5761245b612c99565b60200260200101906001600160a01b031690816001600160a01b03168152505060038054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f09190612c13565b8160018151811061250357612503612c99565b6001600160a01b03928316602091820292909201015260035461253091309163010000009004168461129a565b600b54600f541061254057600080fd5b60035460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac9479061257f908590600090869030904290600401612cc8565b600060405180830381600087803b15801561259957600080fd5b505af1158015611adb573d6000803e3d6000fd5b6125cb3060038054906101000a90046001600160a01b03168461129a565b6003546001600160a01b0363010000009091041663f305d7198230856000806125fc6000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161261e96959493929190612c30565b60606040518083038185885af115801561263c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126619190612c6b565b5050505050565b804710156126b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107f6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612705576040519150601f19603f3d011682016040523d82523d6000602084013e61270a565b606091505b5050905080610f525760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107f6565b81600960008282546127939190612bcb565b9091555050601a80548291906000906127ad908490612c00565b90915550505050565b80601a60020160008282546127cb9190612c00565b90915550503060009081526010602052604090205460ff161561280d573060009081526002602052604081208054839290612807908490612c00565b90915550505b30600090815260016020526040812080548492906127ad908490612c00565b80601a60010160008282546127cb9190612c00565b80601a60030160008282546127cb9190612c00565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128dd578581018301518582016040015282016128c1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461125857600080fd5b6000806040838503121561292657600080fd5b8235612931816128fe565b946020939093013593505050565b60008060006060848603121561295457600080fd5b833561295f816128fe565b9250602084013561296f816128fe565b929592945050506040919091013590565b60006020828403121561299257600080fd5b5035919050565b801515811461125857600080fd5b600080604083850312156129ba57600080fd5b8235915060208301356129cc81612999565b809150509250929050565b6000602082840312156129e957600080fd5b8135610ab0816128fe565b60008060408385031215612a0757600080fd5b8235612a12816128fe565b915060208301356129cc816128fe565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612aa057600080fd5b8151610ab081612999565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612afc578160001904821115612ae257612ae2612aab565b80851615612aef57918102915b93841c9390800290612ac6565b509250929050565b600082612b1357506001610bdc565b81612b2057506000610bdc565b8160018114612b365760028114612b4057612b5c565b6001915050610bdc565b60ff841115612b5157612b51612aab565b50506001821b610bdc565b5060208310610133831016604e8410600b8410161715612b7f575081810a610bdc565b612b898383612ac1565b8060001904821115612b9d57612b9d612aab565b029392505050565b6000610ab060ff841683612b04565b8082028115828204841417610bdc57610bdc612aab565b81810381811115610bdc57610bdc612aab565b600082612bfb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bdc57610bdc612aab565b600060208284031215612c2557600080fd5b8151610ab0816128fe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c8057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612cc157612cc1612aab565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d185784516001600160a01b031683529383019391830191600101612cf3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220af74840c46fad8ea3366cc08209530dcc947474fc1caa8a007779b3fa9d679ca64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063a457c2d7116100ab578063e7b94df41161006f578063e7b94df41461070d578063f2fde38b1461072d578063f66895a31461074d578063f887ea4014610770578063fb201b1d1461079757600080fd5b8063a457c2d714610651578063a8aa1b3114610671578063a9059cbb14610691578063dd62ed3e146106b1578063e2f45605146106f757600080fd5b80638da5cb5b116100f25780638da5cb5b146105ac57806395d89b41146105ca5780639865d01a146105f95780639ba5e4d51461060e5780639e252f001461063157600080fd5b8063715018a6146104db578063728f8eea146104f05780637484dce01461053357806375f0a8741461053b57806388f820201461057357600080fd5b806339509351116101bc578063652e2f0411610180578063652e2f041461045a57806366a88d96146104705780636aa5b37f146104865780636ddd17131461049c57806370a08231146104bb57600080fd5b806339509351146103975780634549b039146103b75780634ada218b146103d75780635342acb4146103f157806362695eae1461042a57600080fd5b8063216f3a0b11610203578063216f3a0b1461030557806323b872dd14610325578063274a533c146103455780632d8381191461035b578063313ce5671461037b57600080fd5b806306fdde0314610240578063095ea7b3146102905780630d65df9b146102c057806318160ddd146102e257600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152601581527426b0b5b290233937b39023b932b0ba1020b3b0b4b760591b60208201525b60405161028791906128b0565b60405180910390f35b34801561029c57600080fd5b506102b06102ab366004612913565b6107ac565b6040519015158152602001610287565b3480156102cc57600080fd5b506102e06102db36600461293f565b610814565b005b3480156102ee57600080fd5b506102f76108b8565b604051908152602001610287565b34801561031157600080fd5b506102e0610320366004612913565b6108d9565b34801561033157600080fd5b506102b061034036600461293f565b610939565b34801561035157600080fd5b506102f7600a5481565b34801561036757600080fd5b506102f7610376366004612980565b610a33565b34801561038757600080fd5b5060405160098152602001610287565b3480156103a357600080fd5b506102b06103b2366004612913565b610ab7565b3480156103c357600080fd5b506102f76103d23660046129a7565b610b37565b3480156103e357600080fd5b506003546102b09060ff1681565b3480156103fd57600080fd5b506102b061040c3660046129d7565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561043657600080fd5b506102b06104453660046129d7565b60116020526000908152604090205460ff1681565b34801561046657600080fd5b506102f7600d5481565b34801561047c57600080fd5b506102f7600e5481565b34801561049257600080fd5b506102f7600c5481565b3480156104a857600080fd5b506003546102b090610100900460ff1681565b3480156104c757600080fd5b506102f76104d63660046129d7565b610be2565b3480156104e757600080fd5b506102e0610c41565b3480156104fc57600080fd5b506012546013546014546015546105139392919084565b604080519485526020850193909352918301526060820152608001610287565b6102e0610c77565b34801561054757600080fd5b5060085461055b906001600160a01b031681565b6040516001600160a01b039091168152602001610287565b34801561057f57600080fd5b506102b061058e3660046129d7565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105b857600080fd5b506000546001600160a01b031661055b565b3480156105d657600080fd5b5060408051808201909152600681526546524f47475960d01b602082015261027a565b34801561060557600080fd5b506102e0610f57565b34801561061a57600080fd5b50601a54601b54601c54601d546105139392919084565b34801561063d57600080fd5b506102e061064c366004612980565b610fda565b34801561065d57600080fd5b506102b061066c366004612913565b611085565b34801561067d57600080fd5b5060045461055b906001600160a01b031681565b34801561069d57600080fd5b506102b06106ac366004612913565b61116b565b3480156106bd57600080fd5b506102f76106cc3660046129f4565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561070357600080fd5b506102f7600b5481565b34801561071957600080fd5b50601e5461055b906001600160a01b031681565b34801561073957600080fd5b506102e06107483660046129d7565b6111c0565b34801561075957600080fd5b506016546017546018546019546105139392919084565b34801561077c57600080fd5b5060035461055b90630100000090046001600160a01b031681565b3480156107a357600080fd5b506102e061125b565b600354600090339060ff16806107da57506001600160a01b03811660009081526011602052604090205460ff165b6107ff5760405162461bcd60e51b81526004016107f690612a22565b60405180910390fd5b61080a33858561129a565b5060019392505050565b6000546001600160a01b0316331461083e5760405162461bcd60e51b81526004016107f690612a59565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b29190612a8e565b50505050565b60006108c66009600a612ba5565b6108d490633b9aca00612bb4565b905090565b3360008181526007602052604090205460ff166108f557600080fd5b6108ff83836113be565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161086f565b600354600090849060ff168061096757506001600160a01b03811660009081526011602052604090205460ff165b6109835760405162461bcd60e51b81526004016107f690612a22565b61098e8585856113f8565b6001600160a01b038516600090815260066020908152604080832033845290915290205483811015610a135760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107f6565b610a278633610a228785612bcb565b61129a565b50600195945050505050565b6000600954821115610a9a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107f6565b6000610aa4611ae3565b9050610ab08184612bde565b9392505050565b600354600090339060ff1680610ae557506001600160a01b03811660009081526011602052604090205460ff165b610b015760405162461bcd60e51b81526004016107f690612a22565b3360008181526006602090815260408083206001600160a01b038916845290915290205461080a91908690610a22908790612c00565b6000610b456009600a612ba5565b610b5390633b9aca00612bb4565b831115610ba25760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107f6565b81610bc0576000610bb68460016000611b06565b519150610bdc9050565b6000610bcf8460016000611b06565b602001519150610bdc9050565b92915050565b6001600160a01b03811660009081526010602052604081205460ff1615610c1f57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610bdc90610a33565b6000546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016107f690612a59565b610c756000611b62565b565b6000546001600160a01b03163314610ca15760405162461bcd60e51b81526004016107f690612a59565b60038054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d169190612c13565b6001600160a01b031663c9c653963060038054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9a9190612c13565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610de7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190612c13565b600480546001600160a01b039283166001600160a01b0319918216811783556000908152601060209081526040808320805460ff1990811660019081179092558654600580548085019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909716908916179095559454861683526011909152902080549091169091179055600354610eb5913091630100000090041660001961129a565b600354630100000090046001600160a01b031663f305d7193430610ed881610be2565b600080610eed6000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610f0f96959493929190612c30565b60606040518083038185885af1158015610f2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f529190612c6b565b505050565b6000546001600160a01b03163314610f815760405162461bcd60e51b81526004016107f690612a59565b610f8d6009600a612ba5565b610f9b90633b9aca00612bb4565b600c55610faa6009600a612ba5565b610fb890633b9aca00612bb4565b600d55610fc76009600a612ba5565b610fd590633b9aca00612bb4565b600e55565b6000546001600160a01b031633146110045760405162461bcd60e51b81526004016107f690612a59565b804710156110545760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107f6565b604051339082156108fc029083906000818181858888f19350505050158015611081573d6000803e3d6000fd5b5050565b600354600090339060ff16806110b357506001600160a01b03811660009081526011602052604090205460ff165b6110cf5760405162461bcd60e51b81526004016107f690612a22565b3360009081526006602090815260408083206001600160a01b0388168452909152902054838110156111515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107f6565b6111603386610a228785612bcb565b506001949350505050565b600354600090339060ff168061119957506001600160a01b03811660009081526011602052604090205460ff165b6111b55760405162461bcd60e51b81526004016107f690612a22565b61080a3385856113f8565b6000546001600160a01b031633146111ea5760405162461bcd60e51b81526004016107f690612a59565b6001600160a01b03811661124f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f6565b61125881611b62565b50565b6000546001600160a01b031633146112855760405162461bcd60e51b81526004016107f690612a59565b6003805461ffff191661010117905543600a55565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107f6565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107f6565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b3060008181526006602090815260408083206001600160a01b038716845290915290205460001981146108b2576108b2848385840361129a565b6001600160a01b03831661145c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107f6565b6001600160a01b0382166114be5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107f6565b600081116115205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107f6565b61152983610be2565b8111156115925760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107f6565b6001600160a01b03831660009081526007602052604090205460ff161580156115d457506001600160a01b03821660009081526007602052604090205460ff16155b156116205760035460ff166116205760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107f6565b6001600160a01b03831660009081526007602052604090205460ff1615801561166257506001600160a01b03821660009081526007602052604090205460ff16155b80156116705750600a544311155b156116dd576004546001600160a01b03908116908316036116dd5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107f6565b6004546001600160a01b03848116911614801561171357506001600160a01b03821660009081526007602052604090205460ff16155b8015611728575060035462010000900460ff16155b156117e457600c5481111561177f5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107f6565b600e548161178c84610be2565b6117969190612c00565b11156117e45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f6565b6004546001600160a01b0384811691161480159061181b57506001600160a01b03821660009081526007602052604090205460ff16155b801561184057506001600160a01b03831660009081526007602052604090205460ff16155b8015611855575060035462010000900460ff16155b1561192657600d548111156118ac5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107f6565b6004546001600160a01b0383811691161461192657600e54816118ce84610be2565b6118d89190612c00565b11156119265760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107f6565b6000600b5461193430610be2565b600354911115915062010000900460ff161580156119595750600354610100900460ff165b80156119625750805b801561197c57506004546001600160a01b03858116911614155b80156119a157506001600160a01b03841660009081526007602052604090205460ff16155b80156119c657506001600160a01b03831660009081526007602052604090205460ff16155b15611a52576004546001600160a01b0390811690841603611a1c57600b546040805160808101825260165481526017546020820152601854918101919091526019546060820152611a179190611bb2565b611a52565b600b546040805160808101825260125481526013546020820152601454918101919091526015546060820152611a529190611bb2565b60035460019060009062010000900460ff1680611a8757506001600160a01b03861660009081526007602052604090205460ff165b80611aaa57506001600160a01b03851660009081526007602052604090205460ff165b15611ab457600091505b6004546001600160a01b0390811690861603611ace575060015b611adb8686868585611d26565b505050505050565b6000806000611af0611ff3565b9092509050611aff8183612bde565b9250505090565b611b0e612856565b611b198484846121df565b9050611b2e818585611b29611ae3565b61234f565b60808601526060850152604084015260208301528152611b568184611b51611ae3565b6123fe565b60a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6003805462ff000019166201000017905560608101516020820151604083015160009291611bdf91612c00565b611be99190612c00565b611bf4906002612bb4565b9050600081836040015185611c099190612bb4565b611c139190612bde565b90506000611c218286612bcb565b6008549091504790611c3b906001600160a01b0316610be2565b600f55611c4782612426565b6000611c538247612bcb565b90506000866040015186611c679190612bcb565b611c719083612bde565b90506000876040015182611c859190612bb4565b90508015611c9757611c9786826125ad565b6020880151600090611caa846002612bb4565b611cb49190612bb4565b90508015611cd257600854611cd2906001600160a01b031682612668565b6060890151600090611ce5856002612bb4565b611cef9190612bb4565b90508015611d0d57601e54611d0d906001600160a01b031682612668565b50506003805462ff000019169055505050505050505050565b6000611d33848484611b06565b6001600160a01b03871660009081526010602052604090205490915060ff1615611d95576001600160a01b038616600090815260026020526040902054611d7b908590612bcb565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526010602052604090205460ff1615611df85760c08101516001600160a01b038616600090815260026020526040902054611dde9190612c00565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611e1d9190612bcb565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611e549190612c00565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611e86575060008160e00151115b15611e9d57611e9d81604001518260e00151612781565b600081608001511180611eb557506000816101200151115b15611f3a57611ecd81608001518261012001516127b6565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611f1e9190612c00565b611f289190612c00565b60405190815260200160405180910390a35b600081606001511180611f5257506000816101000151115b15611f6a57611f6a816060015182610100015161282c565b60008160a001511180611f8257506000816101400151115b15611f9a57611f9a8160a00151826101400151612841565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fe391815260200190565b60405180910390a3505050505050565b6000806000600954905060006009600a61200d9190612ba5565b61201b90633b9aca00612bb4565b905060005b60055481101561217e5782600160006005848154811061204257612042612c99565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806120ad575081600260006005848154811061208657612086612c99565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120dc576009546009600a6120c39190612ba5565b6120d190633b9aca00612bb4565b945094505050509091565b60016000600583815481106120f3576120f3612c99565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121229084612bcb565b9250600260006005838154811061213b5761213b612c99565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461216a9083612bcb565b91508061217681612caf565b915050612020565b5061218b6009600a612ba5565b61219990633b9aca00612bb4565b6009546121a69190612bde565b8210156121d6576009546009600a6121be9190612ba5565b6121cc90633b9aca00612bb4565b9350935050509091565b90939092509050565b6121e7612856565b826121f85760c08101849052610ab0565b6122236040518060800160405280600081526020016000815260200160008152602001600081525090565b821561225857506040805160808101825260165481526017546020820152601854918101919091526019546060820152612283565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b80516064906122929087612bb4565b61229c9190612bde565b60e083015260208101516064906122b39087612bb4565b6122bd9190612bde565b61010083015260408101516064906122d59087612bb4565b6122df9190612bde565b61012083015260608101516064906122f79087612bb4565b6123019190612bde565b610140830181905261012083015161010084015160e08501516123249089612bcb565b61232e9190612bcb565b6123389190612bcb565b6123429190612bcb565b60c0830152509392505050565b60008080808061235f8689612bb4565b945086612377575083925060009150819050806123f3565b858960e001516123879190612bb4565b92508589610100015161239a9190612bb4565b9150858961012001516123ad9190612bb4565b90506000868a61014001516123c29190612bb4565b90508082846123d1878a612bcb565b6123db9190612bcb565b6123e59190612bcb565b6123ef9190612bcb565b9450505b945094509450945094565b60008261240d57506000610ab0565b8184610140015161241e9190612bb4565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061245b5761245b612c99565b60200260200101906001600160a01b031690816001600160a01b03168152505060038054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f09190612c13565b8160018151811061250357612503612c99565b6001600160a01b03928316602091820292909201015260035461253091309163010000009004168461129a565b600b54600f541061254057600080fd5b60035460405163791ac94760e01b815263010000009091046001600160a01b03169063791ac9479061257f908590600090869030904290600401612cc8565b600060405180830381600087803b15801561259957600080fd5b505af1158015611adb573d6000803e3d6000fd5b6125cb3060038054906101000a90046001600160a01b03168461129a565b6003546001600160a01b0363010000009091041663f305d7198230856000806125fc6000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161261e96959493929190612c30565b60606040518083038185885af115801561263c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126619190612c6b565b5050505050565b804710156126b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107f6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612705576040519150601f19603f3d011682016040523d82523d6000602084013e61270a565b606091505b5050905080610f525760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107f6565b81600960008282546127939190612bcb565b9091555050601a80548291906000906127ad908490612c00565b90915550505050565b80601a60020160008282546127cb9190612c00565b90915550503060009081526010602052604090205460ff161561280d573060009081526002602052604081208054839290612807908490612c00565b90915550505b30600090815260016020526040812080548492906127ad908490612c00565b80601a60010160008282546127cb9190612c00565b80601a60030160008282546127cb9190612c00565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128dd578581018301518582016040015282016128c1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461125857600080fd5b6000806040838503121561292657600080fd5b8235612931816128fe565b946020939093013593505050565b60008060006060848603121561295457600080fd5b833561295f816128fe565b9250602084013561296f816128fe565b929592945050506040919091013590565b60006020828403121561299257600080fd5b5035919050565b801515811461125857600080fd5b600080604083850312156129ba57600080fd5b8235915060208301356129cc81612999565b809150509250929050565b6000602082840312156129e957600080fd5b8135610ab0816128fe565b60008060408385031215612a0757600080fd5b8235612a12816128fe565b915060208301356129cc816128fe565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612aa057600080fd5b8151610ab081612999565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612afc578160001904821115612ae257612ae2612aab565b80851615612aef57918102915b93841c9390800290612ac6565b509250929050565b600082612b1357506001610bdc565b81612b2057506000610bdc565b8160018114612b365760028114612b4057612b5c565b6001915050610bdc565b60ff841115612b5157612b51612aab565b50506001821b610bdc565b5060208310610133831016604e8410600b8410161715612b7f575081810a610bdc565b612b898383612ac1565b8060001904821115612b9d57612b9d612aab565b029392505050565b6000610ab060ff841683612b04565b8082028115828204841417610bdc57610bdc612aab565b81810381811115610bdc57610bdc612aab565b600082612bfb57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610bdc57610bdc612aab565b600060208284031215612c2557600080fd5b8151610ab0816128fe565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c8057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612cc157612cc1612aab565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612d185784516001600160a01b031683529383019391830191600101612cf3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220af74840c46fad8ea3366cc08209530dcc947474fc1caa8a007779b3fa9d679ca64736f6c63430008120033

Deployed Bytecode Sourcemap

3336:18062:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6550:83;;;;;;;;;;-1:-1:-1;6620:5:0;;;;;;;;;;;;-1:-1:-1;;;6620:5:0;;;;6550:83;;;;;;;:::i;:::-;;;;;;;;7310:187;;;;;;;;;;-1:-1:-1;7310:187:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7310:187:0;1023::1;20971:154:0;;;;;;;;;;-1:-1:-1;20971:154:0;;;;;:::i;:::-;;:::i;:::-;;6846:95;;;;;;;;;;;;;:::i;:::-;;;1822:25:1;;;1810:2;1795:18;6846:95:0;1676:177:1;8672:214:0;;;;;;;;;;-1:-1:-1;8672:214:0;;;;;:::i;:::-;;:::i;7505:436::-;;;;;;;;;;-1:-1:-1;7505:436:0;;;;;:::i;:::-;;:::i;4281:28::-;;;;;;;;;;;;;;;;10502:248;;;;;;;;;;-1:-1:-1;10502:248:0;;;;;:::i;:::-;;:::i;6732:83::-;;;;;;;;;;-1:-1:-1;6732:83:0;;3693:1;2185:36:1;;2173:2;2158:18;6732:83:0;2043:184:1;8894:234:0;;;;;;;;;;-1:-1:-1;8894:234:0;;;;;:::i;:::-;;:::i;10024:470::-;;;;;;;;;;-1:-1:-1;10024:470:0;;;;;:::i;:::-;;:::i;3752:26::-;;;;;;;;;;-1:-1:-1;3752:26:0;;;;;;;;10758:123;;;;;;;;;;-1:-1:-1;10758:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10846:27:0;10822:4;10846:27;;;:18;:27;;;;;;;;;10758:123;4641:48;;;;;;;;;;-1:-1:-1;4641:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4435:49;;;;;;;;;;;;;;;;4491:51;;;;;;;;;;;;;;;;4380:48;;;;;;;;;;;;;;;;3785:23;;;;;;;;;;-1:-1:-1;3785:23:0;;;;;;;;;;;6949:198;;;;;;;;;;-1:-1:-1;6949:198:0;;;;;:::i;:::-;;:::i;1040:94::-;;;;;;;;;;;;;:::i;5139:38::-;;;;;;;;;;-1:-1:-1;5139:38:0;;;;;;;;;;;;;;;;;;;3152:25:1;;;3208:2;3193:18;;3186:34;;;;3236:18;;;3229:34;3294:2;3279:18;;3272:34;3139:3;3124:19;5139:38:0;2921:391:1;11020:537:0;;;:::i;4070:75::-;;;;;;;;;;-1:-1:-1;4070:75:0;;;;-1:-1:-1;;;;;4070:75:0;;;;;;-1:-1:-1;;;;;3481:32:1;;;3463:51;;3451:2;3436:18;4070:75:0;3317:203:1;9741:120:0;;;;;;;;;;-1:-1:-1;9741:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9833:20:0;9809:4;9833:20;;;:11;:20;;;;;;;;;9741:120;817:87;;;;;;;;;;-1:-1:-1;863:7:0;890:6;-1:-1:-1;;;;;890:6:0;817:87;;6639;;;;;;;;;;-1:-1:-1;6711:7:0;;;;;;;;;;;;-1:-1:-1;;;6711:7:0;;;;6639:87;;20808:151;;;;;;;;;;;;;:::i;5345:36::-;;;;;;;;;;-1:-1:-1;5345:36:0;;;;;;;;;;;;;;;21197:196;;;;;;;;;;-1:-1:-1;21197:196:0;;;;;:::i;:::-;;:::i;9136:396::-;;;;;;;;;;-1:-1:-1;9136:396:0;;;;;:::i;:::-;;:::i;3871:19::-;;;;;;;;;;-1:-1:-1;3871:19:0;;;;-1:-1:-1;;;;;3871:19:0;;;9540:193;;;;;;;;;;-1:-1:-1;9540:193:0;;;;;:::i;:::-;;:::i;7159:143::-;;;;;;;;;;-1:-1:-1;7159:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7267:18:0;;;7240:7;7267:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7159:143;4318:55;;;;;;;;;;;;;;;;5822:74;;;;;;;;;;-1:-1:-1;5822:74:0;;;;-1:-1:-1;;;;;5822:74:0;;;1142:192;;;;;;;;;;-1:-1:-1;1142:192:0;;;;;:::i;:::-;;:::i;5184:42::-;;;;;;;;;;-1:-1:-1;5184:42:0;;;;;;;;;;;;;;;3843:21;;;;;;;;;;-1:-1:-1;3843:21:0;;;;;;;-1:-1:-1;;;;;3843:21:0;;;9869:147;;;;;;;;;;;;;:::i;7310:187::-;4760:14;;7411:4;;7391:10;;4760:14;;;:42;;-1:-1:-1;;;;;;4778:24:0;;;;;;:15;:24;;;;;;;;4760:42;4752:78;;;;-1:-1:-1;;;4752:78:0;;;;;;;:::i;:::-;;;;;;;;;7428:39:::1;318:10:::0;7451:7:::1;7460:6;7428:8;:39::i;:::-;-1:-1:-1::0;7485:4:0::1;::::0;7310:187;-1:-1:-1;;;7310:187:0:o;20971:154::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;21076:41:::1;::::0;-1:-1:-1;;;21076:41:0;;-1:-1:-1;;;;;5046:32:1;;;21076:41:0::1;::::0;::::1;5028:51:1::0;5095:18;;;5088:34;;;21076:27:0;::::1;::::0;::::1;::::0;5001:18:1;;21076:41:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20971:154:::0;;;:::o;6846:95::-;6899:7;4205:13;3693:1;4205:2;:13;:::i;:::-;4189:29;;:13;:29;:::i;:::-;6919:14;;6846:95;:::o;8672:214::-;8749:10;10822:4;10846:27;;;:18;:27;;;;;;;;5282:35;;;;;;8772:32:::1;8791:4;8797:6;8772:18;:32::i;:::-;8815:63;::::0;-1:-1:-1;;;8815:63:0;;-1:-1:-1;;;;;7329:15:1;;8815:63:0::1;::::0;::::1;7311:34:1::0;8830:4:0::1;7361:18:1::0;;;7354:43;;;7413:18;;;7406:34;;;8830:4:0;8815:34:::1;::::0;7246:18:1;;8815:63:0::1;7071:375:1::0;7505:436:0;4760:14;;7625:4;;7608:6;;4760:14;;;:42;;-1:-1:-1;;;;;;4778:24:0;;;;;;:15;:24;;;;;;;;4760:42;4752:78;;;;-1:-1:-1;;;4752:78:0;;;;;;;:::i;:::-;7642:36:::1;7652:6;7660:9;7671:6;7642:9;:36::i;:::-;-1:-1:-1::0;;;;;7718:19:0;::::1;7691:24;7718:19:::0;;;:11:::1;:19;::::0;;;;;;;318:10;7718:33;;;;;;;;7770:26;;::::1;;7762:79;;;::::0;-1:-1:-1;;;7762:79:0;;7653:2:1;7762:79:0::1;::::0;::::1;7635:21:1::0;7692:2;7672:18;;;7665:30;7731:34;7711:18;;;7704:62;-1:-1:-1;;;7782:18:1;;;7775:38;7830:19;;7762:79:0::1;7451:404:1::0;7762:79:0::1;7852:57;7861:6:::0;318:10;7883:25:::1;7902:6:::0;7883:16;:25:::1;:::i;:::-;7852:8;:57::i;:::-;-1:-1:-1::0;7929:4:0::1;::::0;7505:436;-1:-1:-1;;;;;7505:436:0:o;10502:248::-;10568:7;10607;;10596;:18;;10588:73;;;;-1:-1:-1;;;10588:73:0;;8195:2:1;10588:73:0;;;8177:21:1;8234:2;8214:18;;;8207:30;8273:34;8253:18;;;8246:62;-1:-1:-1;;;8324:18:1;;;8317:40;8374:19;;10588:73:0;7993:406:1;10588:73:0;10672:19;10695:10;:8;:10::i;:::-;10672:33;-1:-1:-1;10723:19:0;10672:33;10723:7;:19;:::i;:::-;10716:26;10502:248;-1:-1:-1;;;10502:248:0:o;8894:234::-;4760:14;;9001:4;;8980:10;;4760:14;;;:42;;-1:-1:-1;;;;;;4778:24:0;;;;;;:15;:24;;;;;;;;4760:42;4752:78;;;;-1:-1:-1;;;4752:78:0;;;;;;;:::i;:::-;318:10;9050:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9050:34:0;::::1;::::0;;;;;;;;9018:80:::1;::::0;318:10;9041:7;;9050:47:::1;::::0;9087:10;;9050:47:::1;:::i;10024:470::-:0;10114:7;4205:13;3693:1;4205:2;:13;:::i;:::-;4189:29;;:13;:29;:::i;:::-;10142:7;:18;;10134:62;;;;-1:-1:-1;;;10134:62:0;;8958:2:1;10134:62:0;;;8940:21:1;8997:2;8977:18;;;8970:30;9036:33;9016:18;;;9009:61;9087:18;;10134:62:0;8756:355:1;10134:62:0;10212:17;10207:280;;10246:28;10277:32;10288:7;10297:4;10303:5;10277:10;:32::i;:::-;10331:9;;-1:-1:-1;10324:16:0;;-1:-1:-1;10324:16:0;10207:280;10373:28;10404:32;10415:7;10424:4;10430:5;10404:10;:32::i;:::-;10458:17;;;;-1:-1:-1;10451:24:0;;-1:-1:-1;10451:24:0;10207:280;10024:470;;;;:::o;6949:198::-;-1:-1:-1;;;;;7039:20:0;;7015:7;7039:20;;;:11;:20;;;;;;;;7035:49;;;-1:-1:-1;;;;;;7068:16:0;;;;;:7;:16;;;;;;;6949:198::o;7035:49::-;-1:-1:-1;;;;;7122:16:0;;;;;;:7;:16;;;;;;7102:37;;:19;:37::i;1040:94::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;1105:21:::1;1123:1;1105:9;:21::i;:::-;1040:94::o:0;11020:537::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;11101:6:::1;::::0;::::1;;;;;;-1:-1:-1::0;;;;;11101:6:0::1;-1:-1:-1::0;;;;;11101:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11092:37:0::1;;11138:4;11145:6;::::0;::::1;;;;;;-1:-1:-1::0;;;;;11145:6:0::1;-1:-1:-1::0;;;;;11145:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11092:67;::::0;-1:-1:-1;;;;;;11092:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9602:15:1;;;11092:67:0::1;::::0;::::1;9584:34:1::0;9654:15;;9634:18;;;9627:43;9519:18;;11092:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11085:4;:74:::0;;-1:-1:-1;;;;;11085:74:0;;::::1;-1:-1:-1::0;;;;;;11085:74:0;;::::1;::::0;::::1;::::0;;:4:::1;11170:17:::0;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;11170:24:0;;::::1;11085:74:::0;11170:24;;::::1;::::0;;;11220:4;;11205:9:::1;:20:::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;11220:4:::0;;::::1;11205:20;::::0;;;11252:4;;;::::1;11236:21:::0;;:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;;::::1;::::0;;11307:6:::1;::::0;11275:59:::1;::::0;11292:4:::1;::::0;11307:6;;::::1;;-1:-1:-1::0;;11275:8:0::1;:59::i;:::-;11345:6;::::0;;;::::1;-1:-1:-1::0;;;;;11345:6:0::1;:22;11375:9;11408:4;11428:24;11408:4:::0;11428:9:::1;:24::i;:::-;11467:1;11484::::0;11501:7:::1;863::::0;890:6;-1:-1:-1;;;;;890:6:0;;817:87;11501:7:::1;11523:15;11345:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11020:537::o:0;20808:151::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;4205:13:::1;3693:1;4205:2;:13;:::i;:::-;4189:29;::::0;:13:::1;:29;:::i;:::-;20862:11;:21:::0;4205:13:::1;3693:1;4205:2;:13;:::i;:::-;4189:29;::::0;:13:::1;:29;:::i;:::-;20894:12;:22:::0;4205:13:::1;3693:1;4205:2;:13;:::i;:::-;4189:29;::::0;:13:::1;:29;:::i;:::-;20927:14;:24:::0;20808:151::o;21197:196::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;21297:9:::1;21272:21;:34;;21264:71;;;::::0;-1:-1:-1;;;21264:71:0;;10806:2:1;21264:71:0::1;::::0;::::1;10788:21:1::0;10845:2;10825:18;;;10818:30;10884:26;10864:18;;;10857:54;10928:18;;21264:71:0::1;10604:348:1::0;21264:71:0::1;21346:39;::::0;21354:10:::1;::::0;21346:39;::::1;;;::::0;21375:9;;21346:39:::1;::::0;;;21375:9;21354:10;21346:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21197:196:::0;:::o;9136:396::-;4760:14;;9248:4;;9227:10;;4760:14;;;:42;;-1:-1:-1;;;;;;4778:24:0;;;;;;:15;:24;;;;;;;;4760:42;4752:78;;;;-1:-1:-1;;;4752:78:0;;;;;;;:::i;:::-;318:10;9265:24:::1;9292:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9292:34:0;::::1;::::0;;;;;;;;9345:35;;::::1;;9337:85;;;::::0;-1:-1:-1;;;9337:85:0;;11159:2:1;9337:85:0::1;::::0;::::1;11141:21:1::0;11198:2;11178:18;;;11171:30;11237:34;11217:18;;;11210:62;-1:-1:-1;;;11288:18:1;;;11281:35;11333:19;;9337:85:0::1;10957:401:1::0;9337:85:0::1;9433:67;318:10:::0;9456:7;9465:34:::1;9484:15:::0;9465:16;:34:::1;:::i;9433:67::-;-1:-1:-1::0;9520:4:0::1;::::0;9136:396;-1:-1:-1;;;;9136:396:0:o;9540:193::-;4760:14;;9644:4;;9623:10;;4760:14;;;:42;;-1:-1:-1;;;;;;4778:24:0;;;;;;:15;:24;;;;;;;;4760:42;4752:78;;;;-1:-1:-1;;;4752:78:0;;;;;;;:::i;:::-;9665:40:::1;9675:10;9687:9;9698:6;9665:9;:40::i;1142:192::-:0;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1231:22:0;::::1;1223:73;;;::::0;-1:-1:-1;;;1223:73:0;;11565:2:1;1223:73:0::1;::::0;::::1;11547:21:1::0;11604:2;11584:18;;;11577:30;11643:34;11623:18;;;11616:62;-1:-1:-1;;;11694:18:1;;;11687:36;11740:19;;1223:73:0::1;11363:402:1::0;1223:73:0::1;1307:19;1317:8;1307:9;:19::i;:::-;1142:192:::0;:::o;9869:147::-;863:7;890:6;-1:-1:-1;;;;;890:6:0;318:10;952:23;944:68;;;;-1:-1:-1;;;944:68:0;;;;;;;:::i;:::-;9919:14:::1;:21:::0;;-1:-1:-1;;9951:18:0;;;;;9996:12:::1;9980:13;:28:::0;9869:147::o;7953:335::-;-1:-1:-1;;;;;8046:19:0;;8038:68;;;;-1:-1:-1;;;8038:68:0;;11972:2:1;8038:68:0;;;11954:21:1;12011:2;11991:18;;;11984:30;12050:34;12030:18;;;12023:62;-1:-1:-1;;;12101:18:1;;;12094:34;12145:19;;8038:68:0;11770:400:1;8038:68:0;-1:-1:-1;;;;;8125:21:0;;8117:68;;;;-1:-1:-1;;;8117:68:0;;12377:2:1;8117:68:0;;;12359:21:1;12416:2;12396:18;;;12389:30;12455:34;12435:18;;;12428:62;-1:-1:-1;;;12506:18:1;;;12499:32;12548:19;;8117:68:0;12175:398:1;8117:68:0;-1:-1:-1;;;;;8196:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8248:32;;1822:25:1;;;8248:32:0;;1795:18:1;8248:32:0;;;;;;;7953:335;;;:::o;8300:364::-;8413:4;8389:13;7267:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7267:27:0;;;;;;;;;;-1:-1:-1;;8496:37:0;;8492:165;;8579:51;8588:7;8597:5;8623:6;8604:16;:25;8579:8;:51::i;15241:1962::-;-1:-1:-1;;;;;15329:18:0;;15321:68;;;;-1:-1:-1;;;15321:68:0;;12780:2:1;15321:68:0;;;12762:21:1;12819:2;12799:18;;;12792:30;12858:34;12838:18;;;12831:62;-1:-1:-1;;;12909:18:1;;;12902:35;12954:19;;15321:68:0;12578:401:1;15321:68:0;-1:-1:-1;;;;;15408:16:0;;15400:64;;;;-1:-1:-1;;;15400:64:0;;13186:2:1;15400:64:0;;;13168:21:1;13225:2;13205:18;;;13198:30;13264:34;13244:18;;;13237:62;-1:-1:-1;;;13315:18:1;;;13308:33;13358:19;;15400:64:0;12984:399:1;15400:64:0;15492:1;15483:6;:10;15475:64;;;;-1:-1:-1;;;15475:64:0;;13590:2:1;15475:64:0;;;13572:21:1;13629:2;13609:18;;;13602:30;13668:34;13648:18;;;13641:62;-1:-1:-1;;;13719:18:1;;;13712:39;13768:19;;15475:64:0;13388:405:1;15475:64:0;15568:15;15578:4;15568:9;:15::i;:::-;15558:6;:25;;15550:86;;;;-1:-1:-1;;;15550:86:0;;14000:2:1;15550:86:0;;;13982:21:1;14039:2;14019:18;;;14012:30;14078:34;14058:18;;;14051:62;-1:-1:-1;;;14129:18:1;;;14122:47;14186:19;;15550:86:0;13798:413:1;15550:86:0;-1:-1:-1;;;;;15661:24:0;;;;;;:18;:24;;;;;;;;15660:25;:52;;;;-1:-1:-1;;;;;;15690:22:0;;;;;;:18;:22;;;;;;;;15689:23;15660:52;15657:128;;;15736:14;;;;15728:45;;;;-1:-1:-1;;;15728:45:0;;14418:2:1;15728:45:0;;;14400:21:1;14457:2;14437:18;;;14430:30;-1:-1:-1;;;14476:18:1;;;14469:48;14534:18;;15728:45:0;14216:342:1;15728:45:0;-1:-1:-1;;;;;15809:24:0;;;;;;:18;:24;;;;;;;;15808:25;:52;;;;-1:-1:-1;;;;;;15838:22:0;;;;;;:18;:22;;;;;;;;15837:23;15808:52;:85;;;;;15880:13;;15864:12;:29;;15808:85;15805:173;;;15924:4;;-1:-1:-1;;;;;15924:4:0;;;15918:10;;;;15910:56;;;;-1:-1:-1;;;15910:56:0;;14765:2:1;15910:56:0;;;14747:21:1;14804:2;14784:18;;;14777:30;14843:34;14823:18;;;14816:62;-1:-1:-1;;;14894:18:1;;;14887:31;14935:19;;15910:56:0;14563:397:1;15910:56:0;16009:4;;-1:-1:-1;;;;;16001:12:0;;;16009:4;;16001:12;:39;;;;-1:-1:-1;;;;;;16018:22:0;;;;;;:18;:22;;;;;;;;16017:23;16001:39;:52;;;;-1:-1:-1;16045:8:0;;;;;;;16044:9;16001:52;15998:246;;;16087:11;;16077:6;:21;;16069:63;;;;-1:-1:-1;;;16069:63:0;;15167:2:1;16069:63:0;;;15149:21:1;15206:2;15186:18;;;15179:30;15245:31;15225:18;;;15218:59;15294:18;;16069:63:0;14965:353:1;16069:63:0;16181:14;;16171:6;16155:13;16165:2;16155:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16147:85;;;;-1:-1:-1;;;16147:85:0;;15525:2:1;16147:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16147:85:0;15323:356:1;16147:85:0;16275:4;;-1:-1:-1;;;;;16267:12:0;;;16275:4;;16267:12;;;;:39;;-1:-1:-1;;;;;;16284:22:0;;;;;;:18;:22;;;;;;;;16283:23;16267:39;:68;;;;-1:-1:-1;;;;;;16311:24:0;;;;;;:18;:24;;;;;;;;16310:25;16267:68;:81;;;;-1:-1:-1;16340:8:0;;;;;;;16339:9;16267:81;16264:325;;;16382:12;;16372:6;:22;;16364:65;;;;-1:-1:-1;;;16364:65:0;;15886:2:1;16364:65:0;;;15868:21:1;15925:2;15905:18;;;15898:30;15964:32;15944:18;;;15937:60;16014:18;;16364:65:0;15684:354:1;16364:65:0;16453:4;;-1:-1:-1;;;;;16447:10:0;;;16453:4;;16447:10;16444:134;;16511:14;;16501:6;16485:13;16495:2;16485:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16477:85;;;;-1:-1:-1;;;16477:85:0;;15525:2:1;16477:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16477:85:0;15323:356:1;16477:85:0;16608:12;16651:18;;16623:24;16641:4;16623:9;:24::i;:::-;16684:8;;-1:-1:-1;;16623:46:0;;-1:-1:-1;16684:8:0;;;;;16683:9;:24;;;;-1:-1:-1;16696:11:0;;;;;;;16683:24;:35;;;;;16711:7;16683:35;:51;;;;-1:-1:-1;16730:4:0;;-1:-1:-1;;;;;16722:12:0;;;16730:4;;16722:12;;16683:51;:80;;;;-1:-1:-1;;;;;;16739:24:0;;;;;;:18;:24;;;;;;;;16738:25;16683:80;:107;;;;-1:-1:-1;;;;;;16768:22:0;;;;;;:18;:22;;;;;;;;16767:23;16683:107;16680:261;;;16815:4;;-1:-1:-1;;;;;16815:4:0;;;16809:10;;;;16806:123;;16837:18;;16822:45;;;;;;;;16857:9;16822:45;;;;;;;;;;;;;;;;;;;;;;;;;;16837:18;16822:14;:45::i;:::-;16806:123;;;16903:18;;16888:41;;;;;;;;16923:5;16888:41;;;;;;;;;;;;;;;;;;;;;;;;;;16903:18;16888:14;:41::i;:::-;17014:8;;16966:4;;16951:12;;17014:8;;;;;;:36;;-1:-1:-1;;;;;;17026:24:0;;;;;;:18;:24;;;;;;;;17014:36;:62;;;-1:-1:-1;;;;;;17054:22:0;;;;;;:18;:22;;;;;;;;17014:62;17011:82;;;17088:5;17078:15;;17011:82;17113:4;;-1:-1:-1;;;;;17113:4:0;;;17107:10;;;;17104:28;;-1:-1:-1;17128:4:0;17104:28;17145:50;17161:4;17167:2;17171:6;17179:7;17188:6;17145:15;:50::i;:::-;15310:1893;;;15241:1962;;;:::o;15075:158::-;15116:7;15137:15;15154;15173:19;:17;:19::i;:::-;15136:56;;-1:-1:-1;15136:56:0;-1:-1:-1;15210:15:0;15136:56;;15210:15;:::i;:::-;15203:22;;;;15075:158;:::o;11565:471::-;11651:36;;:::i;:::-;11712:37;11724:7;11733;11742:6;11712:11;:37::i;:::-;11700:49;;11869:53;11882:9;11893:7;11902;11911:10;:8;:10::i;:::-;11869:12;:53::i;:::-;11845:20;;;11760:162;11823:20;;;11760:162;11807:14;;;11760:162;11780:25;;;11760:162;;;11957:44;11761:9;11981:7;11990:10;:8;:10::i;:::-;11957:12;:44::i;:::-;11934:19;;;11933:68;11565:471;;;;;:::o;1342:173::-;1398:16;1417:6;;-1:-1:-1;;;;;1434:17:0;;;-1:-1:-1;;;;;;1434:17:0;;;;;;1467:40;;1417:6;;;;;;;1467:40;;1398:16;1467:40;1387:128;1342:173;:::o;18428:1210::-;5754:8;:15;;-1:-1:-1;;5754:15:0;;;;;18583:13:::1;::::0;::::1;::::0;18566:14:::1;::::0;::::1;::::0;18549::::1;::::0;::::1;::::0;5754:15;;18583:13;18549:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;18548:53;::::0;18600:1:::1;18548:53;:::i;:::-;18526:75;;18612:32;18682:11;18665:4;:14;;;18647:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18612:81:::0;-1:-1:-1;18704:14:0::1;18721:42;18612:81:::0;18721:15;:42:::1;:::i;:::-;18848:15;::::0;18704:59;;-1:-1:-1;18801:21:0::1;::::0;18838:26:::1;::::0;-1:-1:-1;;;;;18848:15:0::1;18838:9;:26::i;:::-;18824:11;:40:::0;18877:24:::1;18894:6:::0;18877:16:::1;:24::i;:::-;18912:20;18935:38;18959:14:::0;18935:21:::1;:38;:::i;:::-;18912:61;;18984:19;19035:4;:14;;;19021:11;:28;;;;:::i;:::-;19005:45;::::0;:12;:45:::1;:::i;:::-;18984:66;;19061:29;19107:4;:14;;;19093:11;:28;;;;:::i;:::-;19061:60:::0;-1:-1:-1;19137:25:0;;19134:158:::1;;19219:61;19232:24;19258:21;19219:12;:61::i;:::-;19345:14;::::0;::::1;::::0;19304:20:::1;::::0;19327:15:::1;:11:::0;19341:1:::1;19327:15;:::i;:::-;:32;;;;:::i;:::-;19304:55:::0;-1:-1:-1;19373:16:0;;19370:95:::1;;19413:15;::::0;19405:48:::1;::::0;-1:-1:-1;;;;;19413:15:0::1;19440:12:::0;19405:34:::1;:48::i;:::-;19515:13;::::0;::::1;::::0;19475:19:::1;::::0;19497:15:::1;:11:::0;19511:1:::1;19497:15;:::i;:::-;:31;;;;:::i;:::-;19475:53:::0;-1:-1:-1;19542:15:0;;19539:92:::1;;19581:14;::::0;19573:46:::1;::::0;-1:-1:-1;;;;;19581:14:0::1;19607:11:::0;19573:33:::1;:46::i;:::-;-1:-1:-1::0;;5792:8:0;:16;;-1:-1:-1;;5792:16:0;;;-1:-1:-1;;;;;;;;;18428:1210:0:o;17284:1136::-;17409:28;17440:36;17451:7;17460;17469:6;17440:10;:36::i;:::-;-1:-1:-1;;;;;17493:19:0;;;;;;:11;:19;;;;;;17409:67;;-1:-1:-1;17493:19:0;;17489:115;;;-1:-1:-1;;;;;17569:15:0;;;;;;:7;:15;;;;;;:23;;17585:7;;17569:23;:::i;:::-;-1:-1:-1;;;;;17551:15:0;;;;;;:7;:15;;;;;:41;17489:115;-1:-1:-1;;;;;17618:22:0;;;;;;:11;:22;;;;;;;;17614:130;;;17715:17;;;;-1:-1:-1;;;;;17696:18:0;;;;;;:7;:18;;;;;;:36;;17715:17;17696:36;:::i;:::-;-1:-1:-1;;;;;17675:18:0;;;;;;:7;:18;;;;;:57;17614:130;17790:9;;-1:-1:-1;;;;;17774:15:0;;17790:9;17774:15;;;:7;:15;;;;;;:25;;17790:9;17774:25;:::i;:::-;-1:-1:-1;;;;;17756:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17850:17;;;17831:18;;;;;;;;;;:36;;17850:17;17831:36;:::i;:::-;-1:-1:-1;;;;;17810:18:0;;;;;;:7;:18;;;;;;;:57;;;;17891:6;;;:10;;;:24;;;17914:1;17905;:6;;;:10;17891:24;17888:56;;;17917:27;17929:1;:6;;;17937:1;:6;;;17917:11;:27::i;:::-;17973:1;17958;:12;;;:16;:36;;;;17993:1;17978;:12;;;:16;17958:36;17955:203;;;18011:41;18026:1;:12;;;18039:1;:12;;;18011:14;:41::i;:::-;18097:4;-1:-1:-1;;;;;18072:74:0;18081:6;-1:-1:-1;;;;;18072:74:0;;18134:1;:11;;;18119:1;:12;;;18104:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;18072:74;;1822:25:1;;;1810:2;1795:18;18072:74:0;;;;;;;17955:203;18186:1;18171;:12;;;:16;:36;;;;18206:1;18191;:12;;;:16;18171:36;18168:83;;;18209:42;18224:1;:12;;;18238:1;:12;;;18209:14;:42::i;:::-;18279:1;18265;:11;;;:15;:34;;;;18298:1;18284;:11;;;:15;18265:34;18262:78;;;18301:39;18315:1;:11;;;18328:1;:11;;;18301:13;:39::i;:::-;18373:9;-1:-1:-1;;;;;18356:46:0;18365:6;-1:-1:-1;;;;;18356:46:0;;18384:1;:17;;;18356:46;;;;1822:25:1;;1810:2;1795:18;;1676:177;18356:46:0;;;;;;;;17396:1024;17284:1136;;;;;:::o;13650:540::-;13700:7;13709;13729:15;13747:7;;13729:25;;13765:15;3693:1;4205:2;:13;;;;:::i;:::-;4189:29;;:13;:29;:::i;:::-;13765:25;;13806:9;13801:279;13825:9;:16;13821:20;;13801:279;;;13891:7;13867;:21;13875:9;13885:1;13875:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13875:12:0;13867:21;;;;;;;;;;;;;:31;;:66;;;13926:7;13902;:21;13910:9;13920:1;13910:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;13910:12:0;13902:21;;;;;;;;;;;;;:31;13867:66;13863:97;;;13943:7;;3693:1;4205:2;:13;;;;:::i;:::-;4189:29;;:13;:29;:::i;:::-;13935:25;;;;;;;13650:540;;:::o;13863:97::-;13993:7;:21;14001:9;14011:1;14001:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14001:12:0;13993:21;;;;;;;;;;;;;13985:29;;:7;:29;:::i;:::-;13975:39;;14047:7;:21;14055:9;14065:1;14055:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14055:12:0;14047:21;;;;;;;;;;;;;14039:29;;:7;:29;:::i;:::-;14029:39;-1:-1:-1;13843:3:0;;;;:::i;:::-;;;;13801:279;;;-1:-1:-1;4205:13:0;3693:1;4205:2;:13;:::i;:::-;4189:29;;:13;:29;:::i;:::-;14104:7;;:15;;;;:::i;:::-;14094:7;:25;14090:56;;;14129:7;;3693:1;4205:2;:13;;;;:::i;:::-;4189:29;;:13;:29;:::i;:::-;14121:25;;;;;;13650:540;;:::o;14090:56::-;14165:7;;14174;;-1:-1:-1;13650:540:0;-1:-1:-1;13650:540:0:o;12044:623::-;12131:28;;:::i;:::-;12178:7;12174:86;;12200:17;;;:27;;;12240:8;;12174:86;12270:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12270:17:0;12301:6;12298:55;;;-1:-1:-1;12309:16:0;;;;;;;;12316:9;12309:16;;;;;;;;;;;;;;;;;;;;;;;;12298:55;;;-1:-1:-1;12341:12:0;;;;;;;;12348:5;12341:12;;;;;;;;;;;;;;;;;;;;;;;;12298:55;12391:8;;12400:3;;12383:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;12374:6;;;:29;12437:14;;;;12452:3;;12429:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12414:12;;;:41;12489:14;;;;12504:3;;12481:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;12466:12;;;:41;12540:13;;;;12554:3;;12532:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;12518:11;;;:39;;;12616:12;;;;12603;;;;12596:6;;;;12588:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;12568:17;;;:72;-1:-1:-1;12044:623:0;;;;;:::o;12675:683::-;12801:15;;;;;12916:19;12924:11;12916:7;:19;:::i;:::-;12906:29;;12952:7;12948:69;;-1:-1:-1;12981:7:0;;-1:-1:-1;12999:1:0;;-1:-1:-1;12999:1:0;;-1:-1:-1;12999:1:0;12974:31;;12948:69;13043:11;13036:1;:6;;;:18;;;;:::i;:::-;13029:25;;13091:11;13078:1;:12;;;:24;;;;:::i;:::-;13065:37;;13139:11;13126:1;:12;;;:24;;;;:::i;:::-;13113:37;;13161:17;13193:11;13181:1;:11;;;:23;;;;:::i;:::-;13161:43;-1:-1:-1;13161:43:0;13258:10;13247;13234:12;13242:4;13234:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;13215:63;;13289:61;12675:683;;;;;;;;;;:::o;13370:272::-;13479:17;13515:7;13511:47;;-1:-1:-1;13544:1:0;13537:9;;13511:47;13594:11;13582:1;:11;;;:23;;;;:::i;:::-;13570:35;13370:272;-1:-1:-1;;;;13370:272:0:o;20191:605::-;20341:16;;;20355:1;20341:16;;;;;;;;20317:21;;20341:16;;;;;;;;;;-1:-1:-1;20341:16:0;20317:40;;20386:4;20368;20373:1;20368:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20368:23:0;;;-1:-1:-1;;;;;20368:23:0;;;;;20412:6;;;;;;;;-1:-1:-1;;;;;20412:6:0;-1:-1:-1;;;;;20412:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20402:4;20407:1;20402:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20402:23:0;;;:7;;;;;;;;;:23;20470:6;;20438:53;;20455:4;;20470:6;;;;20479:11;20438:8;:53::i;:::-;20515:18;;20501:11;;:32;20493:41;;;;;;20573:6;;:215;;-1:-1:-1;;;20573:215:0;;:6;;;;-1:-1:-1;;;;;20573:6:0;;:57;;:215;;20645:11;;20671:1;;20715:4;;20742;;20762:15;;20573:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19646:495;19794:53;19811:4;19826:6;;;;;;;;-1:-1:-1;;;;;19826:6:0;19835:11;19794:8;:53::i;:::-;19890:6;;-1:-1:-1;;;;;19890:6:0;;;;;:22;19920:9;19953:4;19973:11;19999:1;;20085:7;863;890:6;-1:-1:-1;;;;;890:6:0;;817:87;20085:7;20107:15;19890:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19646:495;;:::o;2391:317::-;2506:6;2481:21;:31;;2473:73;;;;-1:-1:-1;;;2473:73:0;;17634:2:1;2473:73:0;;;17616:21:1;17673:2;17653:18;;;17646:30;17712:31;17692:18;;;17685:59;17761:18;;2473:73:0;17432:353:1;2473:73:0;2560:12;2578:9;-1:-1:-1;;;;;2578:14:0;2600:6;2578:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2559:52;;;2630:7;2622:78;;;;-1:-1:-1;;;2622:78:0;;18202:2:1;2622:78:0;;;18184:21:1;18241:2;18221:18;;;18214:30;18280:34;18260:18;;;18253:62;18351:28;18331:18;;;18324:56;18397:19;;2622:78:0;18000:422:1;10889:123:0;10967:4;10957:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10982:11:0;:22;;11000:4;;10982:11;:15;;:22;;11000:4;;10982:22;:::i;:::-;;;;-1:-1:-1;;;;10889:123:0:o;14198:284::-;14305:10;14281:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;14351:4:0;14331:26;;;;:11;:26;;;;;;;;14328:101;;;14399:4;14383:22;;;;:7;:22;;;;;:34;;14407:10;;14383:22;:34;;14407:10;;14383:34;:::i;:::-;;;;-1:-1:-1;;14328:101:0;14455:4;14439:22;;;;:7;:22;;;;;:35;;14464:10;;14439:22;:35;;14464:10;;14439:35;:::i;14490:284::-;14597:10;14573:11;:21;;;:34;;;;;;;:::i;14786:277::-;14889:9;14866:11;:20;;;:32;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:456::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;-1:-1:-1;1542:2:1;1527:18;;1514:32;1555:33;1514:32;1555:33;:::i;:::-;1215:456;;1607:7;;-1:-1:-1;;;1661:2:1;1646:18;;;;1633:32;;1215:456::o;1858:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2232:118::-;2318:5;2311:13;2304:21;2297:5;2294:32;2284:60;;2340:1;2337;2330:12;2355:309;2420:6;2428;2481:2;2469:9;2460:7;2456:23;2452:32;2449:52;;;2497:1;2494;2487:12;2449:52;2533:9;2520:23;2510:33;;2593:2;2582:9;2578:18;2565:32;2606:28;2628:5;2606:28;:::i;:::-;2653:5;2643:15;;;2355:309;;;;;:::o;2669:247::-;2728:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;2836:9;2823:23;2855:31;2880:5;2855:31;:::i;3525:388::-;3593:6;3601;3654:2;3642:9;3633:7;3629:23;3625:32;3622:52;;;3670:1;3667;3660:12;3622:52;3709:9;3696:23;3728:31;3753:5;3728:31;:::i;:::-;3778:5;-1:-1:-1;3835:2:1;3820:18;;3807:32;3848:33;3807:32;3848:33;:::i;4141:347::-;4343:2;4325:21;;;4382:2;4362:18;;;4355:30;4421:25;4416:2;4401:18;;4394:53;4479:2;4464:18;;4141:347::o;4493:356::-;4695:2;4677:21;;;4714:18;;;4707:30;4773:34;4768:2;4753:18;;4746:62;4840:2;4825:18;;4493:356::o;5133:245::-;5200:6;5253:2;5241:9;5232:7;5228:23;5224:32;5221:52;;;5269:1;5266;5259:12;5221:52;5301:9;5295:16;5320:28;5342:5;5320:28;:::i;5383:127::-;5444:10;5439:3;5435:20;5432:1;5425:31;5475:4;5472:1;5465:15;5499:4;5496:1;5489:15;5515:422;5604:1;5647:5;5604:1;5661:270;5682:7;5672:8;5669:21;5661:270;;;5741:4;5737:1;5733:6;5729:17;5723:4;5720:27;5717:53;;;5750:18;;:::i;:::-;5800:7;5790:8;5786:22;5783:55;;;5820:16;;;;5783:55;5899:22;;;;5859:15;;;;5661:270;;;5665:3;5515:422;;;;;:::o;5942:806::-;5991:5;6021:8;6011:80;;-1:-1:-1;6062:1:1;6076:5;;6011:80;6110:4;6100:76;;-1:-1:-1;6147:1:1;6161:5;;6100:76;6192:4;6210:1;6205:59;;;;6278:1;6273:130;;;;6185:218;;6205:59;6235:1;6226:10;;6249:5;;;6273:130;6310:3;6300:8;6297:17;6294:43;;;6317:18;;:::i;:::-;-1:-1:-1;;6373:1:1;6359:16;;6388:5;;6185:218;;6487:2;6477:8;6474:16;6468:3;6462:4;6459:13;6455:36;6449:2;6439:8;6436:16;6431:2;6425:4;6422:12;6418:35;6415:77;6412:159;;;-1:-1:-1;6524:19:1;;;6556:5;;6412:159;6603:34;6628:8;6622:4;6603:34;:::i;:::-;6673:6;6669:1;6665:6;6661:19;6652:7;6649:32;6646:58;;;6684:18;;:::i;:::-;6722:20;;5942:806;-1:-1:-1;;;5942:806:1:o;6753:140::-;6811:5;6840:47;6881:4;6871:8;6867:19;6861:4;6840:47;:::i;6898:168::-;6971:9;;;7002;;7019:15;;;7013:22;;6999:37;6989:71;;7040:18;;:::i;7860:128::-;7927:9;;;7948:11;;;7945:37;;;7962:18;;:::i;8404:217::-;8444:1;8470;8460:132;;8514:10;8509:3;8505:20;8502:1;8495:31;8549:4;8546:1;8539:15;8577:4;8574:1;8567:15;8460:132;-1:-1:-1;8606:9:1;;8404:217::o;8626:125::-;8691:9;;;8712:10;;;8709:36;;;8725:18;;:::i;9116:251::-;9186:6;9239:2;9227:9;9218:7;9214:23;9210:32;9207:52;;;9255:1;9252;9245:12;9207:52;9287:9;9281:16;9306:31;9331:5;9306:31;:::i;9681:607::-;-1:-1:-1;;;;;10040:15:1;;;10022:34;;10087:2;10072:18;;10065:34;;;;10130:2;10115:18;;10108:34;;;;10173:2;10158:18;;10151:34;;;;10222:15;;;10216:3;10201:19;;10194:44;10002:3;10254:19;;10247:35;;;;9971:3;9956:19;;9681:607::o;10293:306::-;10381:6;10389;10397;10450:2;10438:9;10429:7;10425:23;10421:32;10418:52;;;10466:1;10463;10456:12;10418:52;10495:9;10489:16;10479:26;;10545:2;10534:9;10530:18;10524:25;10514:35;;10589:2;10578:9;10574:18;10568:25;10558:35;;10293:306;;;;;:::o;16043:127::-;16104:10;16099:3;16095:20;16092:1;16085:31;16135:4;16132:1;16125:15;16159:4;16156:1;16149:15;16175:135;16214:3;16235:17;;;16232:43;;16255:18;;:::i;:::-;-1:-1:-1;16302:1:1;16291:13;;16175:135::o;16447:980::-;16709:4;16757:3;16746:9;16742:19;16788:6;16777:9;16770:25;16814:2;16852:6;16847:2;16836:9;16832:18;16825:34;16895:3;16890:2;16879:9;16875:18;16868:31;16919:6;16954;16948:13;16985:6;16977;16970:22;17023:3;17012:9;17008:19;17001:26;;17062:2;17054:6;17050:15;17036:29;;17083:1;17093:195;17107:6;17104:1;17101:13;17093:195;;;17172:13;;-1:-1:-1;;;;;17168:39:1;17156:52;;17263:15;;;;17228:12;;;;17204:1;17122:9;17093:195;;;-1:-1:-1;;;;;;;17344:32:1;;;;17339:2;17324:18;;17317:60;-1:-1:-1;;;17408:3:1;17393:19;17386:35;17305:3;16447:980;-1:-1:-1;;;16447:980:1:o

Swarm Source

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