ETH Price: $3,269.32 (-1.37%)

Token

Dama (Dama)
 

Overview

Max Total Supply

2,100,000,000,000,000 Dama

Holders

147

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
25,028,467,140,129.821219208143516844 Dama

Value
$0.00
0xdb71de92a75b2aab65b414aec86c4155e740f574
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 0xff46DEc1...d326f6233
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-23
*/

// 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 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_0_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 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");

        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":[],"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":[],"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"}]

60806040819052600680546001600160a01b03191661dead1790556000600d819055600e819055600f8190556010819055601181905560128190556013819055601481905560158190556016819055601781905560188190556019819055601a81905560208190556024556025805460ff1916600117905560c8602755602980546201000160a81b62ffffff60a81b1990911617905562003eb538819003908190833981016040819052620000b49162000c41565b600082600381518110620000cc57620000cc62000fec565b60200260200101519050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011057600080fd5b505afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000c1c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019457600080fd5b505afa158015620001a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cf919062000c1c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200021857600080fd5b505af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000c1c565b602960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550846000815181106200028f576200028f62000fec565b602002602001015160019080519060200190620002ae929190620009eb565b5084600181518110620002c557620002c562000fec565b602002602001015160029080519060200190620002e4929190620009eb565b5083600081518110620002fb57620002fb62000fec565b6020026020010151600381905550826000815181106200031f576200031f62000fec565b60200260200101516000806101000a8154816001600160a01b0302191690836001600160a01b031602179055508260008151811062000362576200036262000fec565b6020026020010151602260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600081518110620003a657620003a662000fec565b6020026020010151602560016101000a81548160ff02191690831515021790555081600181518110620003dd57620003dd62000fec565b60209081029190910101516025805460ff19169115159190911790556003546200040990600a62000ebb565b846001815181106200041f576200041f62000fec565b602002602001015162000433919062000f77565b601d556003546200044690600a62000ebb565b846001815181106200045c576200045c62000fec565b602002602001015162000470919062000f77565b601e556003546200048390600a62000ebb565b8460018151811062000499576200049962000fec565b6020026020010151620004ad919062000f77565b601f55600354620004c090600a62000ebb565b84600181518110620004d657620004d662000fec565b6020026020010151620004ea919062000f77565b601c55600354620004fd90600a62000ebb565b6200050a90600162000f77565b60205582518390600190811062000525576200052562000fec565b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260028151811062000569576200056962000fec565b6020026020010151600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555083600281518110620005ad57620005ad62000fec565b6020026020010151600d8190555083600381518110620005d157620005d162000fec565b6020026020010151600e8190555083600481518110620005f557620005f562000fec565b6020026020010151600f819055508360058151811062000619576200061962000fec565b6020026020010151601081905550836006815181106200063d576200063d62000fec565b60200260200101516011819055508360078151811062000661576200066162000fec565b60200260200101516012819055508360088151811062000685576200068562000fec565b602002602001015160138190555083600981518110620006a957620006a962000fec565b6020026020010151601481905550620006f7601054620006e3600f54620006e3600e54600d546200097c60201b6200191f1790919060201c565b6200097c60201b6200191f1790919060201c565b60198190555062000729601454620006e3601354620006e36012546011546200097c60201b6200191f1790919060201c565b601a819055506200074d601154600d546200097c60201b6200191f1790919060201c565b60158190555062000771601254600e546200097c60201b6200191f1790919060201c565b60168190555062000795601354600f546200097c60201b6200191f1790919060201c565b601781905550620007c0601754620006e36016546015546200097c60201b6200191f1790919060201c565b601855602880546001600160a01b0319166001600160a01b03838116918217909255306000818152600860209081526040808320948352938152838220600019905581548516825260098152838220805460ff1990811660019081179092558484528584208054821683179055835487168452600a8352858420805482168317905560298054881685528685208054831684179055858552868520805483168417905560068054891686528786208054841685179055855489168652600b85528786208054841685179055548816855286852080548316841790559484528584208054821683179055935486168352600c8252848320805490941617909255601d548154909416815260079091522055825183906004908110620008e857620008e862000fec565b60200260200101516001600160a01b03166108fc349081150290604051600060405180830381858888f1935050505015801562000929573d6000803e3d6000fd5b5060008054601d546040519081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505062001018565b6000806200098b838562000e57565b905083811015620009e25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b828054620009f99062000f99565b90600052602060002090601f01602090048101928262000a1d576000855562000a68565b82601f1062000a3857805160ff191683800117855562000a68565b8280016001018555821562000a68579182015b8281111562000a6857825182559160200191906001019062000a4b565b5062000a7692915062000a7a565b5090565b5b8082111562000a76576000815560010162000a7b565b80516001600160a01b038116811462000aa957600080fd5b919050565b600082601f83011262000ac057600080fd5b8151602062000ad962000ad38362000e31565b62000dfe565b80838252828201915082860187848660051b890101111562000afa57600080fd5b60005b8581101562000b245762000b118262000a91565b8452928401929084019060010162000afd565b5090979650505050505050565b600082601f83011262000b4357600080fd5b8151602062000b5662000ad38362000e31565b80838252828201915082860187848660051b890101111562000b7757600080fd5b6000805b8681101562000ba7578251801515811462000b94578283fd5b8552938501939185019160010162000b7b565b509198975050505050505050565b600082601f83011262000bc757600080fd5b8151602062000bda62000ad38362000e31565b80838252828201915082860187848660051b890101111562000bfb57600080fd5b60005b8581101562000b245781518452928401929084019060010162000bfe565b60006020828403121562000c2f57600080fd5b62000c3a8262000a91565b9392505050565b6000806000806080858703121562000c5857600080fd5b84516001600160401b038082111562000c7057600080fd5b818701915087601f83011262000c8557600080fd5b815162000c9662000ad38262000e31565b80828252602082019150602085018b60208560051b880101111562000cba57600080fd5b60005b8481101562000d7d5781518681111562000cd657600080fd5b8701603f81018e1362000ce857600080fd5b60208101518781111562000d005762000d0062001002565b62000d15601f8201601f191660200162000dfe565b8181528f604083850101111562000d2b57600080fd5b60005b8281101562000d5157604081850101516020828401015260208101905062000d2e565b8281111562000d64576000602084840101525b5086525050602093840193919091019060010162000cbd565b505060208a0151909850935050508082111562000d9957600080fd5b62000da78883890162000bb5565b9450604087015191508082111562000dbe57600080fd5b62000dcc8883890162000aae565b9350606087015191508082111562000de357600080fd5b5062000df28782880162000b31565b91505092959194509250565b604051601f8201601f191681016001600160401b038111828210171562000e295762000e2962001002565b604052919050565b60006001600160401b0382111562000e4d5762000e4d62001002565b5060051b60200190565b6000821982111562000e6d5762000e6d62000fd6565b500190565b600181815b8085111562000eb357816000190482111562000e975762000e9762000fd6565b8085161562000ea557918102915b93841c939080029062000e77565b509250929050565b600062000c3a838360008262000ed457506001620009e5565b8162000ee357506000620009e5565b816001811462000efc576002811462000f075762000f27565b6001915050620009e5565b60ff84111562000f1b5762000f1b62000fd6565b50506001821b620009e5565b5060208310610133831016604e8410600b841016171562000f4c575081810a620009e5565b62000f58838362000e72565b806000190482111562000f6f5762000f6f62000fd6565b029392505050565b600081600019048311821515161562000f945762000f9462000fd6565b500290565b600181811c9082168062000fae57607f821691505b6020821081141562000fd057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b612e8d80620010286000396000f3fe6080604052600436106104615760003560e01c8063993945ac1161023f578063cab0347111610139578063eb671e91116100b6578063f1d5f5171161007a578063f1d5f51714610ceb578063f2fde38b14610d0b578063f84ba65d14610d2b578063f872858a14610d4b578063fb1eb14b14610d6c57600080fd5b8063eb671e9114610c55578063ec28438a14610c75578063ef422a1814610c95578063f0cd1dac14610cb5578063f0f4962c14610ccb57600080fd5b8063dd62ed3e116100fd578063dd62ed3e14610b99578063e32759cf14610bdf578063e4bf1bed14610bf5578063e5c2b0a614610c15578063ea10510e14610c3557600080fd5b8063cab0347114610b16578063d158272d14610b2c578063d49d518114610b4c578063da00097d14610b62578063dc44b6a014610b8357600080fd5b8063c2d4640e116101c7578063c7f063d31161018b578063c7f063d314610a71578063c816841b14610a91578063c860795214610ab1578063c867d60b14610ac7578063c92d567e14610af757600080fd5b8063c2d4640e146109e5578063c469b6dd14610a05578063c492f04614610a1b578063c49b9a8014610a3b578063c5d2418914610a5b57600080fd5b8063a5d69d1f1161020e578063a5d69d1f1461094f578063a83f53a71461096f578063a9059cbb14610985578063b2bdfa7b146109a5578063b6b36643146109c557600080fd5b8063993945ac146108ee578063a073d37f14610904578063a08e671f14610919578063a457c2d71461092f57600080fd5b80633ecad2711161035b57806370a08231116102d857806388790a681161029c57806388790a68146108605780638b42507f146108765780638da5cb5b146108a6578063914eb66a146108c457806395d89b41146108d957600080fd5b806370a08231146107de5780637d1db4a5146107fe578063807c2d9c1461081457806382eefb431461082a578063844d591c1461084057600080fd5b806354fd4d501161031f57806354fd4d5014610773578063553193ca14610789578063557ed1ba1461079f57806357a5802f146107b257806361a23c69146107c857600080fd5b80633ecad271146106bc57806341c0e1b5146106ec5780634a74bb02146107025780634cb80fd5146107235780635342acb41461074357600080fd5b806327c8f835116103e957806335c96089116103ad57806335c960891461063657806337e5ccf71461065057806339509351146106665780633b97084a146106865780633df4ddf4146106a657600080fd5b806327c8f835146105b6578063297ac6de146105d65780632b112e49146105ec5780632c4b233414610601578063313ce5671461062157600080fd5b80631694505e116104305780631694505e1461051757806318160ddd146105375780632198cf6c1461055657806323b872dd146105765780632563ae831461059657600080fd5b806301339c211461046d57806306fdde0314610484578063095ea7b3146104af5780631245e347146104df57600080fd5b3661046857005b600080fd5b34801561047957600080fd5b50610482610d82565b005b34801561049057600080fd5b50610499610e07565b6040516104a69190612bf9565b60405180910390f35b3480156104bb57600080fd5b506104cf6104ca366004612a45565b610e99565b60405190151581526020016104a6565b3480156104eb57600080fd5b506005546104ff906001600160a01b031681565b6040516001600160a01b0390911681526020016104a6565b34801561052357600080fd5b506028546104ff906001600160a01b031681565b34801561054357600080fd5b50601d545b6040519081526020016104a6565b34801561056257600080fd5b50610482610571366004612a10565b610eb0565b34801561058257600080fd5b506104cf6105913660046129cf565b610f05565b3480156105a257600080fd5b506104826105b1366004612af5565b610f70565b3480156105c257600080fd5b506006546104ff906001600160a01b031681565b3480156105e257600080fd5b5061054860145481565b3480156105f857600080fd5b50610548610fb8565b34801561060d57600080fd5b5061048261061c36600461295c565b610fe2565b34801561062d57600080fd5b50600354610548565b34801561064257600080fd5b506025546104cf9060ff1681565b34801561065c57600080fd5b5061054860105481565b34801561067257600080fd5b506104cf610681366004612a45565b61102e565b34801561069257600080fd5b506104826106a1366004612b10565b611064565b3480156106b257600080fd5b5061054860235481565b3480156106c857600080fd5b506104cf6106d736600461295c565b600c6020526000908152604090205460ff1681565b3480156106f857600080fd5b5061054860245481565b34801561070e57600080fd5b506029546104cf90600160a81b900460ff1681565b34801561072f57600080fd5b5061048261073e36600461295c565b611093565b34801561074f57600080fd5b506104cf61075e36600461295c565b60096020526000908152604090205460ff1681565b34801561077f57600080fd5b5061054860275481565b34801561079557600080fd5b5061054860265481565b3480156107ab57600080fd5b5042610548565b3480156107be57600080fd5b5061054860155481565b3480156107d457600080fd5b5061054860165481565b3480156107ea57600080fd5b506105486107f936600461295c565b6110df565b34801561080a57600080fd5b50610548601e5481565b34801561082057600080fd5b50610548601f5481565b34801561083657600080fd5b50610548601a5481565b34801561084c57600080fd5b5061048261085b366004612a10565b611187565b34801561086c57600080fd5b5061054860115481565b34801561088257600080fd5b506104cf61089136600461295c565b600b6020526000908152604090205460ff1681565b3480156108b257600080fd5b506000546001600160a01b03166104ff565b3480156108d057600080fd5b506104826111dc565b3480156108e557600080fd5b50610499611250565b3480156108fa57600080fd5b50610548601c5481565b34801561091057600080fd5b50602054610548565b34801561092557600080fd5b5061054860185481565b34801561093b57600080fd5b506104cf61094a366004612a45565b61125f565b34801561095b57600080fd5b5061048261096a366004612af5565b6112ae565b34801561097b57600080fd5b5061054860175481565b34801561099157600080fd5b506104cf6109a0366004612a45565b6112f6565b3480156109b157600080fd5b506000546104ff906001600160a01b031681565b3480156109d157600080fd5b506104826109e0366004612b10565b611303565b3480156109f157600080fd5b50610482610a00366004612b29565b611332565b348015610a1157600080fd5b50610548600f5481565b348015610a2757600080fd5b50610482610a36366004612a71565b611387565b348015610a4757600080fd5b50610482610a56366004612af5565b611428565b348015610a6757600080fd5b50610548600e5481565b348015610a7d57600080fd5b50610482610a8c366004612b10565b6114aa565b348015610a9d57600080fd5b506029546104ff906001600160a01b031681565b348015610abd57600080fd5b5061054860125481565b348015610ad357600080fd5b506104cf610ae236600461295c565b600a6020526000908152604090205460ff1681565b348015610b0357600080fd5b506025546104cf90610100900460ff1681565b348015610b2257600080fd5b5061054860135481565b348015610b3857600080fd5b506004546104ff906001600160a01b031681565b348015610b5857600080fd5b5061054860001981565b348015610b6e57600080fd5b506029546104cf90600160b01b900460ff1681565b348015610b8f57600080fd5b50610548600d5481565b348015610ba557600080fd5b50610548610bb4366004612996565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610beb57600080fd5b5061054860215481565b348015610c0157600080fd5b50610482610c10366004612b83565b6114d9565b348015610c2157600080fd5b50610482610c30366004612b10565b611580565b348015610c4157600080fd5b50610482610c50366004612af5565b6115f5565b348015610c6157600080fd5b50610482610c70366004612b83565b611632565b348015610c8157600080fd5b50610482610c90366004612b10565b611692565b348015610ca157600080fd5b50610482610cb0366004612a10565b6116c1565b348015610cc157600080fd5b5061054860195481565b348015610cd757600080fd5b50610482610ce6366004612a71565b611716565b348015610cf757600080fd5b50610482610d06366004612b10565b6117b1565b348015610d1757600080fd5b50610482610d2636600461295c565b6117e0565b348015610d3757600080fd5b50610482610d46366004612a10565b6118ca565b348015610d5757600080fd5b506029546104cf90600160b81b900460ff1681565b348015610d7857600080fd5b50610548601b5481565b6000546001600160a01b03163314610db55760405162461bcd60e51b8152600401610dac90612c4e565b60405180910390fd5b60265415610df75760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610dac565b436026556025805460ff19169055565b606060018054610e1690612d50565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4290612d50565b8015610e8f5780601f10610e6457610100808354040283529160200191610e8f565b820191906000526020600020905b815481529060010190602001808311610e7257829003601f168201915b5050505050905090565b6000610ea633848461197e565b5060015b92915050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610f12848484611aa2565b50610f658433610f6085604051806060016040528060288152602001612deb602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611fd6565b61197e565b5060015b9392505050565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610dac90612c4e565b60298054911515600160b81b0260ff60b81b19909216919091179055565b600654600090610fdd90610fd4906001600160a01b03166110df565b601d5490612010565b905090565b6000546001600160a01b0316331461100c5760405162461bcd60e51b8152600401610dac90612c4e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610ea6918590610f60908661191f565b6000546001600160a01b0316331461108e5760405162461bcd60e51b8152600401610dac90612c4e565b602055565b6000546001600160a01b031633146110bd5760405162461bcd60e51b8152600401610dac90612c4e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6029546000906001600160a01b03838116911614801561110957506029546001600160a01b031633145b8015611117575060255460ff165b1561116b576029546001600160a01b031660009081526007602052604090205461116b5760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610dac565b506001600160a01b031660009081526007602052604090205490565b6000546001600160a01b031633146111b15760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112065760405162461bcd60e51b8152600401610dac90612c4e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610e1690612d50565b6000610ea63384610f6085604051806060016040528060258152602001612e33602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611fd6565b6000546001600160a01b031633146112d85760405162461bcd60e51b8152600401610dac90612c4e565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000610f65338484611aa2565b6000546001600160a01b0316331461132d5760405162461bcd60e51b8152600401610dac90612c4e565b601c55565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610dac90612c4e565b60158390556016829055601781905561137f81611379858561191f565b9061191f565b601855505050565b6000546001600160a01b031633146113b15760405162461bcd60e51b8152600401610dac90612c4e565b60005b828110156114225781600960008686858181106113d3576113d3612dbc565b90506020020160208101906113e8919061295c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061141a81612d8b565b9150506113b4565b50505050565b6000546001600160a01b031633146114525760405162461bcd60e51b8152600401610dac90612c4e565b60298054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061149f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114d45760405162461bcd60e51b8152600401610dac90612c4e565b602455565b6000546001600160a01b031633146115035760405162461bcd60e51b8152600401610dac90612c4e565b600d849055600e839055600f8290556010819055611527816113798481888861191f565b601955601154600d546115399161191f565b601555601254600e5461154b9161191f565b601655601354600f5461155d9161191f565b60178190556016546015546115779291611379919061191f565b60185550505050565b6000546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610dac90612c4e565b60038111156115f05760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610dac565b602155565b6000546001600160a01b0316331461161f5760405162461bcd60e51b8152600401610dac90612c4e565b6025805460ff1916911515919091179055565b6000546001600160a01b0316331461165c5760405162461bcd60e51b8152600401610dac90612c4e565b6011849055601283905560138290556014819055611680816113798481888861191f565b601a55601154600d546115399161191f565b6000546001600160a01b031633146116bc5760405162461bcd60e51b8152600401610dac90612c4e565b601e55565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117405760405162461bcd60e51b8152600401610dac90612c4e565b60005b828110156114225781600b600086868581811061176257611762612dbc565b9050602002016020810190611777919061295c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117a981612d8b565b915050611743565b6000546001600160a01b031633146117db5760405162461bcd60e51b8152600401610dac90612c4e565b601f55565b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60008061192c8385612ce0565b905083811015610f695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dac565b6001600160a01b0383166119e05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dac565b6001600160a01b038216611a415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dac565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610dac565b6001600160a01b038316611b6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610dac565b60008211611bcc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610dac565b6029546001600160a01b038481169116148015611bfb5750602954611bf9906001600160a01b03166110df565b155b15611c0557436023555b6029546001600160a01b038581169116148015611c305750602454602354611c2d9190612ce0565b43105b15611c5457602254611c4d9085906001600160a01b031684612052565b9050610f69565b602954600160a01b900460ff1615611c7157611c4d848484612052565b6001600160a01b0384166000908152600c602052604090205460ff1680611cb057506001600160a01b0383166000908152600c602052604090205460ff165b15611d1d576001600160a01b03841660009081526009602052604090205460ff16158015611cf757506001600160a01b03831660009081526009602052604090205460ff16155b15611d1d57602554610100900460ff168015611d135750602654155b15611d1d57600080fd5b6001600160a01b0384166000908152600b602052604090205460ff16158015611d5f57506001600160a01b0383166000908152600b602052604090205460ff16155b15611dc757601e54821115611dc75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610dac565b6000611dd2306110df565b60205490915081108015908190611df35750602954600160a01b900460ff16155b8015611e1857506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2d5750602954600160a81b900460ff165b15611e5357602954600160b01b900460ff1615611e4a5760205491505b611e5382612126565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611ea5918690611fd6565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611ef257506001600160a01b03861660009081526009602052604090205460ff165b611f0657611f0187878761225c565b611f08565b845b602954909150600160b81b900460ff168015611f3d57506001600160a01b0386166000908152600a602052604090205460ff16155b15611f5d57601f54611f5282611379896110df565b1115611f5d57600080fd5b6001600160a01b038616600090815260076020526040902054611f80908261191f565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612e1383398151915290611fc29085815260200190565b60405180910390a360019350505050610f69565b60008184841115611ffa5760405162461bcd60e51b8152600401610dac9190612bf9565b5060006120078486612d39565b95945050505050565b6000610f6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fd6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546120a3918490611fd6565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546120d2908361191f565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612e13833981519152906121149086815260200190565b60405180910390a35060019392505050565b6029805460ff60a01b1916600160a01b17905560185460155460009161215c916002916121569182908790612522565b906125a1565b9050600061216a8383612010565b9050612175816125e3565b60155447906000906121959061218c9060026125a1565b60185490612010565b905060006121b76002612156846121566015548861252290919063ffffffff16565b905060006121d4836121566017548761252290919063ffffffff16565b905060006121ec826121e68786612010565b90612010565b9050801561220a5760045461220a906001600160a01b031682612785565b811561222657600554612226906001600160a01b031683612785565b6000831180156122365750600087115b156122455761224587846127c0565b50506029805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c602052604081205481908190819060ff16156122f2576122aa6127106121566122a360105460195461201090919063ffffffff16565b8890612522565b925060006010541180156122c15750601c54601b54105b156122ed576122e16127106121566010548861252290919063ffffffff16565b91506122ed8783612883565b612376565b6001600160a01b0386166000908152600c602052604090205460ff1615612376576123336127106121566122a3601454601a5461201090919063ffffffff16565b9250600060145411801561234a5750601c54601b54105b156123765761236a6127106121566014548861252290919063ffffffff16565b91506123768783612883565b6001600160a01b0387166000908152600c602052604090205460ff16806123b557506001600160a01b0386166000908152600c602052604090205460ff165b156124975760215415612497576000805b60215481101561248457604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b0381166000908152600790935291205490925061242790600161191f565b6001600160a01b0380841660008181526007602052604090819020939093559151908b1690600080516020612e138339815191529061246a906001815260200190565b60405180910390a38061247c81612d8b565b9150506123c6565b50602154612493906001612d1a565b9150505b82156124ff57306000908152600760205260409020546124b7908461191f565b30600081815260076020526040908190209290925590516001600160a01b03891690600080516020612e13833981519152906124f69087815260200190565b60405180910390a35b61251761251082611379868661191f565b8690612010565b979650505050505050565b60008261253157506000610eaa565b600061253d8385612d1a565b90508261254a8583612cf8565b14610f695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dac565b6000610f6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612919565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261857612618612dbc565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561266c57600080fd5b505afa158015612680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a49190612979565b816001815181106126b7576126b7612dbc565b6001600160a01b0392831660209182029290920101526028546126dd913091168461197e565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612716908590600090869030904290600401612ca4565b600060405180830381600087803b15801561273057600080fd5b505af1158015612744573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612779929190612c83565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156127bb573d6000803e3d6000fd5b505050565b6028546127d89030906001600160a01b03168461197e565b60285460225460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061287c9190612b55565b5050505050565b601c54601b5410612892575050565b6006546001600160a01b03166000908152600760205260409020546128b7908261191f565b6006546001600160a01b0316600090815260076020526040902055601b546128df908261191f565b601b556006546040518281526001600160a01b0391821691841690600080516020612e138339815191529060200160405180910390a35050565b6000818361293a5760405162461bcd60e51b8152600401610dac9190612bf9565b5060006120078486612cf8565b8035801515811461295757600080fd5b919050565b60006020828403121561296e57600080fd5b8135610f6981612dd2565b60006020828403121561298b57600080fd5b8151610f6981612dd2565b600080604083850312156129a957600080fd5b82356129b481612dd2565b915060208301356129c481612dd2565b809150509250929050565b6000806000606084860312156129e457600080fd5b83356129ef81612dd2565b925060208401356129ff81612dd2565b929592945050506040919091013590565b60008060408385031215612a2357600080fd5b8235612a2e81612dd2565b9150612a3c60208401612947565b90509250929050565b60008060408385031215612a5857600080fd5b8235612a6381612dd2565b946020939093013593505050565b600080600060408486031215612a8657600080fd5b833567ffffffffffffffff80821115612a9e57600080fd5b818601915086601f830112612ab257600080fd5b813581811115612ac157600080fd5b8760208260051b8501011115612ad657600080fd5b602092830195509350612aec9186019050612947565b90509250925092565b600060208284031215612b0757600080fd5b610f6982612947565b600060208284031215612b2257600080fd5b5035919050565b600080600060608486031215612b3e57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612b6a57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612b9957600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612bee5781516001600160a01b031687529582019590820190600101612bc9565b509495945050505050565b600060208083528351808285015260005b81811015612c2657858101830151858201604001528201612c0a565b81811115612c38576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612c9c6040830184612bb5565b949350505050565b85815284602082015260a060408201526000612cc360a0830186612bb5565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612cf357612cf3612da6565b500190565b600082612d1557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d3457612d34612da6565b500290565b600082821015612d4b57612d4b612da6565b500390565b600181811c90821680612d6457607f821691505b60208210811415612d8557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d9f57612d9f612da6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612de757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122050050efe265f22e82275d311300540c8894d71b732000bbf2efb43c3c1f3af8f64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000d746865204a6164652048617265000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003544a470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000001406f4000000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c8000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000ff22b84bda13b561b7546923067c4e9eb085e1e5000000000000000000000000ff22b84bda13b561b7546923067c4e9eb085e1e5000000000000000000000000ff22b84bda13b561b7546923067c4e9eb085e1e50000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104615760003560e01c8063993945ac1161023f578063cab0347111610139578063eb671e91116100b6578063f1d5f5171161007a578063f1d5f51714610ceb578063f2fde38b14610d0b578063f84ba65d14610d2b578063f872858a14610d4b578063fb1eb14b14610d6c57600080fd5b8063eb671e9114610c55578063ec28438a14610c75578063ef422a1814610c95578063f0cd1dac14610cb5578063f0f4962c14610ccb57600080fd5b8063dd62ed3e116100fd578063dd62ed3e14610b99578063e32759cf14610bdf578063e4bf1bed14610bf5578063e5c2b0a614610c15578063ea10510e14610c3557600080fd5b8063cab0347114610b16578063d158272d14610b2c578063d49d518114610b4c578063da00097d14610b62578063dc44b6a014610b8357600080fd5b8063c2d4640e116101c7578063c7f063d31161018b578063c7f063d314610a71578063c816841b14610a91578063c860795214610ab1578063c867d60b14610ac7578063c92d567e14610af757600080fd5b8063c2d4640e146109e5578063c469b6dd14610a05578063c492f04614610a1b578063c49b9a8014610a3b578063c5d2418914610a5b57600080fd5b8063a5d69d1f1161020e578063a5d69d1f1461094f578063a83f53a71461096f578063a9059cbb14610985578063b2bdfa7b146109a5578063b6b36643146109c557600080fd5b8063993945ac146108ee578063a073d37f14610904578063a08e671f14610919578063a457c2d71461092f57600080fd5b80633ecad2711161035b57806370a08231116102d857806388790a681161029c57806388790a68146108605780638b42507f146108765780638da5cb5b146108a6578063914eb66a146108c457806395d89b41146108d957600080fd5b806370a08231146107de5780637d1db4a5146107fe578063807c2d9c1461081457806382eefb431461082a578063844d591c1461084057600080fd5b806354fd4d501161031f57806354fd4d5014610773578063553193ca14610789578063557ed1ba1461079f57806357a5802f146107b257806361a23c69146107c857600080fd5b80633ecad271146106bc57806341c0e1b5146106ec5780634a74bb02146107025780634cb80fd5146107235780635342acb41461074357600080fd5b806327c8f835116103e957806335c96089116103ad57806335c960891461063657806337e5ccf71461065057806339509351146106665780633b97084a146106865780633df4ddf4146106a657600080fd5b806327c8f835146105b6578063297ac6de146105d65780632b112e49146105ec5780632c4b233414610601578063313ce5671461062157600080fd5b80631694505e116104305780631694505e1461051757806318160ddd146105375780632198cf6c1461055657806323b872dd146105765780632563ae831461059657600080fd5b806301339c211461046d57806306fdde0314610484578063095ea7b3146104af5780631245e347146104df57600080fd5b3661046857005b600080fd5b34801561047957600080fd5b50610482610d82565b005b34801561049057600080fd5b50610499610e07565b6040516104a69190612bf9565b60405180910390f35b3480156104bb57600080fd5b506104cf6104ca366004612a45565b610e99565b60405190151581526020016104a6565b3480156104eb57600080fd5b506005546104ff906001600160a01b031681565b6040516001600160a01b0390911681526020016104a6565b34801561052357600080fd5b506028546104ff906001600160a01b031681565b34801561054357600080fd5b50601d545b6040519081526020016104a6565b34801561056257600080fd5b50610482610571366004612a10565b610eb0565b34801561058257600080fd5b506104cf6105913660046129cf565b610f05565b3480156105a257600080fd5b506104826105b1366004612af5565b610f70565b3480156105c257600080fd5b506006546104ff906001600160a01b031681565b3480156105e257600080fd5b5061054860145481565b3480156105f857600080fd5b50610548610fb8565b34801561060d57600080fd5b5061048261061c36600461295c565b610fe2565b34801561062d57600080fd5b50600354610548565b34801561064257600080fd5b506025546104cf9060ff1681565b34801561065c57600080fd5b5061054860105481565b34801561067257600080fd5b506104cf610681366004612a45565b61102e565b34801561069257600080fd5b506104826106a1366004612b10565b611064565b3480156106b257600080fd5b5061054860235481565b3480156106c857600080fd5b506104cf6106d736600461295c565b600c6020526000908152604090205460ff1681565b3480156106f857600080fd5b5061054860245481565b34801561070e57600080fd5b506029546104cf90600160a81b900460ff1681565b34801561072f57600080fd5b5061048261073e36600461295c565b611093565b34801561074f57600080fd5b506104cf61075e36600461295c565b60096020526000908152604090205460ff1681565b34801561077f57600080fd5b5061054860275481565b34801561079557600080fd5b5061054860265481565b3480156107ab57600080fd5b5042610548565b3480156107be57600080fd5b5061054860155481565b3480156107d457600080fd5b5061054860165481565b3480156107ea57600080fd5b506105486107f936600461295c565b6110df565b34801561080a57600080fd5b50610548601e5481565b34801561082057600080fd5b50610548601f5481565b34801561083657600080fd5b50610548601a5481565b34801561084c57600080fd5b5061048261085b366004612a10565b611187565b34801561086c57600080fd5b5061054860115481565b34801561088257600080fd5b506104cf61089136600461295c565b600b6020526000908152604090205460ff1681565b3480156108b257600080fd5b506000546001600160a01b03166104ff565b3480156108d057600080fd5b506104826111dc565b3480156108e557600080fd5b50610499611250565b3480156108fa57600080fd5b50610548601c5481565b34801561091057600080fd5b50602054610548565b34801561092557600080fd5b5061054860185481565b34801561093b57600080fd5b506104cf61094a366004612a45565b61125f565b34801561095b57600080fd5b5061048261096a366004612af5565b6112ae565b34801561097b57600080fd5b5061054860175481565b34801561099157600080fd5b506104cf6109a0366004612a45565b6112f6565b3480156109b157600080fd5b506000546104ff906001600160a01b031681565b3480156109d157600080fd5b506104826109e0366004612b10565b611303565b3480156109f157600080fd5b50610482610a00366004612b29565b611332565b348015610a1157600080fd5b50610548600f5481565b348015610a2757600080fd5b50610482610a36366004612a71565b611387565b348015610a4757600080fd5b50610482610a56366004612af5565b611428565b348015610a6757600080fd5b50610548600e5481565b348015610a7d57600080fd5b50610482610a8c366004612b10565b6114aa565b348015610a9d57600080fd5b506029546104ff906001600160a01b031681565b348015610abd57600080fd5b5061054860125481565b348015610ad357600080fd5b506104cf610ae236600461295c565b600a6020526000908152604090205460ff1681565b348015610b0357600080fd5b506025546104cf90610100900460ff1681565b348015610b2257600080fd5b5061054860135481565b348015610b3857600080fd5b506004546104ff906001600160a01b031681565b348015610b5857600080fd5b5061054860001981565b348015610b6e57600080fd5b506029546104cf90600160b01b900460ff1681565b348015610b8f57600080fd5b50610548600d5481565b348015610ba557600080fd5b50610548610bb4366004612996565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610beb57600080fd5b5061054860215481565b348015610c0157600080fd5b50610482610c10366004612b83565b6114d9565b348015610c2157600080fd5b50610482610c30366004612b10565b611580565b348015610c4157600080fd5b50610482610c50366004612af5565b6115f5565b348015610c6157600080fd5b50610482610c70366004612b83565b611632565b348015610c8157600080fd5b50610482610c90366004612b10565b611692565b348015610ca157600080fd5b50610482610cb0366004612a10565b6116c1565b348015610cc157600080fd5b5061054860195481565b348015610cd757600080fd5b50610482610ce6366004612a71565b611716565b348015610cf757600080fd5b50610482610d06366004612b10565b6117b1565b348015610d1757600080fd5b50610482610d2636600461295c565b6117e0565b348015610d3757600080fd5b50610482610d46366004612a10565b6118ca565b348015610d5757600080fd5b506029546104cf90600160b81b900460ff1681565b348015610d7857600080fd5b50610548601b5481565b6000546001600160a01b03163314610db55760405162461bcd60e51b8152600401610dac90612c4e565b60405180910390fd5b60265415610df75760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610dac565b436026556025805460ff19169055565b606060018054610e1690612d50565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4290612d50565b8015610e8f5780601f10610e6457610100808354040283529160200191610e8f565b820191906000526020600020905b815481529060010190602001808311610e7257829003601f168201915b5050505050905090565b6000610ea633848461197e565b5060015b92915050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610f12848484611aa2565b50610f658433610f6085604051806060016040528060288152602001612deb602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190611fd6565b61197e565b5060015b9392505050565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610dac90612c4e565b60298054911515600160b81b0260ff60b81b19909216919091179055565b600654600090610fdd90610fd4906001600160a01b03166110df565b601d5490612010565b905090565b6000546001600160a01b0316331461100c5760405162461bcd60e51b8152600401610dac90612c4e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610ea6918590610f60908661191f565b6000546001600160a01b0316331461108e5760405162461bcd60e51b8152600401610dac90612c4e565b602055565b6000546001600160a01b031633146110bd5760405162461bcd60e51b8152600401610dac90612c4e565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6029546000906001600160a01b03838116911614801561110957506029546001600160a01b031633145b8015611117575060255460ff165b1561116b576029546001600160a01b031660009081526007602052604090205461116b5760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610dac565b506001600160a01b031660009081526007602052604090205490565b6000546001600160a01b031633146111b15760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112065760405162461bcd60e51b8152600401610dac90612c4e565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610e1690612d50565b6000610ea63384610f6085604051806060016040528060258152602001612e33602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190611fd6565b6000546001600160a01b031633146112d85760405162461bcd60e51b8152600401610dac90612c4e565b60298054911515600160b01b0260ff60b01b19909216919091179055565b6000610f65338484611aa2565b6000546001600160a01b0316331461132d5760405162461bcd60e51b8152600401610dac90612c4e565b601c55565b6000546001600160a01b0316331461135c5760405162461bcd60e51b8152600401610dac90612c4e565b60158390556016829055601781905561137f81611379858561191f565b9061191f565b601855505050565b6000546001600160a01b031633146113b15760405162461bcd60e51b8152600401610dac90612c4e565b60005b828110156114225781600960008686858181106113d3576113d3612dbc565b90506020020160208101906113e8919061295c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061141a81612d8b565b9150506113b4565b50505050565b6000546001600160a01b031633146114525760405162461bcd60e51b8152600401610dac90612c4e565b60298054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061149f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114d45760405162461bcd60e51b8152600401610dac90612c4e565b602455565b6000546001600160a01b031633146115035760405162461bcd60e51b8152600401610dac90612c4e565b600d849055600e839055600f8290556010819055611527816113798481888861191f565b601955601154600d546115399161191f565b601555601254600e5461154b9161191f565b601655601354600f5461155d9161191f565b60178190556016546015546115779291611379919061191f565b60185550505050565b6000546001600160a01b031633146115aa5760405162461bcd60e51b8152600401610dac90612c4e565b60038111156115f05760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610dac565b602155565b6000546001600160a01b0316331461161f5760405162461bcd60e51b8152600401610dac90612c4e565b6025805460ff1916911515919091179055565b6000546001600160a01b0316331461165c5760405162461bcd60e51b8152600401610dac90612c4e565b6011849055601283905560138290556014819055611680816113798481888861191f565b601a55601154600d546115399161191f565b6000546001600160a01b031633146116bc5760405162461bcd60e51b8152600401610dac90612c4e565b601e55565b6000546001600160a01b031633146116eb5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117405760405162461bcd60e51b8152600401610dac90612c4e565b60005b828110156114225781600b600086868581811061176257611762612dbc565b9050602002016020810190611777919061295c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117a981612d8b565b915050611743565b6000546001600160a01b031633146117db5760405162461bcd60e51b8152600401610dac90612c4e565b601f55565b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dac565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118f45760405162461bcd60e51b8152600401610dac90612c4e565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60008061192c8385612ce0565b905083811015610f695760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610dac565b6001600160a01b0383166119e05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dac565b6001600160a01b038216611a415760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dac565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b085760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610dac565b6001600160a01b038316611b6a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610dac565b60008211611bcc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610dac565b6029546001600160a01b038481169116148015611bfb5750602954611bf9906001600160a01b03166110df565b155b15611c0557436023555b6029546001600160a01b038581169116148015611c305750602454602354611c2d9190612ce0565b43105b15611c5457602254611c4d9085906001600160a01b031684612052565b9050610f69565b602954600160a01b900460ff1615611c7157611c4d848484612052565b6001600160a01b0384166000908152600c602052604090205460ff1680611cb057506001600160a01b0383166000908152600c602052604090205460ff165b15611d1d576001600160a01b03841660009081526009602052604090205460ff16158015611cf757506001600160a01b03831660009081526009602052604090205460ff16155b15611d1d57602554610100900460ff168015611d135750602654155b15611d1d57600080fd5b6001600160a01b0384166000908152600b602052604090205460ff16158015611d5f57506001600160a01b0383166000908152600b602052604090205460ff16155b15611dc757601e54821115611dc75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610dac565b6000611dd2306110df565b60205490915081108015908190611df35750602954600160a01b900460ff16155b8015611e1857506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e2d5750602954600160a81b900460ff165b15611e5357602954600160b01b900460ff1615611e4a5760205491505b611e5382612126565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611ea5918690611fd6565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611ef257506001600160a01b03861660009081526009602052604090205460ff165b611f0657611f0187878761225c565b611f08565b845b602954909150600160b81b900460ff168015611f3d57506001600160a01b0386166000908152600a602052604090205460ff16155b15611f5d57601f54611f5282611379896110df565b1115611f5d57600080fd5b6001600160a01b038616600090815260076020526040902054611f80908261191f565b6001600160a01b038088166000818152600760205260409081902093909355915190891690600080516020612e1383398151915290611fc29085815260200190565b60405180910390a360019350505050610f69565b60008184841115611ffa5760405162461bcd60e51b8152600401610dac9190612bf9565b5060006120078486612d39565b95945050505050565b6000610f6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fd6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546120a3918490611fd6565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546120d2908361191f565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612e13833981519152906121149086815260200190565b60405180910390a35060019392505050565b6029805460ff60a01b1916600160a01b17905560185460155460009161215c916002916121569182908790612522565b906125a1565b9050600061216a8383612010565b9050612175816125e3565b60155447906000906121959061218c9060026125a1565b60185490612010565b905060006121b76002612156846121566015548861252290919063ffffffff16565b905060006121d4836121566017548761252290919063ffffffff16565b905060006121ec826121e68786612010565b90612010565b9050801561220a5760045461220a906001600160a01b031682612785565b811561222657600554612226906001600160a01b031683612785565b6000831180156122365750600087115b156122455761224587846127c0565b50506029805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c602052604081205481908190819060ff16156122f2576122aa6127106121566122a360105460195461201090919063ffffffff16565b8890612522565b925060006010541180156122c15750601c54601b54105b156122ed576122e16127106121566010548861252290919063ffffffff16565b91506122ed8783612883565b612376565b6001600160a01b0386166000908152600c602052604090205460ff1615612376576123336127106121566122a3601454601a5461201090919063ffffffff16565b9250600060145411801561234a5750601c54601b54105b156123765761236a6127106121566014548861252290919063ffffffff16565b91506123768783612883565b6001600160a01b0387166000908152600c602052604090205460ff16806123b557506001600160a01b0386166000908152600c602052604090205460ff165b156124975760215415612497576000805b60215481101561248457604080516020810183905290810188905242606082015260800160408051601f1981840301815291815281516020928301206001600160a01b0381166000908152600790935291205490925061242790600161191f565b6001600160a01b0380841660008181526007602052604090819020939093559151908b1690600080516020612e138339815191529061246a906001815260200190565b60405180910390a38061247c81612d8b565b9150506123c6565b50602154612493906001612d1a565b9150505b82156124ff57306000908152600760205260409020546124b7908461191f565b30600081815260076020526040908190209290925590516001600160a01b03891690600080516020612e13833981519152906124f69087815260200190565b60405180910390a35b61251761251082611379868661191f565b8690612010565b979650505050505050565b60008261253157506000610eaa565b600061253d8385612d1a565b90508261254a8583612cf8565b14610f695760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610dac565b6000610f6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612919565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061261857612618612dbc565b6001600160a01b03928316602091820292909201810191909152602854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561266c57600080fd5b505afa158015612680573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a49190612979565b816001815181106126b7576126b7612dbc565b6001600160a01b0392831660209182029290920101526028546126dd913091168461197e565b60285460405163791ac94760e01b81526001600160a01b039091169063791ac94790612716908590600090869030904290600401612ca4565b600060405180830381600087803b15801561273057600080fd5b505af1158015612744573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612779929190612c83565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156127bb573d6000803e3d6000fd5b505050565b6028546127d89030906001600160a01b03168461197e565b60285460225460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561284357600080fd5b505af1158015612857573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061287c9190612b55565b5050505050565b601c54601b5410612892575050565b6006546001600160a01b03166000908152600760205260409020546128b7908261191f565b6006546001600160a01b0316600090815260076020526040902055601b546128df908261191f565b601b556006546040518281526001600160a01b0391821691841690600080516020612e138339815191529060200160405180910390a35050565b6000818361293a5760405162461bcd60e51b8152600401610dac9190612bf9565b5060006120078486612cf8565b8035801515811461295757600080fd5b919050565b60006020828403121561296e57600080fd5b8135610f6981612dd2565b60006020828403121561298b57600080fd5b8151610f6981612dd2565b600080604083850312156129a957600080fd5b82356129b481612dd2565b915060208301356129c481612dd2565b809150509250929050565b6000806000606084860312156129e457600080fd5b83356129ef81612dd2565b925060208401356129ff81612dd2565b929592945050506040919091013590565b60008060408385031215612a2357600080fd5b8235612a2e81612dd2565b9150612a3c60208401612947565b90509250929050565b60008060408385031215612a5857600080fd5b8235612a6381612dd2565b946020939093013593505050565b600080600060408486031215612a8657600080fd5b833567ffffffffffffffff80821115612a9e57600080fd5b818601915086601f830112612ab257600080fd5b813581811115612ac157600080fd5b8760208260051b8501011115612ad657600080fd5b602092830195509350612aec9186019050612947565b90509250925092565b600060208284031215612b0757600080fd5b610f6982612947565b600060208284031215612b2257600080fd5b5035919050565b600080600060608486031215612b3e57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215612b6a57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215612b9957600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015612bee5781516001600160a01b031687529582019590820190600101612bc9565b509495945050505050565b600060208083528351808285015260005b81811015612c2657858101830151858201604001528201612c0a565b81811115612c38576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612c9c6040830184612bb5565b949350505050565b85815284602082015260a060408201526000612cc360a0830186612bb5565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612cf357612cf3612da6565b500190565b600082612d1557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612d3457612d34612da6565b500290565b600082821015612d4b57612d4b612da6565b500390565b600181811c90821680612d6457607f821691505b60208210811415612d8557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612d9f57612d9f612da6565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612de757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122050050efe265f22e82275d311300540c8894d71b732000bbf2efb43c3c1f3af8f64736f6c63430008070033

