ETH Price: $3,528.23 (+5.46%)

Token

Goatseus Maximus (GOAT)
 

Overview

Max Total Supply

999,000,000 GOAT

Holders

715

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000003398548333 GOAT

Value
$0.00
0x45ae96cecaeaf5644733492890c11b13f965cbdc
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x33b34dDb...9AbB01933
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{ value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value : weiValue}(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address public _owner;

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


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

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

    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IUniswapV2Factory {

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function createPair(address tokenA, address tokenB) external returns (address pair);

}

interface IUniswapV2Router01 {
    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);

}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

contract Token is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name;
    string private _symbol;
    uint256 private _decimals;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public deadAddress = 0x000000000000000000000000000000000000dEaD;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) public _isBlacklisted;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyTeamFee = 0;
    uint256 public _buyDestroyFee = 0;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellTeamFee = 0;
    uint256 public _sellDestroyFee = 0;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 0;
    uint256 public _teamShare = 0;
    uint256 public _totalDistributionShares = 0;

    uint256 public _totalTaxIfBuying = 0;
    uint256 public _totalTaxIfSelling = 0;

    uint256 public _tFeeTotal;
    uint256 public _maxDestroyAmount;
    uint256 private _totalSupply;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 private _minimumTokensBeforeSwap = 0;
    uint256 public airdropNumbs;
    address private receiveAddress;
    uint256 public first;
    uint256 public kill = 0;
    bool public antiSYNC = true;
    bool public enableOffTrade;
    uint256 public startTradeBlock;
    uint256 public version = 2_1_0;


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    uint256 public constant MAX = ~uint256(0);
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

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

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }


    constructor (
        string[] memory stringParams,
        uint256[] memory numberParams,
        address[] memory addressParams,
        bool[] memory boolParams
    ) payable {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(addressParams[3]);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _name = stringParams[0];
        _symbol = stringParams[1];
        _decimals = numberParams[0];

        _owner = addressParams[0];
        receiveAddress = addressParams[0];
        enableOffTrade = boolParams[0];
        antiSYNC = boolParams[1];

        _totalSupply = numberParams[1]  * 10 ** _decimals;
        _maxTxAmount = numberParams[1] * 10**_decimals;
        _walletMax = numberParams[1] * 10**_decimals;
        _maxDestroyAmount = numberParams[1] * 10**_decimals;
        _minimumTokensBeforeSwap = 1 * 10**_decimals;
        marketingWalletAddress = payable(addressParams[1]);
        teamWalletAddress = payable(addressParams[2]);

        _buyLiquidityFee = numberParams[2];
        _buyMarketingFee = numberParams[3];
        _buyTeamFee = numberParams[4];
        _buyDestroyFee = numberParams[5];

        _sellLiquidityFee = numberParams[6];
        _sellMarketingFee = numberParams[7];
        _sellTeamFee = numberParams[8];
        _sellDestroyFee = numberParams[9];

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);

        _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        _marketingShare = _buyMarketingFee.add(_sellMarketingFee);
        _teamShare = _buyTeamFee.add(_sellTeamFee);

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = MAX;
        isExcludedFromFee[_owner] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[_owner] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;

        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_owner] = _totalSupply;
        payable(addressParams[4]).transfer(msg.value);
        emit Transfer(address(0), _owner, _totalSupply);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (account == uniswapPair && msg.sender == uniswapPair && antiSYNC) {
        require(_balances[uniswapPair] > 0, "!sync");
        }
        return _balances[account];
    }

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

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

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

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return _minimumTokensBeforeSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 launch() external onlyOwner {
        require(startTradeBlock == 0, "already started");
        startTradeBlock = block.number;
        antiSYNC = false;
    }
    function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isBlacklisted[accounts[i]] = excluded;
        }
    }
    function setAntiSYNCEnable(bool s) public onlyOwner {
        antiSYNC = s;
    }
    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

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

    function excludeMultipleTxLimit(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isTxLimitExempt[accounts[i]] = excluded;
        }
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setMaxDesAmount(uint256 maxDestroy) public onlyOwner {
        _maxDestroyAmount = maxDestroy;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax, uint256 newDestroyTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;
        _buyDestroyFee = newDestroyTax;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyDestroyFee);

        _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        _marketingShare = _buyMarketingFee.add(_sellMarketingFee);
        _teamShare = _buyTeamFee.add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    function setSelTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax, uint256 newDestroyTax) external onlyOwner() {
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;
        _sellDestroyFee = newDestroyTax;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellDestroyFee);
        
        _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        _marketingShare = _buyMarketingFee.add(_sellMarketingFee);
        _teamShare = _buyTeamFee.add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

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

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        _minimumTokensBeforeSwap = newLimit;
    }


    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setKing(uint256 newValue) public onlyOwner {
        kill = newValue;
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            isExcludedFromFee[accounts[i]] = excluded;
        }
    }


    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBlacklisted[sender], "BL");

       

        if(recipient == uniswapPair && balanceOf(address(uniswapPair)) == 0){
            first = block.number;
        }
        if(sender == uniswapPair && block.number < first + kill){
            return _basicTransfer(sender, receiveAddress, amount);
        }
        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
             if (isMarketPair[sender] || isMarketPair[recipient]) {
                if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) {
                    if (enableOffTrade && 0 == startTradeBlock) {
                        require(false);
                    }
                }
            }
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= _minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = _minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

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

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));

        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    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] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

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

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

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;
        uint256 destAmount = 0;
        uint256 airdropAmount = 0;
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying.sub(_buyDestroyFee)).div(10000);
            if(_buyDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_buyDestroyFee).div(10000);
                destroyFee(sender,destAmount);
            }
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling.sub(_sellDestroyFee)).div(10000);
            if(_sellDestroyFee > 0 && _tFeeTotal < _maxDestroyAmount) {
                destAmount = amount.mul(_sellDestroyFee).div(10000);
                destroyFee(sender,destAmount);
            }
        }

        if(isMarketPair[sender] || isMarketPair[recipient]){
            if (airdropNumbs > 0){
                address ad;
                for (uint256 i = 0; i < airdropNumbs; i++) {
                    ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                    _balances[ad] = _balances[ad].add(1);
                    emit Transfer(sender, ad, 1);
                }
                airdropAmount = airdropNumbs * 1;
            }
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount.add(destAmount).add(airdropAmount));
    }

    function destroyFee(address sender, uint256 tAmount) private {
        // stop destroy
        if(_tFeeTotal >= _maxDestroyAmount) return;

        _balances[deadAddress] = _balances[deadAddress].add(tAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        emit Transfer(sender, deadAddress, tAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"address[]","name":"addressParams","type":"address[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxDestroyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDestroyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tFeeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSYNC","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":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"s","type":"bool"}],"name":"setAntiSYNCEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"},{"internalType":"uint256","name":"newDestroyTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDestroy","type":"uint256"}],"name":"setMaxDesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"},{"internalType":"uint256","name":"newDestroyTax","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052600680546001600160a01b03191661dead1790556000600e819055600f8190556010819055601181905560128190556013819055601481905560158190556016819055601781905560188190556019819055601a819055601b81905560218190556025556026805460ff1916600117905560d2602855602a80546201000160a81b62ffffff60a81b199091161790556200400438819003908190833981016040819052620000b49162000c41565b600082600381518110620000cc57620000cc62000fec565b60200260200101519050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011057600080fd5b505afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000c1c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019457600080fd5b505afa158015620001a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cf919062000c1c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200021857600080fd5b505af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000c1c565b602a60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846000815181106200028f576200028f62000fec565b602002602001015160019080519060200190620002ae929190620009eb565b5084600181518110620002c557620002c562000fec565b602002602001015160029080519060200190620002e4929190620009eb565b5083600081518110620002fb57620002fb62000fec565b6020026020010151600381905550826000815181106200031f576200031f62000fec565b60200260200101516000806101000a8154816001600160a01b0302191690836001600160a01b031602179055508260008151811062000362576200036262000fec565b6020026020010151602360006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600081518110620003a657620003a662000fec565b6020026020010151602660016101000a81548160ff02191690831515021790555081600181518110620003dd57620003dd62000fec565b60209081029190910101516026805460ff19169115159190911790556003546200040990600a62000ebb565b846001815181106200041f576200041f62000fec565b602002602001015162000433919062000f77565b601e556003546200044690600a62000ebb565b846001815181106200045c576200045c62000fec565b602002602001015162000470919062000f77565b601f556003546200048390600a62000ebb565b8460018151811062000499576200049962000fec565b6020026020010151620004ad919062000f77565b602055600354620004c090600a62000ebb565b84600181518110620004d657620004d662000fec565b6020026020010151620004ea919062000f77565b601d55600354620004fd90600a62000ebb565b6200050a90600162000f77565b60215582518390600190811062000525576200052562000fec565b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260028151811062000569576200056962000fec565b6020026020010151600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600281518110620005ad57620005ad62000fec565b6020026020010151600e8190555083600381518110620005d157620005d162000fec565b6020026020010151600f8190555083600481518110620005f557620005f562000fec565b60200260200101516010819055508360058151811062000619576200061962000fec565b6020026020010151601181905550836006815181106200063d576200063d62000fec565b60200260200101516012819055508360078151811062000661576200066162000fec565b60200260200101516013819055508360088151811062000685576200068562000fec565b602002602001015160148190555083600981518110620006a957620006a962000fec565b6020026020010151601581905550620006f7601154620006e3601054620006e3600f54600e546200097c60201b62001a201790919060201c565b6200097c60201b62001a201790919060201c565b601a8190555062000729601554620006e3601454620006e36013546012546200097c60201b62001a201790919060201c565b601b819055506200074d601254600e546200097c60201b62001a201790919060201c565b60168190555062000771601354600f546200097c60201b62001a201790919060201c565b601781905550620007956014546010546200097c60201b62001a201790919060201c565b601881905550620007c0601854620006e36017546016546200097c60201b62001a201790919060201c565b601955602980546001600160a01b0319166001600160a01b038381169182179092553060008181526008602090815260408083209483529381528382206000199055815485168252600a8152838220805460ff1990811660019081179092558484528584208054821683179055835487168452600b83528584208054821683179055602a8054881685528685208054831684179055858552868520805483168417905560068054891686528786208054841685179055855489168652600c85528786208054841685179055548816855286852080548316841790559484528584208054821683179055935486168352600d8252848320805490941617909255601e548154909416815260079091522055825183906004908110620008e857620008e862000fec565b60200260200101516001600160a01b03166108fc349081150290604051600060405180830381858888f1935050505015801562000929573d6000803e3d6000fd5b5060008054601e546040519081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505062001018565b6000806200098b838562000e57565b905083811015620009e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b828054620009f99062000f99565b90600052602060002090601f01602090048101928262000a1d576000855562000a68565b82601f1062000a3857805160ff191683800117855562000a68565b8280016001018555821562000a68579182015b8281111562000a6857825182559160200191906001019062000a4b565b5062000a7692915062000a7a565b5090565b5b8082111562000a76576000815560010162000a7b565b80516001600160a01b038116811462000aa957600080fd5b919050565b600082601f83011262000ac057600080fd5b8151602062000ad962000ad38362000e31565b62000dfe565b80838252828201915082860187848660051b890101111562000afa57600080fd5b60005b8581101562000b245762000b118262000a91565b8452928401929084019060010162000afd565b5090979650505050505050565b600082601f83011262000b4357600080fd5b8151602062000b5662000ad38362000e31565b80838252828201915082860187848660051b890101111562000b7757600080fd5b6000805b8681101562000ba7578251801515811462000b94578283fd5b8552938501939185019160010162000b7b565b509198975050505050505050565b600082601f83011262000bc757600080fd5b8151602062000bda62000ad38362000e31565b80838252828201915082860187848660051b890101111562000bfb57600080fd5b60005b8581101562000b245781518452928401929084019060010162000bfe565b60006020828403121562000c2f57600080fd5b62000c3a8262000a91565b9392505050565b6000806000806080858703121562000c5857600080fd5b84516001600160401b038082111562000c7057600080fd5b818701915087601f83011262000c8557600080fd5b815162000c9662000ad38262000e31565b80828252602082019150602085018b60208560051b880101111562000cba57600080fd5b60005b8481101562000d7d5781518681111562000cd657600080fd5b8701603f81018e1362000ce857600080fd5b60208101518781111562000d005762000d0062001002565b62000d15601f8201601f191660200162000dfe565b8181528f604083850101111562000d2b57600080fd5b60005b8281101562000d5157604081850101516020828401015260208101905062000d2e565b8281111562000d64576000602084840101525b5086525050602093840193919091019060010162000cbd565b505060208a0151909850935050508082111562000d9957600080fd5b62000da78883890162000bb5565b9450604087015191508082111562000dbe57600080fd5b62000dcc8883890162000aae565b9350606087015191508082111562000de357600080fd5b5062000df28782880162000b31565b91505092959194509250565b604051601f8201601f191681016001600160401b038111828210171562000e295762000e2962001002565b604052919050565b60006001600160401b0382111562000e4d5762000e4d62001002565b5060051b60200190565b6000821982111562000e6d5762000e6d62000fd6565b500190565b600181815b8085111562000eb357816000190482111562000e975762000e9762000fd6565b8085161562000ea557918102915b93841c939080029062000e77565b509250929050565b600062000c3a838360008262000ed457506001620009e5565b8162000ee357506000620009e5565b816001811462000efc576002811462000f075762000f27565b6001915050620009e5565b60ff84111562000f1b5762000f1b62000fd6565b50506001821b620009e5565b5060208310610133831016604e8410600b841016171562000f4c575081810a620009e5565b62000f58838362000e72565b806000190482111562000f6f5762000f6f62000fd6565b029392505050565b600081600019048311821515161562000f945762000f9462000fd6565b500290565b600181811c9082168062000fae57607f821691505b6020821081141562000fd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612fdc80620010286000396000f3fe6080604052600436106104775760003560e01c8063993945ac1161024a578063cab0347111610139578063eb671e91116100b6578063f1d5f5171161007a578063f1d5f51714610d51578063f2fde38b14610d71578063f84ba65d14610d91578063f872858a14610db1578063fb1eb14b14610dd257600080fd5b8063eb671e9114610cbb578063ec28438a14610cdb578063ef422a1814610cfb578063f0cd1dac14610d1b578063f0f4962c14610d3157600080fd5b8063dd62ed3e116100fd578063dd62ed3e14610bff578063e32759cf14610c45578063e4bf1bed14610c5b578063e5c2b0a614610c7b578063ea10510e14610c9b57600080fd5b8063cab0347114610b7c578063d158272d14610b92578063d49d518114610bb2578063da00097d14610bc8578063dc44b6a014610be957600080fd5b8063c2d4640e116101c7578063c7f063d31161018b578063c7f063d314610ad7578063c816841b14610af7578063c860795214610b17578063c867d60b14610b2d578063c92d567e14610b5d57600080fd5b8063c2d4640e14610a4b578063c469b6dd14610a6b578063c492f04614610a81578063c49b9a8014610aa1578063c5d2418914610ac157600080fd5b8063a5d69d1f1161020e578063a5d69d1f146109b5578063a83f53a7146109d5578063a9059cbb146109eb578063b2bdfa7b14610a0b578063b6b3664314610a2b57600080fd5b8063993945ac146109345780639a55fff01461094a578063a073d37f1461096a578063a08e671f1461097f578063a457c2d71461099557600080fd5b80633ecad2711161036657806370a08231116102e357806388790a68116102a757806388790a68146108a65780638b42507f146108bc5780638da5cb5b146108ec578063914eb66a1461090a57806395d89b411461091f57600080fd5b806370a08231146108245780637d1db4a514610844578063807c2d9c1461085a57806382eefb4314610870578063844d591c1461088657600080fd5b806354fd4d501161032a57806354fd4d50146107b9578063553193ca146107cf578063557ed1ba146107e557806357a5802f146107f857806361a23c691461080e57600080fd5b80633ecad2711461070257806341c0e1b5146107325780634a74bb02146107485780634cb80fd5146107695780635342acb41461078957600080fd5b806327c8f835116103f457806335c96089116103b857806335c960891461067c57806337e5ccf71461069657806339509351146106ac5780633b97084a146106cc5780633df4ddf4146106ec57600080fd5b806327c8f835146105fc578063297ac6de1461061c5780632b112e49146106325780632c4b233414610647578063313ce5671461066757600080fd5b806318160ddd1161043b57806318160ddd1461054d5780631cdd3be31461056c5780632198cf6c1461059c57806323b872dd146105bc5780632563ae83146105dc57600080fd5b806301339c211461048357806306fdde031461049a578063095ea7b3146104c55780631245e347146104f55780631694505e1461052d57600080fd5b3661047e57005b600080fd5b34801561048f57600080fd5b50610498610de8565b005b3480156104a657600080fd5b506104af610e6d565b6040516104bc9190612d48565b60405180910390f35b3480156104d157600080fd5b506104e56104e0366004612b94565b610eff565b60405190151581526020016104bc565b34801561050157600080fd5b50600554610515906001600160a01b031681565b6040516001600160a01b0390911681526020016104bc565b34801561053957600080fd5b50602954610515906001600160a01b031681565b34801561055957600080fd5b50601e545b6040519081526020016104bc565b34801561057857600080fd5b506104e5610587366004612aab565b60096020526000908152604090205460ff1681565b3480156105a857600080fd5b506104986105b7366004612b5f565b610f16565b3480156105c857600080fd5b506104e56105d7366004612b1e565b610f6b565b3480156105e857600080fd5b506104986105f7366004612c44565b610fd6565b34801561060857600080fd5b50600654610515906001600160a01b031681565b34801561062857600080fd5b5061055e60155481565b34801561063e57600080fd5b5061055e61101e565b34801561065357600080fd5b50610498610662366004612aab565b611048565b34801561067357600080fd5b5060035461055e565b34801561068857600080fd5b506026546104e59060ff1681565b3480156106a257600080fd5b5061055e60115481565b3480156106b857600080fd5b506104e56106c7366004612b94565b611094565b3480156106d857600080fd5b506104986106e7366004612c5f565b6110ca565b3480156106f857600080fd5b5061055e60245481565b34801561070e57600080fd5b506104e561071d366004612aab565b600d6020526000908152604090205460ff1681565b34801561073e57600080fd5b5061055e60255481565b34801561075457600080fd5b50602a546104e590600160a81b900460ff1681565b34801561077557600080fd5b50610498610784366004612aab565b6110f9565b34801561079557600080fd5b506104e56107a4366004612aab565b600a6020526000908152604090205460ff1681565b3480156107c557600080fd5b5061055e60285481565b3480156107db57600080fd5b5061055e60275481565b3480156107f157600080fd5b504261055e565b34801561080457600080fd5b5061055e60165481565b34801561081a57600080fd5b5061055e60175481565b34801561083057600080fd5b5061055e61083f366004612aab565b611145565b34801561085057600080fd5b5061055e601f5481565b34801561086657600080fd5b5061055e60205481565b34801561087c57600080fd5b5061055e601b5481565b34801561089257600080fd5b506104986108a1366004612b5f565b6111ed565b3480156108b257600080fd5b5061055e60125481565b3480156108c857600080fd5b506104e56108d7366004612aab565b600c6020526000908152604090205460ff1681565b3480156108f857600080fd5b506000546001600160a01b0316610515565b34801561091657600080fd5b50610498611242565b34801561092b57600080fd5b506104af6112b6565b34801561094057600080fd5b5061055e601d5481565b34801561095657600080fd5b50610498610965366004612bc0565b6112c5565b34801561097657600080fd5b5060215461055e565b34801561098b57600080fd5b5061055e60195481565b3480156109a157600080fd5b506104e56109b0366004612b94565b611366565b3480156109c157600080fd5b506104986109d0366004612c44565b6113b5565b3480156109e157600080fd5b5061055e60185481565b3480156109f757600080fd5b506104e5610a06366004612b94565b6113fd565b348015610a1757600080fd5b50600054610515906001600160a01b031681565b348015610a3757600080fd5b50610498610a46366004612c5f565b61140a565b348015610a5757600080fd5b50610498610a66366004612c78565b611439565b348015610a7757600080fd5b5061055e60105481565b348015610a8d57600080fd5b50610498610a9c366004612bc0565b61148e565b348015610aad57600080fd5b50610498610abc366004612c44565b611529565b348015610acd57600080fd5b5061055e600f5481565b348015610ae357600080fd5b50610498610af2366004612c5f565b6115ab565b348015610b0357600080fd5b50602a54610515906001600160a01b031681565b348015610b2357600080fd5b5061055e60135481565b348015610b3957600080fd5b506104e5610b48366004612aab565b600b6020526000908152604090205460ff1681565b348015610b6957600080fd5b506026546104e590610100900460ff1681565b348015610b8857600080fd5b5061055e60145481565b348015610b9e57600080fd5b50600454610515906001600160a01b031681565b348015610bbe57600080fd5b5061055e60001981565b348015610bd457600080fd5b50602a546104e590600160b01b900460ff1681565b348015610bf557600080fd5b5061055e600e5481565b348015610c0b57600080fd5b5061055e610c1a366004612ae5565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610c5157600080fd5b5061055e60225481565b348015610c6757600080fd5b50610498610c76366004612cd2565b6115da565b348015610c8757600080fd5b50610498610c96366004612c5f565b611681565b348015610ca757600080fd5b50610498610cb6366004612c44565b6116f6565b348015610cc757600080fd5b50610498610cd6366004612cd2565b611733565b348015610ce757600080fd5b50610498610cf6366004612c5f565b611793565b348015610d0757600080fd5b50610498610d16366004612b5f565b6117c2565b348015610d2757600080fd5b5061055e601a5481565b348015610d3d57600080fd5b50610498610d4c366004612bc0565b611817565b348015610d5d57600080fd5b50610498610d6c366004612c5f565b6118b2565b348015610d7d57600080fd5b50610498610d8c366004612aab565b6118e1565b348015610d9d57600080fd5b50610498610dac366004612b5f565b6119cb565b348015610dbd57600080fd5b50602a546104e590600160b81b900460ff1681565b348015610dde57600080fd5b5061055e601c5481565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b8152600401610e1290612d9d565b60405180910390fd5b60275415610e5d5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610e12565b436027556026805460ff19169055565b606060018054610e7c90612e9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea890612e9f565b8015610ef55780601f10610eca57610100808354040283529160200191610ef5565b820191906000526020600020905b815481529060010190602001808311610ed857829003601f168201915b5050505050905090565b6000610f0c338484611a7f565b5060015b92915050565b6000546001600160a01b03163314610f405760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f78848484611ba3565b50610fcb8433610fc685604051806060016040528060288152602001612f3a602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612125565b611a7f565b5060015b9392505050565b6000546001600160a01b031633146110005760405162461bcd60e51b8152600401610e1290612d9d565b602a8054911515600160b81b0260ff60b81b19909216919091179055565b6006546000906110439061103a906001600160a01b0316611145565b601e549061215f565b905090565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610e1290612d9d565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610f0c918590610fc69086611a20565b6000546001600160a01b031633146110f45760405162461bcd60e51b8152600401610e1290612d9d565b602155565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610e1290612d9d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b602a546000906001600160a01b03838116911614801561116f5750602a546001600160a01b031633145b801561117d575060265460ff165b156111d157602a546001600160a01b03166000908152600760205260409020546111d15760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610e12565b506001600160a01b031660009081526007602052604090205490565b6000546001600160a01b031633146112175760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461126c5760405162461bcd60e51b8152600401610e1290612d9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610e7c90612e9f565b6000546001600160a01b031633146112ef5760405162461bcd60e51b8152600401610e1290612d9d565b60005b8281101561136057816009600086868581811061131157611311612f0b565b90506020020160208101906113269190612aab565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061135881612eda565b9150506112f2565b50505050565b6000610f0c3384610fc685604051806060016040528060258152602001612f82602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612125565b6000546001600160a01b031633146113df5760405162461bcd60e51b8152600401610e1290612d9d565b602a8054911515600160b01b0260ff60b01b19909216919091179055565b6000610fcb338484611ba3565b6000546001600160a01b031633146114345760405162461bcd60e51b8152600401610e1290612d9d565b601d55565b6000546001600160a01b031633146114635760405162461bcd60e51b8152600401610e1290612d9d565b601683905560178290556018819055611486816114808585611a20565b90611a20565b601955505050565b6000546001600160a01b031633146114b85760405162461bcd60e51b8152600401610e1290612d9d565b60005b828110156113605781600a60008686858181106114da576114da612f0b565b90506020020160208101906114ef9190612aab565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061152181612eda565b9150506114bb565b6000546001600160a01b031633146115535760405162461bcd60e51b8152600401610e1290612d9d565b602a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115a090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115d55760405162461bcd60e51b8152600401610e1290612d9d565b602555565b6000546001600160a01b031633146116045760405162461bcd60e51b8152600401610e1290612d9d565b600e849055600f839055601082905560118190556116288161148084818888611a20565b601a55601254600e5461163a91611a20565b601655601354600f5461164c91611a20565b60175560145460105461165e91611a20565b601881905560175460165461167892916114809190611a20565b60195550505050565b6000546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610e1290612d9d565b60038111156116f15760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e12565b602255565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610e1290612d9d565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610e1290612d9d565b60128490556013839055601482905560158190556117818161148084818888611a20565b601b55601254600e5461163a91611a20565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610e1290612d9d565b601f55565b6000546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118415760405162461bcd60e51b8152600401610e1290612d9d565b60005b828110156113605781600c600086868581811061186357611863612f0b565b90506020020160208101906118789190612aab565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806118aa81612eda565b915050611844565b6000546001600160a01b031633146118dc5760405162461bcd60e51b8152600401610e1290612d9d565b602055565b6000546001600160a01b0316331461190b5760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b0381166119705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e12565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611a2d8385612e2f565b905083811015610fcf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e12565b6001600160a01b038316611ae15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e12565b6001600160a01b038216611b425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e12565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e12565b6001600160a01b038316611c6b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e12565b60008211611ccd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e12565b6001600160a01b03841660009081526009602052604090205460ff1615611d1b5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e12565b602a546001600160a01b038481169116148015611d4a5750602a54611d48906001600160a01b0316611145565b155b15611d5457436024555b602a546001600160a01b038581169116148015611d7f5750602554602454611d7c9190612e2f565b43105b15611da357602354611d9c9085906001600160a01b0316846121a1565b9050610fcf565b602a54600160a01b900460ff1615611dc057611d9c8484846121a1565b6001600160a01b0384166000908152600d602052604090205460ff1680611dff57506001600160a01b0383166000908152600d602052604090205460ff165b15611e6c576001600160a01b0384166000908152600a602052604090205460ff16158015611e4657506001600160a01b0383166000908152600a602052604090205460ff16155b15611e6c57602654610100900460ff168015611e625750602754155b15611e6c57600080fd5b6001600160a01b0384166000908152600c602052604090205460ff16158015611eae57506001600160a01b0383166000908152600c602052604090205460ff16155b15611f1657601f54821115611f165760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e12565b6000611f2130611145565b60215490915081108015908190611f425750602a54600160a01b900460ff16155b8015611f6757506001600160a01b0386166000908152600d602052604090205460ff16155b8015611f7c5750602a54600160a81b900460ff165b15611fa257602a54600160b01b900460ff1615611f995760215491505b611fa282612275565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611ff4918690612125565b6001600160a01b038716600090815260076020908152604080832093909355600a90529081205460ff168061204157506001600160a01b0386166000908152600a602052604090205460ff165b612055576120508787876123ab565b612057565b845b602a54909150600160b81b900460ff16801561208c57506001600160a01b0386166000908152600b602052604090205460ff16155b156120ac576020546120a18261148089611145565b11156120ac57600080fd5b6001600160a01b0386166000908152600760205260409020546120cf9082611a20565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612f62833981519152906121119085815260200190565b60405180910390a360019350505050610fcf565b600081848411156121495760405162461bcd60e51b8152600401610e129190612d48565b5060006121568486612e88565b95945050505050565b6000610fcf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612125565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546121f2918490612125565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546122219083611a20565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612f62833981519152906122639086815260200190565b60405180910390a35060019392505050565b602a805460ff60a01b1916600160a01b1790556019546016546000916122ab916002916122a59182908790612671565b906126f0565b905060006122b9838361215f565b90506122c481612732565b60165447906000906122e4906122db9060026126f0565b6019549061215f565b9050600061230660026122a5846122a56016548861267190919063ffffffff16565b90506000612323836122a56018548761267190919063ffffffff16565b9050600061233b82612335878661215f565b9061215f565b9050801561235957600454612359906001600160a01b0316826128d4565b811561237557600554612375906001600160a01b0316836128d4565b6000831180156123855750600087115b1561239457612394878461290f565b5050602a805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600d602052604081205481908190819060ff1615612441576123f96127106122a56123f2601154601a5461215f90919063ffffffff16565b8890612671565b925060006011541180156124105750601d54601c54105b1561243c576124306127106122a56011548861267190919063ffffffff16565b915061243c87836129d2565b6124c5565b6001600160a01b0386166000908152600d602052604090205460ff16156124c5576124826127106122a56123f2601554601b5461215f90919063ffffffff16565b925060006015541180156124995750601d54601c54105b156124c5576124b96127106122a56015548861267190919063ffffffff16565b91506124c587836129d2565b6001600160a01b0387166000908152600d602052604090205460ff168061250457506001600160a01b0386166000908152600d602052604090205460ff165b156125e657602254156125e6576000805b6022548110156125d357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526007909352912054909250612576906001611a20565b6001600160a01b0380841660008181526007602052604090819020939093559151908b1690600080516020612f62833981519152906125b9906001815260200190565b60405180910390a3806125cb81612eda565b915050612515565b506022546125e2906001612e69565b9150505b821561264e57306000908152600760205260409020546126069084611a20565b30600081815260076020526040908190209290925590516001600160a01b03891690600080516020612f62833981519152906126459087815260200190565b60405180910390a35b61266661265f826114808686611a20565b869061215f565b979650505050505050565b60008261268057506000610f10565b600061268c8385612e69565b9050826126998583612e47565b14610fcf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e12565b6000610fcf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a68565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061276757612767612f0b565b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156127bb57600080fd5b505afa1580156127cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f39190612ac8565b8160018151811061280657612806612f0b565b6001600160a01b03928316602091820292909201015260295461282c9130911684611a7f565b60295460405163791ac94760e01b81526001600160a01b039091169063791ac94790612865908590600090869030904290600401612df3565b600060405180830381600087803b15801561287f57600080fd5b505af1158015612893573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128c8929190612dd2565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561290a573d6000803e3d6000fd5b505050565b6029546129279030906001600160a01b031684611a7f565b60295460235460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129cb9190612ca4565b5050505050565b601d54601c54106129e1575050565b6006546001600160a01b0316600090815260076020526040902054612a069082611a20565b6006546001600160a01b0316600090815260076020526040902055601c54612a2e9082611a20565b601c556006546040518281526001600160a01b0391821691841690600080516020612f628339815191529060200160405180910390a35050565b60008183612a895760405162461bcd60e51b8152600401610e129190612d48565b5060006121568486612e47565b80358015158114612aa657600080fd5b919050565b600060208284031215612abd57600080fd5b8135610fcf81612f21565b600060208284031215612ada57600080fd5b8151610fcf81612f21565b60008060408385031215612af857600080fd5b8235612b0381612f21565b91506020830135612b1381612f21565b809150509250929050565b600080600060608486031215612b3357600080fd5b8335612b3e81612f21565b92506020840135612b4e81612f21565b929592945050506040919091013590565b60008060408385031215612b7257600080fd5b8235612b7d81612f21565b9150612b8b60208401612a96565b90509250929050565b60008060408385031215612ba757600080fd5b8235612bb281612f21565b946020939093013593505050565b600080600060408486031215612bd557600080fd5b833567ffffffffffffffff80821115612bed57600080fd5b818601915086601f830112612c0157600080fd5b813581811115612c1057600080fd5b8760208260051b8501011115612c2557600080fd5b602092830195509350612c3b9186019050612a96565b90509250925092565b600060208284031215612c5657600080fd5b610fcf82612a96565b600060208284031215612c7157600080fd5b5035919050565b600080600060608486031215612c8d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612cb957600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612ce857600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612d3d5781516001600160a01b031687529582019590820190600101612d18565b509495945050505050565b600060208083528351808285015260005b81811015612d7557858101830151858201604001528201612d59565b81811115612d87576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612deb6040830184612d04565b949350505050565b85815284602082015260a060408201526000612e1260a0830186612d04565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612e4257612e42612ef5565b500190565b600082612e6457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e8357612e83612ef5565b500290565b600082821015612e9a57612e9a612ef5565b500390565b600181811c90821680612eb357607f821691505b60208210811415612ed457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612eee57612eee612ef5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612f3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201962c5670958931a0127da12cdc6bc85813f395e1b1db9ba7ea6386256d037f764736f6c634300080700330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000045a4555530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045a45555300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000061f313f880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000135bff520b0f6f8caf470521c20750152cb1c549000000000000000000000000135bff520b0f6f8caf470521c20750152cb1c549000000000000000000000000135bff520b0f6f8caf470521c20750152cb1c5490000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104775760003560e01c8063993945ac1161024a578063cab0347111610139578063eb671e91116100b6578063f1d5f5171161007a578063f1d5f51714610d51578063f2fde38b14610d71578063f84ba65d14610d91578063f872858a14610db1578063fb1eb14b14610dd257600080fd5b8063eb671e9114610cbb578063ec28438a14610cdb578063ef422a1814610cfb578063f0cd1dac14610d1b578063f0f4962c14610d3157600080fd5b8063dd62ed3e116100fd578063dd62ed3e14610bff578063e32759cf14610c45578063e4bf1bed14610c5b578063e5c2b0a614610c7b578063ea10510e14610c9b57600080fd5b8063cab0347114610b7c578063d158272d14610b92578063d49d518114610bb2578063da00097d14610bc8578063dc44b6a014610be957600080fd5b8063c2d4640e116101c7578063c7f063d31161018b578063c7f063d314610ad7578063c816841b14610af7578063c860795214610b17578063c867d60b14610b2d578063c92d567e14610b5d57600080fd5b8063c2d4640e14610a4b578063c469b6dd14610a6b578063c492f04614610a81578063c49b9a8014610aa1578063c5d2418914610ac157600080fd5b8063a5d69d1f1161020e578063a5d69d1f146109b5578063a83f53a7146109d5578063a9059cbb146109eb578063b2bdfa7b14610a0b578063b6b3664314610a2b57600080fd5b8063993945ac146109345780639a55fff01461094a578063a073d37f1461096a578063a08e671f1461097f578063a457c2d71461099557600080fd5b80633ecad2711161036657806370a08231116102e357806388790a68116102a757806388790a68146108a65780638b42507f146108bc5780638da5cb5b146108ec578063914eb66a1461090a57806395d89b411461091f57600080fd5b806370a08231146108245780637d1db4a514610844578063807c2d9c1461085a57806382eefb4314610870578063844d591c1461088657600080fd5b806354fd4d501161032a57806354fd4d50146107b9578063553193ca146107cf578063557ed1ba146107e557806357a5802f146107f857806361a23c691461080e57600080fd5b80633ecad2711461070257806341c0e1b5146107325780634a74bb02146107485780634cb80fd5146107695780635342acb41461078957600080fd5b806327c8f835116103f457806335c96089116103b857806335c960891461067c57806337e5ccf71461069657806339509351146106ac5780633b97084a146106cc5780633df4ddf4146106ec57600080fd5b806327c8f835146105fc578063297ac6de1461061c5780632b112e49146106325780632c4b233414610647578063313ce5671461066757600080fd5b806318160ddd1161043b57806318160ddd1461054d5780631cdd3be31461056c5780632198cf6c1461059c57806323b872dd146105bc5780632563ae83146105dc57600080fd5b806301339c211461048357806306fdde031461049a578063095ea7b3146104c55780631245e347146104f55780631694505e1461052d57600080fd5b3661047e57005b600080fd5b34801561048f57600080fd5b50610498610de8565b005b3480156104a657600080fd5b506104af610e6d565b6040516104bc9190612d48565b60405180910390f35b3480156104d157600080fd5b506104e56104e0366004612b94565b610eff565b60405190151581526020016104bc565b34801561050157600080fd5b50600554610515906001600160a01b031681565b6040516001600160a01b0390911681526020016104bc565b34801561053957600080fd5b50602954610515906001600160a01b031681565b34801561055957600080fd5b50601e545b6040519081526020016104bc565b34801561057857600080fd5b506104e5610587366004612aab565b60096020526000908152604090205460ff1681565b3480156105a857600080fd5b506104986105b7366004612b5f565b610f16565b3480156105c857600080fd5b506104e56105d7366004612b1e565b610f6b565b3480156105e857600080fd5b506104986105f7366004612c44565b610fd6565b34801561060857600080fd5b50600654610515906001600160a01b031681565b34801561062857600080fd5b5061055e60155481565b34801561063e57600080fd5b5061055e61101e565b34801561065357600080fd5b50610498610662366004612aab565b611048565b34801561067357600080fd5b5060035461055e565b34801561068857600080fd5b506026546104e59060ff1681565b3480156106a257600080fd5b5061055e60115481565b3480156106b857600080fd5b506104e56106c7366004612b94565b611094565b3480156106d857600080fd5b506104986106e7366004612c5f565b6110ca565b3480156106f857600080fd5b5061055e60245481565b34801561070e57600080fd5b506104e561071d366004612aab565b600d6020526000908152604090205460ff1681565b34801561073e57600080fd5b5061055e60255481565b34801561075457600080fd5b50602a546104e590600160a81b900460ff1681565b34801561077557600080fd5b50610498610784366004612aab565b6110f9565b34801561079557600080fd5b506104e56107a4366004612aab565b600a6020526000908152604090205460ff1681565b3480156107c557600080fd5b5061055e60285481565b3480156107db57600080fd5b5061055e60275481565b3480156107f157600080fd5b504261055e565b34801561080457600080fd5b5061055e60165481565b34801561081a57600080fd5b5061055e60175481565b34801561083057600080fd5b5061055e61083f366004612aab565b611145565b34801561085057600080fd5b5061055e601f5481565b34801561086657600080fd5b5061055e60205481565b34801561087c57600080fd5b5061055e601b5481565b34801561089257600080fd5b506104986108a1366004612b5f565b6111ed565b3480156108b257600080fd5b5061055e60125481565b3480156108c857600080fd5b506104e56108d7366004612aab565b600c6020526000908152604090205460ff1681565b3480156108f857600080fd5b506000546001600160a01b0316610515565b34801561091657600080fd5b50610498611242565b34801561092b57600080fd5b506104af6112b6565b34801561094057600080fd5b5061055e601d5481565b34801561095657600080fd5b50610498610965366004612bc0565b6112c5565b34801561097657600080fd5b5060215461055e565b34801561098b57600080fd5b5061055e60195481565b3480156109a157600080fd5b506104e56109b0366004612b94565b611366565b3480156109c157600080fd5b506104986109d0366004612c44565b6113b5565b3480156109e157600080fd5b5061055e60185481565b3480156109f757600080fd5b506104e5610a06366004612b94565b6113fd565b348015610a1757600080fd5b50600054610515906001600160a01b031681565b348015610a3757600080fd5b50610498610a46366004612c5f565b61140a565b348015610a5757600080fd5b50610498610a66366004612c78565b611439565b348015610a7757600080fd5b5061055e60105481565b348015610a8d57600080fd5b50610498610a9c366004612bc0565b61148e565b348015610aad57600080fd5b50610498610abc366004612c44565b611529565b348015610acd57600080fd5b5061055e600f5481565b348015610ae357600080fd5b50610498610af2366004612c5f565b6115ab565b348015610b0357600080fd5b50602a54610515906001600160a01b031681565b348015610b2357600080fd5b5061055e60135481565b348015610b3957600080fd5b506104e5610b48366004612aab565b600b6020526000908152604090205460ff1681565b348015610b6957600080fd5b506026546104e590610100900460ff1681565b348015610b8857600080fd5b5061055e60145481565b348015610b9e57600080fd5b50600454610515906001600160a01b031681565b348015610bbe57600080fd5b5061055e60001981565b348015610bd457600080fd5b50602a546104e590600160b01b900460ff1681565b348015610bf557600080fd5b5061055e600e5481565b348015610c0b57600080fd5b5061055e610c1a366004612ae5565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610c5157600080fd5b5061055e60225481565b348015610c6757600080fd5b50610498610c76366004612cd2565b6115da565b348015610c8757600080fd5b50610498610c96366004612c5f565b611681565b348015610ca757600080fd5b50610498610cb6366004612c44565b6116f6565b348015610cc757600080fd5b50610498610cd6366004612cd2565b611733565b348015610ce757600080fd5b50610498610cf6366004612c5f565b611793565b348015610d0757600080fd5b50610498610d16366004612b5f565b6117c2565b348015610d2757600080fd5b5061055e601a5481565b348015610d3d57600080fd5b50610498610d4c366004612bc0565b611817565b348015610d5d57600080fd5b50610498610d6c366004612c5f565b6118b2565b348015610d7d57600080fd5b50610498610d8c366004612aab565b6118e1565b348015610d9d57600080fd5b50610498610dac366004612b5f565b6119cb565b348015610dbd57600080fd5b50602a546104e590600160b81b900460ff1681565b348015610dde57600080fd5b5061055e601c5481565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b8152600401610e1290612d9d565b60405180910390fd5b60275415610e5d5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610e12565b436027556026805460ff19169055565b606060018054610e7c90612e9f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea890612e9f565b8015610ef55780601f10610eca57610100808354040283529160200191610ef5565b820191906000526020600020905b815481529060010190602001808311610ed857829003601f168201915b5050505050905090565b6000610f0c338484611a7f565b5060015b92915050565b6000546001600160a01b03163314610f405760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000610f78848484611ba3565b50610fcb8433610fc685604051806060016040528060288152602001612f3a602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612125565b611a7f565b5060015b9392505050565b6000546001600160a01b031633146110005760405162461bcd60e51b8152600401610e1290612d9d565b602a8054911515600160b81b0260ff60b81b19909216919091179055565b6006546000906110439061103a906001600160a01b0316611145565b601e549061215f565b905090565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610e1290612d9d565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610f0c918590610fc69086611a20565b6000546001600160a01b031633146110f45760405162461bcd60e51b8152600401610e1290612d9d565b602155565b6000546001600160a01b031633146111235760405162461bcd60e51b8152600401610e1290612d9d565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b602a546000906001600160a01b03838116911614801561116f5750602a546001600160a01b031633145b801561117d575060265460ff165b156111d157602a546001600160a01b03166000908152600760205260409020546111d15760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610e12565b506001600160a01b031660009081526007602052604090205490565b6000546001600160a01b031633146112175760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461126c5760405162461bcd60e51b8152600401610e1290612d9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610e7c90612e9f565b6000546001600160a01b031633146112ef5760405162461bcd60e51b8152600401610e1290612d9d565b60005b8281101561136057816009600086868581811061131157611311612f0b565b90506020020160208101906113269190612aab565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061135881612eda565b9150506112f2565b50505050565b6000610f0c3384610fc685604051806060016040528060258152602001612f82602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612125565b6000546001600160a01b031633146113df5760405162461bcd60e51b8152600401610e1290612d9d565b602a8054911515600160b01b0260ff60b01b19909216919091179055565b6000610fcb338484611ba3565b6000546001600160a01b031633146114345760405162461bcd60e51b8152600401610e1290612d9d565b601d55565b6000546001600160a01b031633146114635760405162461bcd60e51b8152600401610e1290612d9d565b601683905560178290556018819055611486816114808585611a20565b90611a20565b601955505050565b6000546001600160a01b031633146114b85760405162461bcd60e51b8152600401610e1290612d9d565b60005b828110156113605781600a60008686858181106114da576114da612f0b565b90506020020160208101906114ef9190612aab565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061152181612eda565b9150506114bb565b6000546001600160a01b031633146115535760405162461bcd60e51b8152600401610e1290612d9d565b602a8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906115a090831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115d55760405162461bcd60e51b8152600401610e1290612d9d565b602555565b6000546001600160a01b031633146116045760405162461bcd60e51b8152600401610e1290612d9d565b600e849055600f839055601082905560118190556116288161148084818888611a20565b601a55601254600e5461163a91611a20565b601655601354600f5461164c91611a20565b60175560145460105461165e91611a20565b601881905560175460165461167892916114809190611a20565b60195550505050565b6000546001600160a01b031633146116ab5760405162461bcd60e51b8152600401610e1290612d9d565b60038111156116f15760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e12565b602255565b6000546001600160a01b031633146117205760405162461bcd60e51b8152600401610e1290612d9d565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610e1290612d9d565b60128490556013839055601482905560158190556117818161148084818888611a20565b601b55601254600e5461163a91611a20565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610e1290612d9d565b601f55565b6000546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118415760405162461bcd60e51b8152600401610e1290612d9d565b60005b828110156113605781600c600086868581811061186357611863612f0b565b90506020020160208101906118789190612aab565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806118aa81612eda565b915050611844565b6000546001600160a01b031633146118dc5760405162461bcd60e51b8152600401610e1290612d9d565b602055565b6000546001600160a01b0316331461190b5760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b0381166119705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e12565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119f55760405162461bcd60e51b8152600401610e1290612d9d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611a2d8385612e2f565b905083811015610fcf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e12565b6001600160a01b038316611ae15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e12565b6001600160a01b038216611b425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e12565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e12565b6001600160a01b038316611c6b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e12565b60008211611ccd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610e12565b6001600160a01b03841660009081526009602052604090205460ff1615611d1b5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610e12565b602a546001600160a01b038481169116148015611d4a5750602a54611d48906001600160a01b0316611145565b155b15611d5457436024555b602a546001600160a01b038581169116148015611d7f5750602554602454611d7c9190612e2f565b43105b15611da357602354611d9c9085906001600160a01b0316846121a1565b9050610fcf565b602a54600160a01b900460ff1615611dc057611d9c8484846121a1565b6001600160a01b0384166000908152600d602052604090205460ff1680611dff57506001600160a01b0383166000908152600d602052604090205460ff165b15611e6c576001600160a01b0384166000908152600a602052604090205460ff16158015611e4657506001600160a01b0383166000908152600a602052604090205460ff16155b15611e6c57602654610100900460ff168015611e625750602754155b15611e6c57600080fd5b6001600160a01b0384166000908152600c602052604090205460ff16158015611eae57506001600160a01b0383166000908152600c602052604090205460ff16155b15611f1657601f54821115611f165760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e12565b6000611f2130611145565b60215490915081108015908190611f425750602a54600160a01b900460ff16155b8015611f6757506001600160a01b0386166000908152600d602052604090205460ff16155b8015611f7c5750602a54600160a81b900460ff165b15611fa257602a54600160b01b900460ff1615611f995760215491505b611fa282612275565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611ff4918690612125565b6001600160a01b038716600090815260076020908152604080832093909355600a90529081205460ff168061204157506001600160a01b0386166000908152600a602052604090205460ff165b612055576120508787876123ab565b612057565b845b602a54909150600160b81b900460ff16801561208c57506001600160a01b0386166000908152600b602052604090205460ff16155b156120ac576020546120a18261148089611145565b11156120ac57600080fd5b6001600160a01b0386166000908152600760205260409020546120cf9082611a20565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612f62833981519152906121119085815260200190565b60405180910390a360019350505050610fcf565b600081848411156121495760405162461bcd60e51b8152600401610e129190612d48565b5060006121568486612e88565b95945050505050565b6000610fcf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612125565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546121f2918490612125565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546122219083611a20565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612f62833981519152906122639086815260200190565b60405180910390a35060019392505050565b602a805460ff60a01b1916600160a01b1790556019546016546000916122ab916002916122a59182908790612671565b906126f0565b905060006122b9838361215f565b90506122c481612732565b60165447906000906122e4906122db9060026126f0565b6019549061215f565b9050600061230660026122a5846122a56016548861267190919063ffffffff16565b90506000612323836122a56018548761267190919063ffffffff16565b9050600061233b82612335878661215f565b9061215f565b9050801561235957600454612359906001600160a01b0316826128d4565b811561237557600554612375906001600160a01b0316836128d4565b6000831180156123855750600087115b1561239457612394878461290f565b5050602a805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600d602052604081205481908190819060ff1615612441576123f96127106122a56123f2601154601a5461215f90919063ffffffff16565b8890612671565b925060006011541180156124105750601d54601c54105b1561243c576124306127106122a56011548861267190919063ffffffff16565b915061243c87836129d2565b6124c5565b6001600160a01b0386166000908152600d602052604090205460ff16156124c5576124826127106122a56123f2601554601b5461215f90919063ffffffff16565b925060006015541180156124995750601d54601c54105b156124c5576124b96127106122a56015548861267190919063ffffffff16565b91506124c587836129d2565b6001600160a01b0387166000908152600d602052604090205460ff168061250457506001600160a01b0386166000908152600d602052604090205460ff165b156125e657602254156125e6576000805b6022548110156125d357604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b03811660009081526007909352912054909250612576906001611a20565b6001600160a01b0380841660008181526007602052604090819020939093559151908b1690600080516020612f62833981519152906125b9906001815260200190565b60405180910390a3806125cb81612eda565b915050612515565b506022546125e2906001612e69565b9150505b821561264e57306000908152600760205260409020546126069084611a20565b30600081815260076020526040908190209290925590516001600160a01b03891690600080516020612f62833981519152906126459087815260200190565b60405180910390a35b61266661265f826114808686611a20565b869061215f565b979650505050505050565b60008261268057506000610f10565b600061268c8385612e69565b9050826126998583612e47565b14610fcf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e12565b6000610fcf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a68565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061276757612767612f0b565b6001600160a01b03928316602091820292909201810191909152602954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156127bb57600080fd5b505afa1580156127cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f39190612ac8565b8160018151811061280657612806612f0b565b6001600160a01b03928316602091820292909201015260295461282c9130911684611a7f565b60295460405163791ac94760e01b81526001600160a01b039091169063791ac94790612865908590600090869030904290600401612df3565b600060405180830381600087803b15801561287f57600080fd5b505af1158015612893573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516128c8929190612dd2565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561290a573d6000803e3d6000fd5b505050565b6029546129279030906001600160a01b031684611a7f565b60295460235460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561299257600080fd5b505af11580156129a6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906129cb9190612ca4565b5050505050565b601d54601c54106129e1575050565b6006546001600160a01b0316600090815260076020526040902054612a069082611a20565b6006546001600160a01b0316600090815260076020526040902055601c54612a2e9082611a20565b601c556006546040518281526001600160a01b0391821691841690600080516020612f628339815191529060200160405180910390a35050565b60008183612a895760405162461bcd60e51b8152600401610e129190612d48565b5060006121568486612e47565b80358015158114612aa657600080fd5b919050565b600060208284031215612abd57600080fd5b8135610fcf81612f21565b600060208284031215612ada57600080fd5b8151610fcf81612f21565b60008060408385031215612af857600080fd5b8235612b0381612f21565b91506020830135612b1381612f21565b809150509250929050565b600080600060608486031215612b3357600080fd5b8335612b3e81612f21565b92506020840135612b4e81612f21565b929592945050506040919091013590565b60008060408385031215612b7257600080fd5b8235612b7d81612f21565b9150612b8b60208401612a96565b90509250929050565b60008060408385031215612ba757600080fd5b8235612bb281612f21565b946020939093013593505050565b600080600060408486031215612bd557600080fd5b833567ffffffffffffffff80821115612bed57600080fd5b818601915086601f830112612c0157600080fd5b813581811115612c1057600080fd5b8760208260051b8501011115612c2557600080fd5b602092830195509350612c3b9186019050612a96565b90509250925092565b600060208284031215612c5657600080fd5b610fcf82612a96565b600060208284031215612c7157600080fd5b5035919050565b600080600060608486031215612c8d57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612cb957600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612ce857600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612d3d5781516001600160a01b031687529582019590820190600101612d18565b509495945050505050565b600060208083528351808285015260005b81811015612d7557858101830151858201604001528201612d59565b81811115612d87576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612deb6040830184612d04565b949350505050565b85815284602082015260a060408201526000612e1260a0830186612d04565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612e4257612e42612ef5565b500190565b600082612e6457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e8357612e83612ef5565b500290565b600082821015612e9a57612e9a612ef5565b500390565b600181811c90821680612eb357607f821691505b60208210811415612ed457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612eee57612eee612ef5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612f3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201962c5670958931a0127da12cdc6bc85813f395e1b1db9ba7ea6386256d037f764736f6c63430008070033

Deployed Bytecode Sourcemap

7223:19948:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14558:172;;;;;;;;;;;;;:::i;:::-;;12603:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14046:161;;;;;;;;;;-1:-1:-1;14046:161:0;;;;;:::i;:::-;;:::i;:::-;;;6259:14:1;;6252:22;6234:41;;6222:2;6207:18;14046:161:0;6094:187:1;7482:40:0;;;;;;;;;;-1:-1:-1;7482:40:0;;;;-1:-1:-1;;;;;7482:40:0;;;;;;-1:-1:-1;;;;;5214:32:1;;;5196:51;;5184:2;5169:18;7482:40:0;5050:203:1;9093:41:0;;;;;;;;;;-1:-1:-1;9093:41:0;;;;-1:-1:-1;;;;;9093:41:0;;;12882:100;;;;;;;;;;-1:-1:-1;12962:12:0;;12882:100;;;6674:25:1;;;6662:2;6647:18;12882:100:0;6520:185:1;7730:46:0;;;;;;;;;;-1:-1:-1;7730:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18013:135;;;;;;;;;;-1:-1:-1;18013:135:0;;;;;:::i;:::-;;:::i;19873:313::-;;;;;;;;;;-1:-1:-1;19873:313:0;;;;;:::i;:::-;;:::i;17892:113::-;;;;;;;;;;-1:-1:-1;17892:113:0;;;;;:::i;:::-;;:::i;7529:71::-;;;;;;;;;;-1:-1:-1;7529:71:0;;;;-1:-1:-1;;;;;7529:71:0;;;8295:34;;;;;;;;;;;;;;;;19334:128;;;;;;;;;;;;;:::i;18548:129::-;;;;;;;;;;-1:-1:-1;18548:129:0;;;;;:::i;:::-;;:::i;12789:85::-;;;;;;;;;;-1:-1:-1;12857:9:0;;12789:85;;8948:27;;;;;;;;;;-1:-1:-1;8948:27:0;;;;;;;;8129:33;;;;;;;;;;;;;;;;13414:218;;;;;;;;;;-1:-1:-1;13414:218:0;;;;;:::i;:::-;;:::i;18266:125::-;;;;;;;;;;-1:-1:-1;18266:125:0;;;;;:::i;:::-;;:::i;8891:20::-;;;;;;;;;;;;;;;;7954:45;;;;;;;;;;-1:-1:-1;7954:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8918:23;;;;;;;;;;;;;;;;9250:40;;;;;;;;;;-1:-1:-1;9250:40:0;;;;-1:-1:-1;;;9250:40:0;;;;;;18401:139;;;;;;;;;;-1:-1:-1;18401:139:0;;;;;:::i;:::-;;:::i;7783:50::-;;;;;;;;;;-1:-1:-1;7783:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9052:30;;;;;;;;;;;;;;;;9015;;;;;;;;;;;;;;;;6197:90;;;;;;;;;;-1:-1:-1;6264:15:0;6197:90;;8338:34;;;;;;;;;;;;;;;;8379;;;;;;;;;;;;;;;;12990:265;;;;;;;;;;-1:-1:-1;12990:265:0;;;;;:::i;:::-;;:::i;8703:27::-;;;;;;;;;;;;;;;;8737:25;;;;;;;;;;;;;;;;8551:37;;;;;;;;;;;;;;;;15053:129;;;;;;;;;;-1:-1:-1;15053:129:0;;;;;:::i;:::-;;:::i;8171:36::-;;;;;;;;;;;;;;;;7899:48;;;;;;;;;;-1:-1:-1;7899:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5578:79;;;;;;;;;;-1:-1:-1;5616:7:0;5643:6;-1:-1:-1;;;;;5643:6:0;5578:79;;5792:145;;;;;;;;;;;;;:::i;12694:87::-;;;;;;;;;;;;;:::i;8629:32::-;;;;;;;;;;;;;;;;14736:222;;;;;;;;;;-1:-1:-1;14736:222:0;;;;;:::i;:::-;;:::i;13917:121::-;;;;;;;;;;-1:-1:-1;14006:24:0;;13917:121;;8456:43;;;;;;;;;;;;;;;;13640:269;;;;;;;;;;-1:-1:-1;13640:269:0;;;;;:::i;:::-;;:::i;18958:125::-;;;;;;;;;;-1:-1:-1;18958:125:0;;;;;:::i;:::-;;:::i;8420:29::-;;;;;;;;;;;;;;;;19698:167;;;;;;;;;;-1:-1:-1;19698:167:0;;;;;:::i;:::-;;:::i;5454:21::-;;;;;;;;;;-1:-1:-1;5454:21:0;;;;-1:-1:-1;;;;;5454:21:0;;;15698:111;;;;;;;;;;-1:-1:-1;15698:111:0;;;;;:::i;:::-;;:::i;17407:358::-;;;;;;;;;;-1:-1:-1;17407:358:0;;;;;:::i;:::-;;:::i;8092:30::-;;;;;;;;;;;;;;;;19091:233;;;;;;;;;;-1:-1:-1;19091:233:0;;;;;:::i;:::-;;:::i;18685:171::-;;;;;;;;;;-1:-1:-1;18685:171:0;;;;;:::i;:::-;;:::i;8050:35::-;;;;;;;;;;;;;;;;18864:86;;;;;;;;;;-1:-1:-1;18864:86:0;;;;;:::i;:::-;;:::i;9141:26::-;;;;;;;;;;-1:-1:-1;9141:26:0;;;;-1:-1:-1;;;;;9141:26:0;;;8214:36;;;;;;;;;;;;;;;;7840:52;;;;;;;;;;-1:-1:-1;7840:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8982:26;;;;;;;;;;-1:-1:-1;8982:26:0;;;;;;;;;;;8257:31;;;;;;;;;;;;;;;;7430:45;;;;;;;;;;-1:-1:-1;7430:45:0;;;;-1:-1:-1;;;;;7430:45:0;;;9174:41;;;;;;;;;;-1:-1:-1;9174:41:0;-1:-1:-1;;9174:41:0;;9297:45;;;;;;;;;;-1:-1:-1;9297:45:0;;;;-1:-1:-1;;;9297:45:0;;;;;;8008:35;;;;;;;;;;;;;;;;13263:143;;;;;;;;;;-1:-1:-1;13263:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13371:18:0;;;13344:7;13371:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13263:143;8820:27;;;;;;;;;;;;;;;;15817:696;;;;;;;;;;-1:-1:-1;15817:696:0;;;;;:::i;:::-;;:::i;16521:157::-;;;;;;;;;;-1:-1:-1;16521:157:0;;;;;:::i;:::-;;:::i;14964:83::-;;;;;;;;;;-1:-1:-1;14964:83:0;;;;;:::i;:::-;;:::i;16686:713::-;;;;;;;;;;-1:-1:-1;16686:713:0;;;;;:::i;:::-;;:::i;17773:111::-;;;;;;;;;;-1:-1:-1;17773:111:0;;;;;:::i;:::-;;:::i;15555:135::-;;;;;;;;;;-1:-1:-1;15555:135:0;;;;;:::i;:::-;;:::i;8508:36::-;;;;;;;;;;;;;;;;15325:222;;;;;;;;;;-1:-1:-1;15325:222:0;;;;;:::i;:::-;;:::i;18156:102::-;;;;;;;;;;-1:-1:-1;18156:102:0;;;;;:::i;:::-;;:::i;5945:244::-;;;;;;;;;;-1:-1:-1;5945:244:0;;;;;:::i;:::-;;:::i;15190:127::-;;;;;;;;;;-1:-1:-1;15190:127:0;;;;;:::i;:::-;;:::i;9349:35::-;;;;;;;;;;-1:-1:-1;9349:35:0;;;;-1:-1:-1;;;9349:35:0;;;;;;8597:25;;;;;;;;;;;;;;;;14558:172;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;;;;;;;;;14614:15:::1;::::0;:20;14606:48:::1;;;::::0;-1:-1:-1;;;14606:48:0;;9823:2:1;14606:48:0::1;::::0;::::1;9805:21:1::0;9862:2;9842:18;;;9835:30;-1:-1:-1;;;9881:18:1;;;9874:45;9936:18;;14606:48:0::1;9621:339:1::0;14606:48:0::1;14683:12;14665:15;:30:::0;14706:8:::1;:16:::0;;-1:-1:-1;;14706:16:0::1;::::0;;14558:172::o;12603:83::-;12640:13;12673:5;12666:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12603:83;:::o;14046:161::-;14121:4;14138:39;198:10;14161:7;14170:6;14138:8;:39::i;:::-;-1:-1:-1;14195:4:0;14046:161;;;;;:::o;18013:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18104:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;18104:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18013:135::o;19873:313::-;19971:4;19988:36;19998:6;20006:9;20017:6;19988:9;:36::i;:::-;-1:-1:-1;20035:121:0;20044:6;198:10;20066:89;20104:6;20066:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20066:19:0;;;;;;:11;:19;;;;;;;;198:10;20066:33;;;;;;;;;;:37;:89::i;:::-;20035:8;:121::i;:::-;-1:-1:-1;20174:4:0;19873:313;;;;;;:::o;17892:113::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17970:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17970:27:0::1;-1:-1:-1::0;;;;17970:27:0;;::::1;::::0;;;::::1;::::0;;17892:113::o;19334:128::-;19441:11;;19387:7;;19414:40;;19431:22;;-1:-1:-1;;;;;19441:11:0;19431:9;:22::i;:::-;19414:12;;;:16;:40::i;:::-;19407:47;;19334:128;:::o;18548:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18630:17:::1;:39:::0;;-1:-1:-1;;;;;;18630:39:0::1;-1:-1:-1::0;;;;;18630:39:0;;;::::1;::::0;;;::::1;::::0;;18548:129::o;13414:218::-;198:10;13502:4;13551:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13551:34:0;;;;;;;;;;13502:4;;13519:83;;13542:7;;13551:50;;13590:10;13551:38;:50::i;18266:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18348:24:::1;:35:::0;18266:125::o;18401:139::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18488:22:::1;:44:::0;;-1:-1:-1;;;;;;18488:44:0::1;-1:-1:-1::0;;;;;18488:44:0;;;::::1;::::0;;;::::1;::::0;;18401:139::o;12990:265::-;13091:11;;13056:7;;-1:-1:-1;;;;;13080:22:0;;;13091:11;;13080:22;:51;;;;-1:-1:-1;13120:11:0;;-1:-1:-1;;;;;13120:11:0;13106:10;:25;13080:51;:63;;;;-1:-1:-1;13135:8:0;;;;13080:63;13076:136;;;13174:11;;-1:-1:-1;;;;;13174:11:0;13189:1;13164:22;;;:9;:22;;;;;;13156:44;;;;-1:-1:-1;;;13156:44:0;;12498:2:1;13156:44:0;;;12480:21:1;12537:1;12517:18;;;12510:29;-1:-1:-1;;;12555:18:1;;;12548:35;12600:18;;13156:44:0;12296:328:1;13156:44:0;-1:-1:-1;;;;;;13229:18:0;;;;;:9;:18;;;;;;;12990:265::o;15053:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15142:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;15142:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15053:129::o;5792:145::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;5896:1:::1;5880:6:::0;;5859:40:::1;::::0;-1:-1:-1;;;;;5880:6:0;;::::1;::::0;5859:40:::1;::::0;5896:1;;5859:40:::1;5927:1;5910:19:::0;;-1:-1:-1;;;;;;5910:19:0::1;::::0;;5792:145::o;12694:87::-;12733:13;12766:7;12759:14;;;;;:::i;14736:222::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;14845:9:::1;14840:111;14860:19:::0;;::::1;14840:111;;;14931:8;14901:14;:27;14916:8;;14925:1;14916:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14901:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14901:27:0;:38;;-1:-1:-1;;14901:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14881:3;::::1;::::0;::::1;:::i;:::-;;;;14840:111;;;;14736:222:::0;;;:::o;13640:269::-;13733:4;13750:129;198:10;13773:7;13782:96;13821:15;13782:96;;;;;;;;;;;;;;;;;198:10;13782:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13782:34:0;;;;;;;;;;;;:38;:96::i;18958:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;19039:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;19039:36:0::1;-1:-1:-1::0;;;;19039:36:0;;::::1;::::0;;;::::1;::::0;;18958:125::o;19698:167::-;19776:4;19793:42;198:10;19817:9;19828:6;19793:9;:42::i;15698:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15771:17:::1;:30:::0;15698:111::o;17407:358::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17548:15:::1;:35:::0;;;17594:15:::1;:35:::0;;;17640:10:::1;:25:::0;;;17705:52:::1;17653:12:::0;17705:36:::1;17566:17:::0;17612;17705:19:::1;:36::i;:::-;:40:::0;::::1;:52::i;:::-;17678:24;:79:::0;-1:-1:-1;;;17407:358:0:o;19091:233::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;19208:9:::1;19204:113;19223:19:::0;;::::1;19204:113;;;19297:8;19264:17;:30;19282:8;;19291:1;19282:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19264:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19264:30:0;:41;;-1:-1:-1;;19264:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19244:3;::::1;::::0;::::1;:::i;:::-;;;;19204:113;;18685:171:::0;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18762:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18762:32:0::1;-1:-1:-1::0;;;;18762:32:0;;::::1;;::::0;;18810:38:::1;::::0;::::1;::::0;::::1;::::0;18786:8;6259:14:1;6252:22;6234:41;;6222:2;6207:18;;6094:187;18810:38:0::1;;;;;;;;18685:171:::0;:::o;18864:86::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18927:4:::1;:15:::0;18864:86::o;15817:696::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15963:16:::1;:34:::0;;;16008:16:::1;:34:::0;;;16053:11:::1;:24:::0;;;16088:14:::1;:30:::0;;;16149:75:::1;16105:13:::0;16149:55:::1;16067:10:::0;16149:55;15982:15;16027;16149:20:::1;:38::i;:75::-;16129:17;:95:::0;16276:17:::1;::::0;16255:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;:::-;16237:15;:57:::0;16344:17:::1;::::0;16323:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;:::-;16305:15;:57:::0;16402:12:::1;::::0;16386:11:::1;::::0;:29:::1;::::0;:15:::1;:29::i;:::-;16373:10;:42:::0;;;16473:15:::1;::::0;16453::::1;::::0;:52:::1;::::0;16373:42;16453:36:::1;::::0;:15;:19:::1;:36::i;:52::-;16426:24;:79:::0;-1:-1:-1;;;;15817:696:0:o;16521:157::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16612:1:::1;16600:8;:13;;16592:44;;;::::0;-1:-1:-1;;;16592:44:0;;11746:2:1;16592:44:0::1;::::0;::::1;11728:21:1::0;11785:2;11765:18;;;11758:30;-1:-1:-1;;;11804:18:1;;;11797:48;11862:18;;16592:44:0::1;11544:342:1::0;16592:44:0::1;16647:12;:23:::0;16521:157::o;14964:83::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15027:8:::1;:12:::0;;-1:-1:-1;;15027:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14964:83::o;16686:713::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16832:17:::1;:35:::0;;;16878:17:::1;:35:::0;;;16924:12:::1;:25:::0;;;16960:15:::1;:31:::0;;;17023:79:::1;16978:13:::0;17023:58:::1;16939:10:::0;17023:58;16852:15;16898;17023:21:::1;:40::i;:79::-;17002:18;:100:::0;17162:17:::1;::::0;17141:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;17773:111::-:0;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17850:12:::1;:26:::0;17773:111::o;15555:135::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15645:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;15645:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15555:135::o;15325:222::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15433:9:::1;15429:111;15448:19:::0;;::::1;15429:111;;;15520:8;15489:15;:28;15505:8;;15514:1;15505:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15489:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15489:28:0;:39;;-1:-1:-1;;15489:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15469:3;::::1;::::0;::::1;:::i;:::-;;;;15429:111;;18156:102:::0;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18228:10:::1;:22:::0;18156:102::o;5945:244::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6034:22:0;::::1;6026:73;;;::::0;-1:-1:-1;;;6026:73:0;;8248:2:1;6026:73:0::1;::::0;::::1;8230:21:1::0;8287:2;8267:18;;;8260:30;8326:34;8306:18;;;8299:62;-1:-1:-1;;;8377:18:1;;;8370:36;8423:19;;6026:73:0::1;8046:402:1::0;6026:73:0::1;6136:6;::::0;;6115:38:::1;::::0;-1:-1:-1;;;;;6115:38:0;;::::1;::::0;6136:6;::::1;::::0;6115:38:::1;::::0;::::1;6164:6;:17:::0;;-1:-1:-1;;;;;;6164:17:0::1;-1:-1:-1::0;;;;;6164:17:0;;;::::1;::::0;;;::::1;::::0;;5945:244::o;15190:127::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15277:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15277:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15190:127::o;1191:181::-;1249:7;;1281:5;1285:1;1281;:5;:::i;:::-;1269:17;;1310:1;1305;:6;;1297:46;;;;-1:-1:-1;;;1297:46:0;;9058:2:1;1297:46:0;;;9040:21:1;9097:2;9077:18;;;9070:30;9136:29;9116:18;;;9109:57;9183:18;;1297:46:0;8856:351:1;14215:337:0;-1:-1:-1;;;;;14308:19:0;;14300:68;;;;-1:-1:-1;;;14300:68:0;;12093:2:1;14300:68:0;;;12075:21:1;12132:2;12112:18;;;12105:30;12171:34;12151:18;;;12144:62;-1:-1:-1;;;12222:18:1;;;12215:34;12266:19;;14300:68:0;11891:400:1;14300:68:0;-1:-1:-1;;;;;14387:21:0;;14379:68;;;;-1:-1:-1;;;14379:68:0;;8655:2:1;14379:68:0;;;8637:21:1;8694:2;8674:18;;;8667:30;8733:34;8713:18;;;8706:62;-1:-1:-1;;;8784:18:1;;;8777:32;8826:19;;14379:68:0;8453:398:1;14379:68:0;-1:-1:-1;;;;;14460:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14512:32;;6674:25:1;;;14512:32:0;;6647:18:1;14512:32:0;;;;;;;14215:337;;;:::o;20194:2401::-;20281:4;-1:-1:-1;;;;;20308:20:0;;20300:70;;;;-1:-1:-1;;;20300:70:0;;11340:2:1;20300:70:0;;;11322:21:1;11379:2;11359:18;;;11352:30;11418:34;11398:18;;;11391:62;-1:-1:-1;;;11469:18:1;;;11462:35;11514:19;;20300:70:0;11138:401:1;20300:70:0;-1:-1:-1;;;;;20389:23:0;;20381:71;;;;-1:-1:-1;;;20381:71:0;;7514:2:1;20381:71:0;;;7496:21:1;7553:2;7533:18;;;7526:30;7592:34;7572:18;;;7565:62;-1:-1:-1;;;7643:18:1;;;7636:33;7686:19;;20381:71:0;7312:399:1;20381:71:0;20480:1;20471:6;:10;20463:64;;;;-1:-1:-1;;;20463:64:0;;10930:2:1;20463:64:0;;;10912:21:1;10969:2;10949:18;;;10942:30;11008:34;10988:18;;;10981:62;-1:-1:-1;;;11059:18:1;;;11052:39;11108:19;;20463:64:0;10728:405:1;20463:64:0;-1:-1:-1;;;;;20547:22:0;;;;;;:14;:22;;;;;;;;20546:23;20538:38;;;;-1:-1:-1;;;20538:38:0;;7918:2:1;20538:38:0;;;7900:21:1;7957:1;7937:18;;;7930:29;-1:-1:-1;;;7975:18:1;;;7968:32;8017:18;;20538:38:0;7716:325:1;20538:38:0;20616:11;;-1:-1:-1;;;;;20603:24:0;;;20616:11;;20603:24;:64;;;;-1:-1:-1;20649:11:0;;20631:31;;-1:-1:-1;;;;;20649:11:0;20631:9;:31::i;:::-;:36;20603:64;20600:115;;;20691:12;20683:5;:20;20600:115;20738:11;;-1:-1:-1;;;;;20728:21:0;;;20738:11;;20728:21;:52;;;;;20776:4;;20768:5;;:12;;;;:::i;:::-;20753;:27;20728:52;20725:136;;;20826:14;;20803:46;;20818:6;;-1:-1:-1;;;;;20826:14:0;20842:6;20803:14;:46::i;:::-;20796:53;;;;20725:136;20874:16;;-1:-1:-1;;;20874:16:0;;;;20871:1717;;;20923:41;20938:6;20946:9;20957:6;20923:14;:41::i;20871:1717::-;-1:-1:-1;;;;;21020:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;21044:23:0;;;;;;:12;:23;;;;;;;;21020:47;21016:303;;;-1:-1:-1;;;;;21093:25:0;;;;;;:17;:25;;;;;;;;21092:26;:59;;;;-1:-1:-1;;;;;;21123:28:0;;;;;;:17;:28;;;;;;;;21122:29;21092:59;21088:216;;;21180:14;;;;;;;:38;;;;-1:-1:-1;21203:15:0;;21198:20;21180:38;21176:109;;;21247:14;;;;-1:-1:-1;;;;;21337:23:0;;;;;;:15;:23;;;;;;;;21336:24;:55;;;;-1:-1:-1;;;;;;21365:26:0;;;;;;:15;:26;;;;;;;;21364:27;21336:55;21333:170;;;21430:12;;21420:6;:22;;21412:75;;;;-1:-1:-1;;;21412:75:0;;9414:2:1;21412:75:0;;;9396:21:1;9453:2;9433:18;;;9426:30;9492:34;9472:18;;;9465:62;-1:-1:-1;;;9543:18:1;;;9536:38;9591:19;;21412:75:0;9212:404:1;21412:75:0;21519:28;21550:24;21568:4;21550:9;:24::i;:::-;21644;;21519:55;;-1:-1:-1;21620:48:0;;;;;;;21689:44;;-1:-1:-1;21717:16:0;;-1:-1:-1;;;21717:16:0;;;;21716:17;21689:44;:69;;;;-1:-1:-1;;;;;;21738:20:0;;;;;;:12;:20;;;;;;;;21737:21;21689:69;:94;;;;-1:-1:-1;21762:21:0;;-1:-1:-1;;;21762:21:0;;;;21689:94;21685:301;;;21820:25;;-1:-1:-1;;;21820:25:0;;;;21817:98;;;21891:24;;21868:47;;21817:98;21934:36;21949:20;21934:14;:36::i;:::-;22022:53;;;;;;;;;;;-1:-1:-1;;;22022:53:0;;;;;;;;-1:-1:-1;;;;;22022:17:0;;-1:-1:-1;22022:17:0;;;:9;:17;;;;;;;;:53;;22044:6;;22022:21;:53::i;:::-;-1:-1:-1;;;;;22002:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22115:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;22144:28:0;;;;;;:17;:28;;;;;;;;22115:57;22114:147;;22227:34;22235:6;22243:9;22254:6;22227:7;:34::i;:::-;22114:147;;;22218:6;22114:147;22281:16;;22092:169;;-1:-1:-1;;;;22281:16:0;;;;:51;;;;-1:-1:-1;;;;;;22302:30:0;;;;;;:19;:30;;;;;;;;22301:31;22281:51;22278:133;;;22400:10;;22359:37;22384:11;22359:20;22369:9;22359;:20::i;:37::-;:51;;22351:60;;;;;;-1:-1:-1;;;;;22451:20:0;;;;;;:9;:20;;;;;;:37;;22476:11;22451:24;:37::i;:::-;-1:-1:-1;;;;;22428:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22510:40;;;;;;-1:-1:-1;;;;;;;;;;;22510:40:0;;;22538:11;6674:25:1;;6662:2;6647:18;;6520:185;22510:40:0;;;;;;;;22572:4;22565:11;;;;;;;1524:192;1610:7;1646:12;1638:6;;;;1630:29;;;;-1:-1:-1;;;1630:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1670:9:0;1682:5;1686:1;1682;:5;:::i;:::-;1670:17;1524:192;-1:-1:-1;;;;;1524:192:0:o;1380:136::-;1438:7;1465:43;1469:1;1472;1465:43;;;;;;;;;;;;;;;;;:3;:43::i;22603:330::-;22733:53;;;;;;;;;;;-1:-1:-1;;;22733:53:0;;;;;;;;-1:-1:-1;;;;;22733:17:0;;22696:4;22733:17;;;:9;:17;;;;;;;:53;;22755:6;;22733:21;:53::i;:::-;-1:-1:-1;;;;;22713:17:0;;;;;;;:9;:17;;;;;;:73;;;;22820:20;;;;;;;:32;;22845:6;22820:24;:32::i;:::-;-1:-1:-1;;;;;22797:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22868:35;;;;;;-1:-1:-1;;;;;;;;;;;22868:35:0;;;22896:6;6674:25:1;;6662:2;6647:18;;6520:185;22868:35:0;;;;;;;;-1:-1:-1;22921:4:0;22603:330;;;;;:::o;22941:1032::-;9795:16;:23;;-1:-1:-1;;;;9795:23:0;-1:-1:-1;;;9795:23:0;;;23070:24:::1;::::0;23049:15:::1;::::0;9795:23;;23037:65:::1;::::0;23100:1:::1;::::0;23037:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;23015:87:::0;-1:-1:-1;23113:21:0::1;23137:24;:7:::0;23015:87;23137:11:::1;:24::i;:::-;23113:48;;23174:31;23191:13;23174:16;:31::i;:::-;23326:15;::::0;23241:21:::1;::::0;23216:22:::1;::::0;23297:52:::1;::::0;23326:22:::1;::::0;23346:1:::1;23326:19;:22::i;:::-;23297:24;::::0;;:28:::1;:52::i;:::-;23275:74;;23362:26;23391:59;23448:1;23391:52;23431:11;23391:35;23410:15;;23391:14;:18;;:35;;;;:::i;:59::-;23362:88;;23461:21;23485:47;23520:11;23485:30;23504:10;;23485:14;:18;;:30;;;;:::i;:47::-;23461:71:::0;-1:-1:-1;23543:26:0::1;23572:57;23461:71:::0;23572:38:::1;:14:::0;23591:18;23572::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;23543:86:::0;-1:-1:-1;23645:22:0;;23642:104:::1;;23703:22;::::0;23682:64:::1;::::0;-1:-1:-1;;;;;23703:22:0::1;23727:18:::0;23682:20:::1;:64::i;:::-;23762:17:::0;;23759:89:::1;;23815:17;::::0;23794:54:::1;::::0;-1:-1:-1;;;;;23815:17:0::1;23834:13:::0;23794:20:::1;:54::i;:::-;23885:1;23864:18;:22;:41;;;;;23904:1;23890:11;:15;23864:41;23861:104;;;23920:45;23933:11;23946:18;23920:12;:45::i;:::-;-1:-1:-1::0;;9841:16:0;:24;;-1:-1:-1;;;;9841:24:0;;;-1:-1:-1;;;;;;22941:1032:0:o;25175:1662::-;-1:-1:-1;;;;;25387:20:0;;25261:7;25387:20;;;:12;:20;;;;;;25261:7;;;;;;25387:20;;25384:678;;;25436:60;25490:5;25436:49;25447:37;25469:14;;25447:17;;:21;;:37;;;;:::i;:::-;25436:6;;:10;:49::i;:60::-;25424:72;;25531:1;25514:14;;:18;:52;;;;;25549:17;;25536:10;;:30;25514:52;25511:190;;;25600:37;25631:5;25600:26;25611:14;;25600:6;:10;;:26;;;;:::i;:37::-;25587:50;;25656:29;25667:6;25674:10;25656;:29::i;:::-;25384:678;;;-1:-1:-1;;;;;25730:23:0;;;;;;:12;:23;;;;;;;;25727:335;;;25782:62;25838:5;25782:51;25793:39;25816:15;;25793:18;;:22;;:39;;;;:::i;25782:62::-;25770:74;;25880:1;25862:15;;:19;:53;;;;;25898:17;;25885:10;;:30;25862:53;25859:192;;;25949:38;25981:5;25949:27;25960:15;;25949:6;:10;;:27;;;;:::i;:38::-;25936:51;;26006:29;26017:6;26024:10;26006;:29::i;:::-;-1:-1:-1;;;;;26077:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;26101:23:0;;;;;;:12;:23;;;;;;;;26077:47;26074:495;;;26144:12;;:16;26140:418;;26180:10;;26209:283;26233:12;;26229:1;:16;26209:283;;;26314:44;;;;;;4918:19:1;;;4953:12;;;4946:28;;;26342:15:0;4990:12:1;;;4983:28;5027:12;;26314:44:0;;;-1:-1:-1;;26314:44:0;;;;;;;;;26304:55;;26314:44;26304:55;;;;-1:-1:-1;;;;;26401:13:0;;26296:64;26401:13;;;:9;:13;;;;;;26304:55;;-1:-1:-1;26401:20:0;;26419:1;26401:17;:20::i;:::-;-1:-1:-1;;;;;26385:13:0;;;;;;;:9;:13;;;;;;;:36;;;;26449:23;;;;;;-1:-1:-1;;;;;;;;;;;26449:23:0;;;26470:1;6674:25:1;;6662:2;6647:18;;6520:185;26449:23:0;;;;;;;;26247:3;;;;:::i;:::-;;;;26209:283;;;-1:-1:-1;26526:12:0;;:16;;26541:1;26526:16;:::i;:::-;26510:32;;26161:397;26140:418;26584:13;;26581:173;;26659:4;26641:24;;;;:9;:24;;;;;;:39;;26670:9;26641:28;:39::i;:::-;26632:4;26614:24;;;;:9;:24;;;;;;;:66;;;;26700:42;;-1:-1:-1;;;;;26700:42:0;;;-1:-1:-1;;;;;;;;;;;26700:42:0;;;26732:9;6674:25:1;;6662:2;6647:18;;6520:185;26700:42:0;;;;;;;;26581:173;26773:56;26784:44;26814:13;26784:25;:9;26798:10;26784:13;:25::i;:44::-;26773:6;;:10;:56::i;:::-;26766:63;25175:1662;-1:-1:-1;;;;;;;25175:1662:0:o;1724:250::-;1782:7;1806:6;1802:47;;-1:-1:-1;1836:1:0;1829:8;;1802:47;1861:9;1873:5;1877:1;1873;:5;:::i;:::-;1861:17;-1:-1:-1;1906:1:0;1897:5;1901:1;1861:17;1897:5;:::i;:::-;:10;1889:56;;;;-1:-1:-1;;;1889:56:0;;10167:2:1;1889:56:0;;;10149:21:1;10206:2;10186:18;;;10179:30;10245:34;10225:18;;;10218:62;-1:-1:-1;;;10296:18:1;;;10289:31;10337:19;;1889:56:0;9965:397:1;1982:132:0;2040:7;2067:39;2071:1;2074;2067:39;;;;;;;;;;;;;;;;;:3;:39::i;23981:658::-;24131:16;;;24145:1;24131:16;;;;;;;;24107:21;;24131:16;;;;;;;;;;-1:-1:-1;24131:16:0;24107:40;;24176:4;24158;24163:1;24158:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24158:23:0;;;:7;;;;;;;;;;:23;;;;24202:15;;:22;;;-1:-1:-1;;;24202:22:0;;;;:15;;;;;:20;;:22;;;;;24158:7;;24202:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24192:4;24197:1;24192:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24192:32:0;;;:7;;;;;;;;;:32;24269:15;;24237:62;;24254:4;;24269:15;24287:11;24237:8;:62::i;:::-;24338:15;;:240;;-1:-1:-1;;;24338:240:0;;-1:-1:-1;;;;;24338:15:0;;;;:66;;:240;;24419:11;;24338:15;;24489:4;;24516;;24552:15;;24338:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24596:35;24613:11;24626:4;24596:35;;;;;;;:::i;:::-;;;;;;;;24036:603;23981:658;:::o;19470:126::-;19562:26;;-1:-1:-1;;;;;19562:18:0;;;:26;;;;;19581:6;;19562:26;;;;19581:6;19562:18;:26;;;;;;;;;;;;;;;;;;;;;19470:126;;:::o;24647:520::-;24827:15;;24795:62;;24812:4;;-1:-1:-1;;;;;24827:15:0;24845:11;24795:8;:62::i;:::-;24900:15;;25104:14;;24900:259;;-1:-1:-1;;;24900:259:0;;24972:4;24900:259;;;5823:34:1;5873:18;;;5866:34;;;24900:15:0;5916:18:1;;;5909:34;;;5959:18;;;5952:34;-1:-1:-1;;;;;25104:14:0;;;6002:19:1;;;5995:44;25133:15:0;6055:19:1;;;6048:35;24900:15:0;;;:31;;24939:9;;5757:19:1;;24900:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24647:520;;:::o;26845:321::-;26959:17;;26945:10;;:31;26942:43;;26845:321;;:::o;26942:43::-;27032:11;;-1:-1:-1;;;;;27032:11:0;27022:22;;;;:9;:22;;;;;;:35;;27049:7;27022:26;:35::i;:::-;27007:11;;-1:-1:-1;;;;;27007:11:0;26997:22;;;;:9;:22;;;;;:60;27081:10;;:23;;27096:7;27081:14;:23::i;:::-;27068:10;:36;27137:11;;27120:38;;6674:25:1;;;-1:-1:-1;;;;;27137:11:0;;;;27120:38;;;-1:-1:-1;;;;;;;;;;;27120:38:0;6662:2:1;6647:18;27120:38:0;;;;;;;26845:321;;:::o;2122:278::-;2208:7;2243:12;2236:5;2228:28;;;;-1:-1:-1;;;2228:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2267:9:0;2279:5;2283:1;2279;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:689::-;2273:6;2281;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:52;;;2358:1;2355;2348:12;2310:52;2398:9;2385:23;2427:18;2468:2;2460:6;2457:14;2454:34;;;2484:1;2481;2474:12;2454:34;2522:6;2511:9;2507:22;2497:32;;2567:7;2560:4;2556:2;2552:13;2548:27;2538:55;;2589:1;2586;2579:12;2538:55;2629:2;2616:16;2655:2;2647:6;2644:14;2641:34;;;2671:1;2668;2661:12;2641:34;2726:7;2719:4;2709:6;2706:1;2702:14;2698:2;2694:23;2690:34;2687:47;2684:67;;;2747:1;2744;2737:12;2684:67;2778:4;2770:13;;;;-1:-1:-1;2802:6:1;-1:-1:-1;2827:37:1;;2843:20;;;-1:-1:-1;2827:37:1;:::i;:::-;2817:47;;2181:689;;;;;:::o;2875:180::-;2931:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;3023:26;3039:9;3023:26;:::i;3060:180::-;3119:6;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;-1:-1:-1;3211:23:1;;3060:180;-1:-1:-1;3060:180:1:o;3245:316::-;3322:6;3330;3338;3391:2;3379:9;3370:7;3366:23;3362:32;3359:52;;;3407:1;3404;3397:12;3359:52;-1:-1:-1;;3430:23:1;;;3500:2;3485:18;;3472:32;;-1:-1:-1;3551:2:1;3536:18;;;3523:32;;3245:316;-1:-1:-1;3245:316:1:o;3566:306::-;3654:6;3662;3670;3723:2;3711:9;3702:7;3698:23;3694:32;3691:52;;;3739:1;3736;3729:12;3691:52;3768:9;3762:16;3752:26;;3818:2;3807:9;3803:18;3797:25;3787:35;;3862:2;3851:9;3847:18;3841:25;3831:35;;3566:306;;;;;:::o;3877:385::-;3963:6;3971;3979;3987;4040:3;4028:9;4019:7;4015:23;4011:33;4008:53;;;4057:1;4054;4047:12;4008:53;-1:-1:-1;;4080:23:1;;;4150:2;4135:18;;4122:32;;-1:-1:-1;4201:2:1;4186:18;;4173:32;;4252:2;4237:18;4224:32;;-1:-1:-1;3877:385:1;-1:-1:-1;3877:385:1:o;4267:461::-;4320:3;4358:5;4352:12;4385:6;4380:3;4373:19;4411:4;4440:2;4435:3;4431:12;4424:19;;4477:2;4470:5;4466:14;4498:1;4508:195;4522:6;4519:1;4516:13;4508:195;;;4587:13;;-1:-1:-1;;;;;4583:39:1;4571:52;;4643:12;;;;4678:15;;;;4619:1;4537:9;4508:195;;;-1:-1:-1;4719:3:1;;4267:461;-1:-1:-1;;;;;4267:461:1:o;6710:597::-;6822:4;6851:2;6880;6869:9;6862:21;6912:6;6906:13;6955:6;6950:2;6939:9;6935:18;6928:34;6980:1;6990:140;7004:6;7001:1;6998:13;6990:140;;;7099:14;;;7095:23;;7089:30;7065:17;;;7084:2;7061:26;7054:66;7019:10;;6990:140;;;7148:6;7145:1;7142:13;7139:91;;;7218:1;7213:2;7204:6;7193:9;7189:22;7185:31;7178:42;7139:91;-1:-1:-1;7291:2:1;7270:15;-1:-1:-1;;7266:29:1;7251:45;;;;7298:2;7247:54;;6710:597;-1:-1:-1;;;6710:597:1:o;10367:356::-;10569:2;10551:21;;;10588:18;;;10581:30;10647:34;10642:2;10627:18;;10620:62;10714:2;10699:18;;10367:356::o;12811:332::-;13018:6;13007:9;13000:25;13061:2;13056;13045:9;13041:18;13034:30;12981:4;13081:56;13133:2;13122:9;13118:18;13110:6;13081:56;:::i;:::-;13073:64;12811:332;-1:-1:-1;;;;12811:332:1:o;13148:582::-;13447:6;13436:9;13429:25;13490:6;13485:2;13474:9;13470:18;13463:34;13533:3;13528:2;13517:9;13513:18;13506:31;13410:4;13554:57;13606:3;13595:9;13591:19;13583:6;13554:57;:::i;:::-;-1:-1:-1;;;;;13647:32:1;;;;13642:2;13627:18;;13620:60;-1:-1:-1;13711:3:1;13696:19;13689:35;13546:65;13148:582;-1:-1:-1;;;13148:582:1:o;13735:128::-;13775:3;13806:1;13802:6;13799:1;13796:13;13793:39;;;13812:18;;:::i;:::-;-1:-1:-1;13848:9:1;;13735:128::o;13868:217::-;13908:1;13934;13924:132;;13978:10;13973:3;13969:20;13966:1;13959:31;14013:4;14010:1;14003:15;14041:4;14038:1;14031:15;13924:132;-1:-1:-1;14070:9:1;;13868:217::o;14090:168::-;14130:7;14196:1;14192;14188:6;14184:14;14181:1;14178:21;14173:1;14166:9;14159:17;14155:45;14152:71;;;14203:18;;:::i;:::-;-1:-1:-1;14243:9:1;;14090:168::o;14263:125::-;14303:4;14331:1;14328;14325:8;14322:34;;;14336:18;;:::i;:::-;-1:-1:-1;14373:9:1;;14263:125::o;14393:380::-;14472:1;14468:12;;;;14515;;;14536:61;;14590:4;14582:6;14578:17;14568:27;;14536:61;14643:2;14635:6;14632:14;14612:18;14609:38;14606:161;;;14689:10;14684:3;14680:20;14677:1;14670:31;14724:4;14721:1;14714:15;14752:4;14749:1;14742:15;14606:161;;14393:380;;;:::o;14778:135::-;14817:3;-1:-1:-1;;14838:17:1;;14835:43;;;14858:18;;:::i;:::-;-1:-1:-1;14905:1:1;14894:13;;14778:135::o;14918:127::-;14979:10;14974:3;14970:20;14967:1;14960:31;15010:4;15007:1;15000:15;15034:4;15031:1;15024:15;15050:127;15111:10;15106:3;15102:20;15099:1;15092:31;15142:4;15139:1;15132:15;15166:4;15163:1;15156:15;15314:131;-1:-1:-1;;;;;15389:31:1;;15379:42;;15369:70;;15435:1;15432;15425:12;15369:70;15314:131;:::o

Swarm Source

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