Deployed Bytecode Sourcemap

7225:19619:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14511:172;;;;;;;;;;;;;:::i;:::-;;12556:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13999:161;;;;;;;;;;-1:-1:-1;13999:161:0;;;;;:::i;:::-;;:::i;:::-;;;6259:14:1;;6252:22;6234:41;;6222:2;6207:18;13999:161:0;6094:187:1;7484:40:0;;;;;;;;;;-1:-1:-1;7484:40:0;;;;-1:-1:-1;;;;;7484:40:0;;;;;;-1:-1:-1;;;;;5214:32:1;;;5196:51;;5184:2;5169:18;7484:40:0;5050:203:1;9044:41:0;;;;;;;;;;-1:-1:-1;9044:41:0;;;;-1:-1:-1;;;;;9044:41:0;;;12835:100;;;;;;;;;;-1:-1:-1;12915:12:0;;12835:100;;;6674:25:1;;;6662:2;6647:18;12835:100:0;6520:185:1;17746:135:0;;;;;;;;;;-1:-1:-1;17746:135:0;;;;;:::i;:::-;;:::i;19606:313::-;;;;;;;;;;-1:-1:-1;19606:313:0;;;;;:::i;:::-;;:::i;17625:113::-;;;;;;;;;;-1:-1:-1;17625:113:0;;;;;:::i;:::-;;:::i;7531:71::-;;;;;;;;;;-1:-1:-1;7531:71:0;;;;-1:-1:-1;;;;;7531:71:0;;;8246:34;;;;;;;;;;;;;;;;19067:128;;;;;;;;;;;;;:::i;18281:129::-;;;;;;;;;;-1:-1:-1;18281:129:0;;;;;:::i;:::-;;:::i;12742:85::-;;;;;;;;;;-1:-1:-1;12810:9:0;;12742:85;;8899:27;;;;;;;;;;-1:-1:-1;8899:27:0;;;;;;;;8080:33;;;;;;;;;;;;;;;;13367:218;;;;;;;;;;-1:-1:-1;13367:218:0;;;;;:::i;:::-;;:::i;17999:125::-;;;;;;;;;;-1:-1:-1;17999:125:0;;;;;:::i;:::-;;:::i;8842:20::-;;;;;;;;;;;;;;;;7905:45;;;;;;;;;;-1:-1:-1;7905:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8869:23;;;;;;;;;;;;;;;;9201:40;;;;;;;;;;-1:-1:-1;9201:40:0;;;;-1:-1:-1;;;9201:40:0;;;;;;18134:139;;;;;;;;;;-1:-1:-1;18134:139:0;;;;;:::i;:::-;;:::i;7734:50::-;;;;;;;;;;-1:-1:-1;7734:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9003:30;;;;;;;;;;;;;;;;8966;;;;;;;;;;;;;;;;6197:90;;;;;;;;;;-1:-1:-1;6264:15:0;6197:90;;8289:34;;;;;;;;;;;;;;;;8330;;;;;;;;;;;;;;;;12943:265;;;;;;;;;;-1:-1:-1;12943:265:0;;;;;:::i;:::-;;:::i;8654:27::-;;;;;;;;;;;;;;;;8688:25;;;;;;;;;;;;;;;;8502:37;;;;;;;;;;;;;;;;14786:129;;;;;;;;;;-1:-1:-1;14786:129:0;;;;;:::i;:::-;;:::i;8122:36::-;;;;;;;;;;;;;;;;7850:48;;;;;;;;;;-1:-1:-1;7850:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5578:79;;;;;;;;;;-1:-1:-1;5616:7:0;5643:6;-1:-1:-1;;;;;5643:6:0;5578:79;;5792:145;;;;;;;;;;;;;:::i;12647:87::-;;;;;;;;;;;;;:::i;8580:32::-;;;;;;;;;;;;;;;;13870:121;;;;;;;;;;-1:-1:-1;13959:24:0;;13870:121;;8407:43;;;;;;;;;;;;;;;;13593:269;;;;;;;;;;-1:-1:-1;13593:269:0;;;;;:::i;:::-;;:::i;18691:125::-;;;;;;;;;;-1:-1:-1;18691:125:0;;;;;:::i;:::-;;:::i;8371:29::-;;;;;;;;;;;;;;;;19431:167;;;;;;;;;;-1:-1:-1;19431:167:0;;;;;:::i;:::-;;:::i;5454:21::-;;;;;;;;;;-1:-1:-1;5454:21:0;;;;-1:-1:-1;;;;;5454:21:0;;;15431:111;;;;;;;;;;-1:-1:-1;15431:111:0;;;;;:::i;:::-;;:::i;17140:358::-;;;;;;;;;;-1:-1:-1;17140:358:0;;;;;:::i;:::-;;:::i;8043:30::-;;;;;;;;;;;;;;;;18824:233;;;;;;;;;;-1:-1:-1;18824:233:0;;;;;:::i;:::-;;:::i;18418:171::-;;;;;;;;;;-1:-1:-1;18418:171:0;;;;;:::i;:::-;;:::i;8001:35::-;;;;;;;;;;;;;;;;18597:86;;;;;;;;;;-1:-1:-1;18597:86:0;;;;;:::i;:::-;;:::i;9092:26::-;;;;;;;;;;-1:-1:-1;9092:26:0;;;;-1:-1:-1;;;;;9092:26:0;;;8165:36;;;;;;;;;;;;;;;;7791:52;;;;;;;;;;-1:-1:-1;7791:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8933:26;;;;;;;;;;-1:-1:-1;8933:26:0;;;;;;;;;;;8208:31;;;;;;;;;;;;;;;;7432:45;;;;;;;;;;-1:-1:-1;7432:45:0;;;;-1:-1:-1;;;;;7432:45:0;;;9125:41;;;;;;;;;;-1:-1:-1;9125:41:0;-1:-1:-1;;9125:41:0;;9248:45;;;;;;;;;;-1:-1:-1;9248:45:0;;;;-1:-1:-1;;;9248:45:0;;;;;;7959:35;;;;;;;;;;;;;;;;13216:143;;;;;;;;;;-1:-1:-1;13216:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;13324:18:0;;;13297:7;13324:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13216:143;8771:27;;;;;;;;;;;;;;;;15550:696;;;;;;;;;;-1:-1:-1;15550:696:0;;;;;:::i;:::-;;:::i;16254:157::-;;;;;;;;;;-1:-1:-1;16254:157:0;;;;;:::i;:::-;;:::i;14691:83::-;;;;;;;;;;-1:-1:-1;14691:83:0;;;;;:::i;:::-;;:::i;16419:713::-;;;;;;;;;;-1:-1:-1;16419:713:0;;;;;:::i;:::-;;:::i;17506:111::-;;;;;;;;;;-1:-1:-1;17506:111:0;;;;;:::i;:::-;;:::i;15288:135::-;;;;;;;;;;-1:-1:-1;15288:135:0;;;;;:::i;:::-;;:::i;8459:36::-;;;;;;;;;;;;;;;;15058:222;;;;;;;;;;-1:-1:-1;15058:222:0;;;;;:::i;:::-;;:::i;17889:102::-;;;;;;;;;;-1:-1:-1;17889:102:0;;;;;:::i;:::-;;:::i;5945:244::-;;;;;;;;;;-1:-1:-1;5945:244:0;;;;;:::i;:::-;;:::i;14923:127::-;;;;;;;;;;-1:-1:-1;14923:127:0;;;;;:::i;:::-;;:::i;9300:35::-;;;;;;;;;;-1:-1:-1;9300:35:0;;;;-1:-1:-1;;;9300:35:0;;;;;;8548:25;;;;;;;;;;;;;;;;14511:172;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;;;;;;;;;14567:15:::1;::::0;:20;14559:48:::1;;;::::0;-1:-1:-1;;;14559:48:0;;9493:2:1;14559:48:0::1;::::0;::::1;9475:21:1::0;9532:2;9512:18;;;9505:30;-1:-1:-1;;;9551:18:1;;;9544:45;9606:18;;14559:48:0::1;9291:339:1::0;14559:48:0::1;14636:12;14618:15;:30:::0;14659:8:::1;:16:::0;;-1:-1:-1;;14659:16:0::1;::::0;;14511:172::o;12556:83::-;12593:13;12626:5;12619:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12556:83;:::o;13999:161::-;14074:4;14091:39;198:10;14114:7;14123:6;14091:8;:39::i;:::-;-1:-1:-1;14148:4:0;13999:161;;;;;:::o;17746: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;;;;;17837:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17837:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17746:135::o;19606:313::-;19704:4;19721:36;19731:6;19739:9;19750:6;19721:9;:36::i;:::-;-1:-1:-1;19768:121:0;19777:6;198:10;19799:89;19837:6;19799:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19799:19:0;;;;;;:11;:19;;;;;;;;198:10;19799:33;;;;;;;;;;:37;:89::i;:::-;19768:8;:121::i;:::-;-1:-1:-1;19907:4:0;19606:313;;;;;;:::o;17625:113::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17703:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;17703:27:0::1;-1:-1:-1::0;;;;17703:27:0;;::::1;::::0;;;::::1;::::0;;17625:113::o;19067:128::-;19174:11;;19120:7;;19147:40;;19164:22;;-1:-1:-1;;;;;19174:11:0;19164:9;:22::i;:::-;19147:12;;;:16;:40::i;:::-;19140:47;;19067:128;:::o;18281:129::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18363:17:::1;:39:::0;;-1:-1:-1;;;;;;18363:39:0::1;-1:-1:-1::0;;;;;18363:39:0;;;::::1;::::0;;;::::1;::::0;;18281:129::o;13367:218::-;198:10;13455:4;13504:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13504:34:0;;;;;;;;;;13455:4;;13472:83;;13495:7;;13504:50;;13543:10;13504:38;:50::i;17999:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18081:24:::1;:35:::0;17999:125::o;18134:139::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18221:22:::1;:44:::0;;-1:-1:-1;;;;;;18221:44:0::1;-1:-1:-1::0;;;;;18221:44:0;;;::::1;::::0;;;::::1;::::0;;18134:139::o;12943:265::-;13044:11;;13009:7;;-1:-1:-1;;;;;13033:22:0;;;13044:11;;13033:22;:51;;;;-1:-1:-1;13073:11:0;;-1:-1:-1;;;;;13073:11:0;13059:10;:25;13033:51;:63;;;;-1:-1:-1;13088:8:0;;;;13033:63;13029:136;;;13127:11;;-1:-1:-1;;;;;13127:11:0;13142:1;13117:22;;;:9;:22;;;;;;13109:44;;;;-1:-1:-1;;;13109:44:0;;12168:2:1;13109:44:0;;;12150:21:1;12207:1;12187:18;;;12180:29;-1:-1:-1;;;12225:18:1;;;12218:35;12270:18;;13109:44:0;11966:328:1;13109:44:0;-1:-1:-1;;;;;;13182:18:0;;;;;:9;:18;;;;;;;12943:265::o;14786: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;;;;;14875:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;14875:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14786: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;12647:87::-;12686:13;12719:7;12712:14;;;;;:::i;13593:269::-;13686:4;13703:129;198:10;13726:7;13735:96;13774:15;13735:96;;;;;;;;;;;;;;;;;198:10;13735:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13735:34:0;;;;;;;;;;;;:38;:96::i;18691:125::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18772:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18772:36:0::1;-1:-1:-1::0;;;;18772:36:0;;::::1;::::0;;;::::1;::::0;;18691:125::o;19431:167::-;19509:4;19526:42;198:10;19550:9;19561:6;19526:9;:42::i;15431:111::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15504:17:::1;:30:::0;15431:111::o;17140:358::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17281:15:::1;:35:::0;;;17327:15:::1;:35:::0;;;17373:10:::1;:25:::0;;;17438:52:::1;17386:12:::0;17438:36:::1;17299:17:::0;17345;17438:19:::1;:36::i;:::-;:40:::0;::::1;:52::i;:::-;17411:24;:79:::0;-1:-1:-1;;;17140:358:0:o;18824:233::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18941:9:::1;18937:113;18956:19:::0;;::::1;18937:113;;;19030:8;18997:17;:30;19015:8;;19024:1;19015:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18997:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18997:30:0;:41;;-1:-1:-1;;18997:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18977:3;::::1;::::0;::::1;:::i;:::-;;;;18937:113;;;;18824:233:::0;;;:::o;18418:171::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18495:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18495:32:0::1;-1:-1:-1::0;;;;18495:32:0;;::::1;;::::0;;18543:38:::1;::::0;::::1;::::0;::::1;::::0;18519:8;6259:14:1;6252:22;6234:41;;6222:2;6207:18;;6094:187;18543:38:0::1;;;;;;;;18418:171:::0;:::o;18597:86::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;18660:4:::1;:15:::0;18597:86::o;15550:696::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15696:16:::1;:34:::0;;;15741:16:::1;:34:::0;;;15786:11:::1;:24:::0;;;15821:14:::1;:30:::0;;;15882:75:::1;15838:13:::0;15882:55:::1;15800:10:::0;15882:55;15715:15;15760;15882:20:::1;:38::i;:75::-;15862:17;:95:::0;16009:17:::1;::::0;15988:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;:::-;15970:15;:57:::0;16077:17:::1;::::0;16056:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;:::-;16038:15;:57:::0;16135:12:::1;::::0;16119:11:::1;::::0;:29:::1;::::0;:15:::1;:29::i;:::-;16106:10;:42:::0;;;16206:15:::1;::::0;16186::::1;::::0;:52:::1;::::0;16106:42;16186:36:::1;::::0;:15;:19:::1;:36::i;:52::-;16159:24;:79:::0;-1:-1:-1;;;;15550:696:0:o;16254:157::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16345:1:::1;16333:8;:13;;16325:44;;;::::0;-1:-1:-1;;;16325:44:0;;11416:2:1;16325:44:0::1;::::0;::::1;11398:21:1::0;11455:2;11435:18;;;11428:30;-1:-1:-1;;;11474:18:1;;;11467:48;11532:18;;16325:44:0::1;11214:342:1::0;16325:44:0::1;16380:12;:23:::0;16254:157::o;14691:83::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;14754:8:::1;:12:::0;;-1:-1:-1;;14754:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14691:83::o;16419:713::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;16565:17:::1;:35:::0;;;16611:17:::1;:35:::0;;;16657:12:::1;:25:::0;;;16693:15:::1;:31:::0;;;16756:79:::1;16711:13:::0;16756:58:::1;16672:10:::0;16756:58;16585:15;16631;16756:21:::1;:40::i;:79::-;16735:18;:100:::0;16895:17:::1;::::0;16874:16:::1;::::0;:39:::1;::::0;:20:::1;:39::i;17506:111::-:0;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17583:12:::1;:26:::0;17506:111::o;15288: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;;;;;15378:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;15378:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15288:135::o;15058:222::-;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;15166:9:::1;15162:111;15181:19:::0;;::::1;15162:111;;;15253:8;15222:15;:28;15238:8;;15247:1;15238:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15222:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15222:28:0;:39;;-1:-1:-1;;15222:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15202:3;::::1;::::0;::::1;:::i;:::-;;;;15162:111;;17889:102:::0;5705:6;;-1:-1:-1;;;;;5705:6:0;198:10;5705:22;5697:67;;;;-1:-1:-1;;;5697:67:0;;;;;;;:::i;:::-;17961:10:::1;:22:::0;17889: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;;7918:2:1;6026:73:0::1;::::0;::::1;7900:21:1::0;7957:2;7937:18;;;7930:30;7996:34;7976:18;;;7969:62;-1:-1:-1;;;8047:18:1;;;8040:36;8093:19;;6026:73:0::1;7716: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;14923: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;;;;;15010:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15010:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14923: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;;8728:2:1;1297:46:0;;;8710:21:1;8767:2;8747:18;;;8740:30;8806:29;8786:18;;;8779:57;8853:18;;1297:46:0;8526:351:1;14168:337:0;-1:-1:-1;;;;;14261:19:0;;14253:68;;;;-1:-1:-1;;;14253:68:0;;11763:2:1;14253:68:0;;;11745:21:1;11802:2;11782:18;;;11775:30;11841:34;11821:18;;;11814:62;-1:-1:-1;;;11892:18:1;;;11885:34;11936:19;;14253:68:0;11561:400:1;14253:68:0;-1:-1:-1;;;;;14340:21:0;;14332:68;;;;-1:-1:-1;;;14332:68:0;;8325:2:1;14332:68:0;;;8307:21:1;8364:2;8344:18;;;8337:30;8403:34;8383:18;;;8376:62;-1:-1:-1;;;8454:18:1;;;8447:32;8496:19;;14332:68:0;8123:398:1;14332:68:0;-1:-1:-1;;;;;14413:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14465:32;;6674:25:1;;;14465:32:0;;6647:18:1;14465:32:0;;;;;;;14168:337;;;:::o;19927:2341::-;20014:4;-1:-1:-1;;;;;20041:20:0;;20033:70;;;;-1:-1:-1;;;20033:70:0;;11010:2:1;20033:70:0;;;10992:21:1;11049:2;11029:18;;;11022:30;11088:34;11068:18;;;11061:62;-1:-1:-1;;;11139:18:1;;;11132:35;11184:19;;20033:70:0;10808:401:1;20033:70:0;-1:-1:-1;;;;;20122:23:0;;20114:71;;;;-1:-1:-1;;;20114:71:0;;7514:2:1;20114: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;;20114:71:0;7312:399:1;20114:71:0;20213:1;20204:6;:10;20196:64;;;;-1:-1:-1;;;20196:64:0;;10600:2:1;20196:64:0;;;10582:21:1;10639:2;10619:18;;;10612:30;10678:34;10658:18;;;10651:62;-1:-1:-1;;;10729:18:1;;;10722:39;10778:19;;20196:64:0;10398:405:1;20196:64:0;20289:11;;-1:-1:-1;;;;;20276:24:0;;;20289:11;;20276:24;:64;;;;-1:-1:-1;20322:11:0;;20304:31;;-1:-1:-1;;;;;20322:11:0;20304:9;:31::i;:::-;:36;20276:64;20273:115;;;20364:12;20356:5;:20;20273:115;20411:11;;-1:-1:-1;;;;;20401:21:0;;;20411:11;;20401:21;:52;;;;;20449:4;;20441:5;;:12;;;;:::i;:::-;20426;:27;20401:52;20398:136;;;20499:14;;20476:46;;20491:6;;-1:-1:-1;;;;;20499:14:0;20515:6;20476:14;:46::i;:::-;20469:53;;;;20398:136;20547:16;;-1:-1:-1;;;20547:16:0;;;;20544:1717;;;20596:41;20611:6;20619:9;20630:6;20596:14;:41::i;20544:1717::-;-1:-1:-1;;;;;20693:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;20717:23:0;;;;;;:12;:23;;;;;;;;20693:47;20689:303;;;-1:-1:-1;;;;;20766:25:0;;;;;;:17;:25;;;;;;;;20765:26;:59;;;;-1:-1:-1;;;;;;20796:28:0;;;;;;:17;:28;;;;;;;;20795:29;20765:59;20761:216;;;20853:14;;;;;;;:38;;;;-1:-1:-1;20876:15:0;;20871:20;20853:38;20849:109;;;20920:14;;;;-1:-1:-1;;;;;21010:23:0;;;;;;:15;:23;;;;;;;;21009:24;:55;;;;-1:-1:-1;;;;;;21038:26:0;;;;;;:15;:26;;;;;;;;21037:27;21009:55;21006:170;;;21103:12;;21093:6;:22;;21085:75;;;;-1:-1:-1;;;21085:75:0;;9084:2:1;21085:75:0;;;9066:21:1;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;-1:-1:-1;;;9213:18:1;;;9206:38;9261:19;;21085:75:0;8882:404:1;21085:75:0;21192:28;21223:24;21241:4;21223:9;:24::i;:::-;21317;;21192:55;;-1:-1:-1;21293:48:0;;;;;;;21362:44;;-1:-1:-1;21390:16:0;;-1:-1:-1;;;21390:16:0;;;;21389:17;21362:44;:69;;;;-1:-1:-1;;;;;;21411:20:0;;;;;;:12;:20;;;;;;;;21410:21;21362:69;:94;;;;-1:-1:-1;21435:21:0;;-1:-1:-1;;;21435:21:0;;;;21362:94;21358:301;;;21493:25;;-1:-1:-1;;;21493:25:0;;;;21490:98;;;21564:24;;21541:47;;21490:98;21607:36;21622:20;21607:14;:36::i;:::-;21695:53;;;;;;;;;;;-1:-1:-1;;;21695:53:0;;;;;;;;-1:-1:-1;;;;;21695:17:0;;-1:-1:-1;21695:17:0;;;:9;:17;;;;;;;;:53;;21717:6;;21695:21;:53::i;:::-;-1:-1:-1;;;;;21675:17:0;;;;;;:9;:17;;;;;;;;:73;;;;21788:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;21817:28:0;;;;;;:17;:28;;;;;;;;21788:57;21787:147;;21900:34;21908:6;21916:9;21927:6;21900:7;:34::i;:::-;21787:147;;;21891:6;21787:147;21954:16;;21765:169;;-1:-1:-1;;;;21954:16:0;;;;:51;;;;-1:-1:-1;;;;;;21975:30:0;;;;;;:19;:30;;;;;;;;21974:31;21954:51;21951:133;;;22073:10;;22032:37;22057:11;22032:20;22042:9;22032;:20::i;:37::-;:51;;22024:60;;;;;;-1:-1:-1;;;;;22124:20:0;;;;;;:9;:20;;;;;;:37;;22149:11;22124:24;:37::i;:::-;-1:-1:-1;;;;;22101:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22183:40;;;;;;-1:-1:-1;;;;;;;;;;;22183:40:0;;;22211:11;6674:25:1;;6662:2;6647:18;;6520:185;22183:40:0;;;;;;;;22245:4;22238: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;22276:330::-;22406:53;;;;;;;;;;;-1:-1:-1;;;22406:53:0;;;;;;;;-1:-1:-1;;;;;22406:17:0;;22369:4;22406:17;;;:9;:17;;;;;;;:53;;22428:6;;22406:21;:53::i;:::-;-1:-1:-1;;;;;22386:17:0;;;;;;;:9;:17;;;;;;:73;;;;22493:20;;;;;;;:32;;22518:6;22493:24;:32::i;:::-;-1:-1:-1;;;;;22470:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22541:35;;;;;;-1:-1:-1;;;;;;;;;;;22541:35:0;;;22569:6;6674:25:1;;6662:2;6647:18;;6520:185;22541:35:0;;;;;;;;-1:-1:-1;22594:4:0;22276:330;;;;;:::o;22614:1032::-;9746:16;:23;;-1:-1:-1;;;;9746:23:0;-1:-1:-1;;;9746:23:0;;;22743:24:::1;::::0;22722:15:::1;::::0;9746:23;;22710:65:::1;::::0;22773:1:::1;::::0;22710:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;22688:87:::0;-1:-1:-1;22786:21:0::1;22810:24;:7:::0;22688:87;22810:11:::1;:24::i;:::-;22786:48;;22847:31;22864:13;22847:16;:31::i;:::-;22999:15;::::0;22914:21:::1;::::0;22889:22:::1;::::0;22970:52:::1;::::0;22999:22:::1;::::0;23019:1:::1;22999:19;:22::i;:::-;22970:24;::::0;;:28:::1;:52::i;:::-;22948:74;;23035:26;23064:59;23121:1;23064:52;23104:11;23064:35;23083:15;;23064:14;:18;;:35;;;;:::i;:59::-;23035:88;;23134:21;23158:47;23193:11;23158:30;23177:10;;23158:14;:18;;:30;;;;:::i;:47::-;23134:71:::0;-1:-1:-1;23216:26:0::1;23245:57;23134:71:::0;23245:38:::1;:14:::0;23264:18;23245::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;23216:86:::0;-1:-1:-1;23318:22:0;;23315:104:::1;;23376:22;::::0;23355:64:::1;::::0;-1:-1:-1;;;;;23376:22:0::1;23400:18:::0;23355:20:::1;:64::i;:::-;23435:17:::0;;23432:89:::1;;23488:17;::::0;23467:54:::1;::::0;-1:-1:-1;;;;;23488:17:0::1;23507:13:::0;23467:20:::1;:54::i;:::-;23558:1;23537:18;:22;:41;;;;;23577:1;23563:11;:15;23537:41;23534:104;;;23593:45;23606:11;23619:18;23593:12;:45::i;:::-;-1:-1:-1::0;;9792:16:0;:24;;-1:-1:-1;;;;9792:24:0;;;-1:-1:-1;;;;;;22614:1032:0:o;24848:1662::-;-1:-1:-1;;;;;25060:20:0;;24934:7;25060:20;;;:12;:20;;;;;;24934:7;;;;;;25060:20;;25057:678;;;25109:60;25163:5;25109:49;25120:37;25142:14;;25120:17;;:21;;:37;;;;:::i;:::-;25109:6;;:10;:49::i;:60::-;25097:72;;25204:1;25187:14;;:18;:52;;;;;25222:17;;25209:10;;:30;25187:52;25184:190;;;25273:37;25304:5;25273:26;25284:14;;25273:6;:10;;:26;;;;:::i;:37::-;25260:50;;25329:29;25340:6;25347:10;25329;:29::i;:::-;25057:678;;;-1:-1:-1;;;;;25403:23:0;;;;;;:12;:23;;;;;;;;25400:335;;;25455:62;25511:5;25455:51;25466:39;25489:15;;25466:18;;:22;;:39;;;;:::i;25455:62::-;25443:74;;25553:1;25535:15;;:19;:53;;;;;25571:17;;25558:10;;:30;25535:53;25532:192;;;25622:38;25654:5;25622:27;25633:15;;25622:6;:10;;:27;;;;:::i;:38::-;25609:51;;25679:29;25690:6;25697:10;25679;:29::i;:::-;-1:-1:-1;;;;;25750:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;25774:23:0;;;;;;:12;:23;;;;;;;;25750:47;25747:495;;;25817:12;;:16;25813:418;;25853:10;;25882:283;25906:12;;25902:1;:16;25882:283;;;25987:44;;;;;;4918:19:1;;;4953:12;;;4946:28;;;26015:15:0;4990:12:1;;;4983:28;5027:12;;25987:44:0;;;-1:-1:-1;;25987:44:0;;;;;;;;;25977:55;;25987:44;25977:55;;;;-1:-1:-1;;;;;26074:13:0;;25969:64;26074:13;;;:9;:13;;;;;;25977:55;;-1:-1:-1;26074:20:0;;26092:1;26074:17;:20::i;:::-;-1:-1:-1;;;;;26058:13:0;;;;;;;:9;:13;;;;;;;:36;;;;26122:23;;;;;;-1:-1:-1;;;;;;;;;;;26122:23:0;;;26143:1;6674:25:1;;6662:2;6647:18;;6520:185;26122:23:0;;;;;;;;25920:3;;;;:::i;:::-;;;;25882:283;;;-1:-1:-1;26199:12:0;;:16;;26214:1;26199:16;:::i;:::-;26183:32;;25834:397;25813:418;26257:13;;26254:173;;26332:4;26314:24;;;;:9;:24;;;;;;:39;;26343:9;26314:28;:39::i;:::-;26305:4;26287:24;;;;:9;:24;;;;;;;:66;;;;26373:42;;-1:-1:-1;;;;;26373:42:0;;;-1:-1:-1;;;;;;;;;;;26373:42:0;;;26405:9;6674:25:1;;6662:2;6647:18;;6520:185;26373:42:0;;;;;;;;26254:173;26446:56;26457:44;26487:13;26457:25;:9;26471:10;26457:13;:25::i;:44::-;26446:6;;:10;:56::i;:::-;26439:63;24848:1662;-1:-1:-1;;;;;;;24848: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;;9837:2:1;1889:56:0;;;9819:21:1;9876:2;9856:18;;;9849:30;9915:34;9895:18;;;9888:62;-1:-1:-1;;;9966:18:1;;;9959:31;10007:19;;1889:56:0;9635:397:1;1982:132:0;2040:7;2067:39;2071:1;2074;2067:39;;;;;;;;;;;;;;;;;:3;:39::i;23654:658::-;23804:16;;;23818:1;23804:16;;;;;;;;23780:21;;23804:16;;;;;;;;;;-1:-1:-1;23804:16:0;23780:40;;23849:4;23831;23836:1;23831:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23831:23:0;;;:7;;;;;;;;;;:23;;;;23875:15;;:22;;;-1:-1:-1;;;23875:22:0;;;;:15;;;;;:20;;:22;;;;;23831:7;;23875:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23865:4;23870:1;23865:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23865:32:0;;;:7;;;;;;;;;:32;23942:15;;23910:62;;23927:4;;23942:15;23960:11;23910:8;:62::i;:::-;24011:15;;:240;;-1:-1:-1;;;24011:240:0;;-1:-1:-1;;;;;24011:15:0;;;;:66;;:240;;24092:11;;24011:15;;24162:4;;24189;;24225:15;;24011:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24269:35;24286:11;24299:4;24269:35;;;;;;;:::i;:::-;;;;;;;;23709:603;23654:658;:::o;19203:126::-;19295:26;;-1:-1:-1;;;;;19295:18:0;;;:26;;;;;19314:6;;19295:26;;;;19314:6;19295:18;:26;;;;;;;;;;;;;;;;;;;;;19203:126;;:::o;24320:520::-;24500:15;;24468:62;;24485:4;;-1:-1:-1;;;;;24500:15:0;24518:11;24468:8;:62::i;:::-;24573:15;;24777:14;;24573:259;;-1:-1:-1;;;24573:259:0;;24645:4;24573:259;;;5823:34:1;5873:18;;;5866:34;;;24573:15:0;5916:18:1;;;5909:34;;;5959:18;;;5952:34;-1:-1:-1;;;;;24777:14:0;;;6002:19:1;;;5995:44;24806:15:0;6055:19:1;;;6048:35;24573:15:0;;;:31;;24612:9;;5757:19:1;;24573:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24320:520;;:::o;26518:321::-;26632:17;;26618:10;;:31;26615:43;;26518:321;;:::o;26615:43::-;26705:11;;-1:-1:-1;;;;;26705:11:0;26695:22;;;;:9;:22;;;;;;:35;;26722:7;26695:26;:35::i;:::-;26680:11;;-1:-1:-1;;;;;26680:11:0;26670:22;;;;:9;:22;;;;;:60;26754:10;;:23;;26769:7;26754:14;:23::i;:::-;26741:10;:36;26810:11;;26793:38;;6674:25:1;;;-1:-1:-1;;;;;26810:11:0;;;;26793:38;;;-1:-1:-1;;;;;;;;;;;26793:38:0;6662:2:1;6647:18;26793:38:0;;;;;;;26518: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;10037:356::-;10239:2;10221:21;;;10258:18;;;10251:30;10317:34;10312:2;10297:18;;10290:62;10384:2;10369:18;;10037:356::o;12481:332::-;12688:6;12677:9;12670:25;12731:2;12726;12715:9;12711:18;12704:30;12651:4;12751:56;12803:2;12792:9;12788:18;12780:6;12751:56;:::i;:::-;12743:64;12481:332;-1:-1:-1;;;;12481:332:1:o;12818:582::-;13117:6;13106:9;13099:25;13160:6;13155:2;13144:9;13140:18;13133:34;13203:3;13198:2;13187:9;13183:18;13176:31;13080:4;13224:57;13276:3;13265:9;13261:19;13253:6;13224:57;:::i;:::-;-1:-1:-1;;;;;13317:32:1;;;;13312:2;13297:18;;13290:60;-1:-1:-1;13381:3:1;13366:19;13359:35;13216:65;12818:582;-1:-1:-1;;;12818:582:1:o;13405:128::-;13445:3;13476:1;13472:6;13469:1;13466:13;13463:39;;;13482:18;;:::i;:::-;-1:-1:-1;13518:9:1;;13405:128::o;13538:217::-;13578:1;13604;13594:132;;13648:10;13643:3;13639:20;13636:1;13629:31;13683:4;13680:1;13673:15;13711:4;13708:1;13701:15;13594:132;-1:-1:-1;13740:9:1;;13538:217::o;13760:168::-;13800:7;13866:1;13862;13858:6;13854:14;13851:1;13848:21;13843:1;13836:9;13829:17;13825:45;13822:71;;;13873:18;;:::i;:::-;-1:-1:-1;13913:9:1;;13760:168::o;13933:125::-;13973:4;14001:1;13998;13995:8;13992:34;;;14006:18;;:::i;:::-;-1:-1:-1;14043:9:1;;13933:125::o;14063:380::-;14142:1;14138:12;;;;14185;;;14206:61;;14260:4;14252:6;14248:17;14238:27;;14206:61;14313:2;14305:6;14302:14;14282:18;14279:38;14276:161;;;14359:10;14354:3;14350:20;14347:1;14340:31;14394:4;14391:1;14384:15;14422:4;14419:1;14412:15;14276:161;;14063:380;;;:::o;14448:135::-;14487:3;-1:-1:-1;;14508:17:1;;14505:43;;;14528:18;;:::i;:::-;-1:-1:-1;14575:1:1;14564:13;;14448:135::o;14588:127::-;14649:10;14644:3;14640:20;14637:1;14630:31;14680:4;14677:1;14670:15;14704:4;14701:1;14694:15;14720:127;14781:10;14776:3;14772:20;14769:1;14762:31;14812:4;14809:1;14802:15;14836:4;14833:1;14826:15;14984:131;-1:-1:-1;;;;;15059:31:1;;15049:42;;15039:70;;15105:1;15102;15095:12;15039:70;14984:131;:::o

Swarm Source

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