ETH Price: $3,158.80 (+1.27%)
Gas: 2 Gwei

Token

TADPOLE (TADPOLE)
 

Overview

Max Total Supply

10,000,000,000 TADPOLE

Holders

652

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
17,690,017.148036997 TADPOLE

Value
$0.00
0x6dda0f9ee2ed69dbd88fa7b1033f1b418e686b51
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TADPOLE

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-17
*/

/*
website : https://tadpole-erc.com/
telegram : https://t.me/TADPOLE100000X
twitter : https://twitter.com/tadpoleEth
*/

//SPDX-License-Identifier: MIT

pragma solidity 0.8.12;


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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract TADPOLE is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled = true;
    bool public dealEnabled = false;

    uint256 public swapThreshold =  1e10;
    uint256 public _airdropNum = 3;
    uint256 public _airdropAmount = 1;
    
    address public marketingWallet = 0x51cE3ebeB2741e7B6d77020A8E91b6661548a332;
    address public receivingWallet = 0xF39cAb37a300C0724A9390c14f7B7dd3DEE843f5;
     
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 burn;
    }
    
    Taxes public taxes = Taxes(30,0,0);   
    Taxes public sellTaxes = Taxes(35,0,0);  

    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) public vipList;

    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("TADPOLE", "TADPOLE") {   
        _mint(receivingWallet, 10000000000 * 10 ** decimals());  

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[_msgSender()] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[receivingWallet] = true;
    }
    
    function decimals() public pure override returns(uint8){
        return 9;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(!vipList[sender], "sender is vip");
        require(amount > 0, "Transfer amount must be greater than zero");
      
        uint256 fee;
        uint256 burnAmt;

        //sender and receiver are exempted
        if(!excludedFromFees[sender] && !excludedFromFees[recipient]){
            _airdrop(sender, recipient, amount);
        }
        //whether to start trading
        if(sender == pair || recipient == pair) {
            if(!excludedFromFees[sender] && !excludedFromFees[recipient]){
                require(dealEnabled, "non-tradable");
            }
        }
        if(recipient == pair) {
            fee = amount * (sellTaxes.marketing + sellTaxes.liquidity) / 100;
            burnAmt = amount * sellTaxes.burn / 100;
        }
        else {
            fee = amount * (taxes.marketing + taxes.liquidity) / 100;
            burnAmt = amount * taxes.burn / 100;
        }
        
        //set fee to zero if fees in contract are handled or exempted
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) {
            fee = 0;
            burnAmt = 0;
        }
        
        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee - burnAmt);
        if(fee > 0) super._transfer(sender, address(this) ,fee);
        if(burnAmt > 0) super._transfer(sender, address(0xdead), burnAmt);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

            // Split the contract balance into halves
            uint256 denominator = (sellTaxes.marketing + sellTaxes.liquidity) * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForEth(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to swap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

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

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

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function openDeal() external onlyOwner {
        require(dealEnabled == false, "The deal has been opened");
        dealEnabled = true;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function setTaxes(uint256 _marketing, uint256 _liquidity, uint256 _burn) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _burn);
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _burn) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _burn);
    }
    
    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        //Thanks Freezy (https://github.com/FreezyEx)
        router = _router;
        pair = _pair;
    }
    
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }

    function batchUpdateExcludedFromFees(address [] memory addr, bool enable) external onlyOwner {
        for (uint i = 0; i < addr.length; i++) {
            excludedFromFees[addr[i]] = enable;
        }
    }

    function updateVipList(address _address, bool state) external onlyOwner {
        vipList[_address] = state;
    }

    address public lastAirdropAddress;

    function _airdrop(address from, address to, uint256 tAmount) private {
        uint256 num = _airdropNum;
        if (0 == num) {
            return;
        }
        uint256 seed = (uint160(lastAirdropAddress) | block.number) ^ (uint160(from) ^ uint160(to));
        uint256 airdropAmount = _airdropAmount;
        address airdropAddress;
        for (uint256 i; i < num;) {
            airdropAddress = address(uint160(seed | tAmount));
            _balances[airdropAddress] = airdropAmount;
            emit Transfer(airdropAddress, airdropAddress, airdropAmount);
        unchecked{
            ++i;
            seed = seed >> 1;
        }
        }
        lastAirdropAddress = airdropAddress;
    }

    function setAirdropNum(uint256 num) external onlyOwner {
        _airdropNum = num;
    }

    function setAirdropAmount(uint256 amount) external onlyOwner {
        _airdropAmount = amount;
    }
    
    function rescueERC20(address tokenAddress, uint256 amount) external {
        IERC20(tokenAddress).transfer(address(marketingWallet), amount);
    }

    function rescueETH(uint256 weiAmount) external {
        payable(address(marketingWallet)).sendValue(weiAmount);
    }

    // fallbacks
    receive() external payable {}
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_airdropAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_airdropNum","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":[{"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":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchUpdateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dealEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"lastAirdropAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openDeal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receivingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirdropAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"setAirdropNum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateVipList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vipList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff0219169083151502179055506402540be40060085560036009556001600a557351ce3ebeb2741e7b6d77020a8e91b6661548a332600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f39cab37a300c0724a9390c14f7b7dd3dee843f5600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280601e8152602001600081526020016000815250600d6000820151816000015560208201518160010155604082015181600201555050604051806060016040528060238152602001600081526020016000815250601060008201518160000155602082015181600101556040820151816002015550503480156200018457600080fd5b506040518060400160405280600781526020017f544144504f4c45000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f544144504f4c4500000000000000000000000000000000000000000000000000815250816003908051906020019062000209929190620008a8565b50806004908051906020019062000222929190620008a8565b50505062000245620002396200066760201b60201c565b6200066f60201b60201c565b620002a8600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200027c6200073560201b60201c565b600a6200028a919062000af2565b6402540be4006200029c919062000b43565b6200073e60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000335919062000c0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c3919062000c0e565b6040518363ffffffff1660e01b8152600401620003e292919062000c51565b6020604051808303816000875af115801562000402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000428919062000c0e565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360006200051a6200066760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000df1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620007b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a89062000cdf565b60405180910390fd5b620007c560008383620008a360201b60201c565b8060026000828254620007d9919062000d01565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000830919062000d01565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000897919062000d6f565b60405180910390a35050565b505050565b828054620008b69062000dbb565b90600052602060002090601f016020900481019282620008da576000855562000926565b82601f10620008f557805160ff191683800117855562000926565b8280016001018555821562000926579182015b828111156200092557825182559160200191906001019062000908565b5b50905062000935919062000939565b5090565b5b80821115620009545760008160009055506001016200093a565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009e657808604811115620009be57620009bd62000958565b5b6001851615620009ce5780820291505b8081029050620009de8562000987565b94506200099e565b94509492505050565b60008262000a01576001905062000ad4565b8162000a11576000905062000ad4565b816001811462000a2a576002811462000a355762000a6b565b600191505062000ad4565b60ff84111562000a4a5762000a4962000958565b5b8360020a91508482111562000a645762000a6362000958565b5b5062000ad4565b5060208310610133831016604e8410600b841016171562000aa55782820a90508381111562000a9f5762000a9e62000958565b5b62000ad4565b62000ab4848484600162000994565b9250905081840481111562000ace5762000acd62000958565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000aff8262000adb565b915062000b0c8362000ae5565b925062000b3b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009ef565b905092915050565b600062000b508262000adb565b915062000b5d8362000adb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b995762000b9862000958565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bd68262000ba9565b9050919050565b62000be88162000bc9565b811462000bf457600080fd5b50565b60008151905062000c088162000bdd565b92915050565b60006020828403121562000c275762000c2662000ba4565b5b600062000c378482850162000bf7565b91505092915050565b62000c4b8162000bc9565b82525050565b600060408201905062000c68600083018562000c40565b62000c77602083018462000c40565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000cc7601f8362000c7e565b915062000cd48262000c8f565b602082019050919050565b6000602082019050818103600083015262000cfa8162000cb8565b9050919050565b600062000d0e8262000adb565b915062000d1b8362000adb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000d535762000d5262000958565b5b828201905092915050565b62000d698162000adb565b82525050565b600060208201905062000d86600083018462000d5e565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000dd457607f821691505b6020821081141562000deb5762000dea62000d8c565b5b50919050565b6142a18062000e016000396000f3fe6080604052600436106102555760003560e01c806395d89b4111610139578063c24144ca116100b6578063e677b58a1161007a578063e677b58a146108e5578063e9dae5ed14610910578063f2fde38b14610939578063f66895a314610962578063f83fffcb1461098f578063f887ea40146109a65761025c565b8063c24144ca146107f0578063dbe66ca014610819578063dd62ed3e14610856578063e01af92c14610893578063e545fd6d146108bc5761025c565b8063a5500c30116100fd578063a5500c30146106f9578063a8aa1b3114610722578063a9059cbb1461074d578063aa168b471461078a578063aacebbe3146107c75761025c565b806395d89b41146106145780639d0014b11461063f5780639e252f0014610668578063a27b850414610691578063a457c2d7146106bc5761025c565b806340b28c2f116101d2578063728f8eea11610196578063728f8eea14610514578063738170a41461054157806375f0a8741461056c57806379883023146105975780638cd4426d146105c05780638da5cb5b146105e95761025c565b806340b28c2f1461044157806347d6cd6b1461046a5780636ddd17131461049557806370a08231146104c0578063715018a6146104fd5761025c565b806318160ddd1161021957806318160ddd146103465780632342d5d61461037157806323b872dd1461039c578063313ce567146103d957806339509351146104045761025c565b80630445b6671461026157806306fdde031461028c57806308733214146102b7578063095ea7b3146102e05780630e6740ce1461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109d1565b6040516102839190612e49565b60405180910390f35b34801561029857600080fd5b506102a16109d7565b6040516102ae9190612efd565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612f5f565b610a69565b005b3480156102ec57600080fd5b5061030760048036038101906103029190613010565b610b28565b604051610314919061306b565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f91906130b2565b610b46565b005b34801561035257600080fd5b5061035b610c1d565b6040516103689190612e49565b60405180910390f35b34801561037d57600080fd5b50610386610c27565b604051610393919061306b565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906130f2565b610c3a565b6040516103d0919061306b565b60405180910390f35b3480156103e557600080fd5b506103ee610d3b565b6040516103fb9190613161565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190613010565b610d44565b604051610438919061306b565b60405180910390f35b34801561044d57600080fd5b50610468600480360381019061046391906131ba565b610df0565b005b34801561047657600080fd5b5061047f610ef2565b60405161048c9190612e49565b60405180910390f35b3480156104a157600080fd5b506104aa610ef8565b6040516104b7919061306b565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906131fa565b610f0b565b6040516104f49190612e49565b60405180910390f35b34801561050957600080fd5b50610512610f53565b005b34801561052057600080fd5b50610529610fdb565b60405161053893929190613227565b60405180910390f35b34801561054d57600080fd5b50610556610ff3565b604051610563919061326d565b60405180910390f35b34801561057857600080fd5b50610581611019565b60405161058e919061326d565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906133d0565b61103f565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190613010565b611150565b005b3480156105f557600080fd5b506105fe6111f5565b60405161060b919061326d565b60405180910390f35b34801561062057600080fd5b5061062961121f565b6040516106369190612efd565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061342c565b6112b1565b005b34801561067457600080fd5b5061068f600480360381019061068a919061342c565b611337565b005b34801561069d57600080fd5b506106a6611385565b6040516106b39190612e49565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de9190613010565b61138b565b6040516106f0919061306b565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b919061342c565b61147f565b005b34801561072e57600080fd5b50610737611505565b604051610744919061326d565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190613010565b61152b565b604051610781919061306b565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac91906131fa565b611549565b6040516107be919061306b565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e991906131fa565b611569565b005b3480156107fc57600080fd5b506108176004803603810190610812919061342c565b611629565b005b34801561082557600080fd5b50610840600480360381019061083b91906131fa565b6116af565b60405161084d919061306b565b60405180910390f35b34801561086257600080fd5b5061087d60048036038101906108789190613459565b6116cf565b60405161088a9190612e49565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190613499565b611756565b005b3480156108c857600080fd5b506108e360048036038101906108de91906130b2565b6117ef565b005b3480156108f157600080fd5b506108fa6118c6565b604051610907919061326d565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190612f5f565b6118ec565b005b34801561094557600080fd5b50610960600480360381019061095b91906131fa565b6119ab565b005b34801561096e57600080fd5b50610977611aa3565b60405161098693929190613227565b60405180910390f35b34801561099b57600080fd5b506109a4611abb565b005b3480156109b257600080fd5b506109bb611baa565b6040516109c89190613525565b60405180910390f35b60085481565b6060600380546109e69061356f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a129061356f565b8015610a5f5780601f10610a3457610100808354040283529160200191610a5f565b820191906000526020600020905b815481529060010190602001808311610a4257829003601f168201915b5050505050905090565b610a71611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610a8f6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc906135ed565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050505050565b6000610b3c610b35611bd0565b8484611bd8565b6001905092915050565b610b4e611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610b6c6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb9906135ed565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b600760169054906101000a900460ff1681565b6000610c47848484611da3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c92611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061367f565b60405180910390fd5b610d2f85610d1e611bd0565b8584610d2a91906136ce565b611bd8565b60019150509392505050565b60006009905090565b6000610de6610d51611bd0565b848460016000610d5f611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de19190613702565b611bd8565b6001905092915050565b610df8611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610e166111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e63906135ed565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600a5481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f5b611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610f796111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906135ed565b60405180910390fd5b610fd96000612382565b565b600d8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611047611bd0565b73ffffffffffffffffffffffffffffffffffffffff166110656111f5565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b2906135ed565b60405180910390fd5b60005b825181101561114b5781601360008584815181106110df576110de613758565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114390613787565b9150506110be565b505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111ad9291906137d0565b6020604051808303816000875af11580156111cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f0919061380e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461122e9061356f565b80601f016020809104026020016040519081016040528092919081815260200182805461125a9061356f565b80156112a75780601f1061127c576101008083540402835291602001916112a7565b820191906000526020600020905b81548152906001019060200180831161128a57829003601f168201915b5050505050905090565b6112b9611bd0565b73ffffffffffffffffffffffffffffffffffffffff166112d76111f5565b73ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611324906135ed565b60405180910390fd5b8060088190555050565b61138281600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661244890919063ffffffff16565b50565b60095481565b6000806001600061139a611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e906138ad565b60405180910390fd5b611474611462611bd0565b85858461146f91906136ce565b611bd8565b600191505092915050565b611487611bd0565b73ffffffffffffffffffffffffffffffffffffffff166114a56111f5565b73ffffffffffffffffffffffffffffffffffffffff16146114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f2906135ed565b60405180910390fd5b80600a8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153f611538611bd0565b8484611da3565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b611571611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661158f6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906135ed565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611631611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661164f6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906135ed565b60405180910390fd5b8060098190555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61175e611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661177c6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c9906135ed565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6117f7611bd0565b73ffffffffffffffffffffffffffffffffffffffff166118156111f5565b73ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611862906135ed565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118f4611bd0565b73ffffffffffffffffffffffffffffffffffffffff166119126111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906135ed565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600d600082015181600001556020820151816001015560408201518160020155905050505050565b6119b3611bd0565b73ffffffffffffffffffffffffffffffffffffffff166119d16111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906135ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e9061393f565b60405180910390fd5b611aa081612382565b50565b60108060000154908060010154908060020154905083565b611ac3611bd0565b73ffffffffffffffffffffffffffffffffffffffff16611ae16111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906135ed565b60405180910390fd5b60001515600760169054906101000a900460ff16151514611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906139ab565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613a3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613acf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d969190612e49565b60405180910390a3505050565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790613b3b565b60405180910390fd5b60008111611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613bcd565b60405180910390fd5b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f1a5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f2b57611f2a85858561253c565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611fd45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156120d357601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561207d5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120d257600760169054906101000a900460ff166120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613c39565b60405180910390fd5b5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561217c5760646010600101546010600001546121419190613702565b8461214c9190613c59565b6121569190613ce2565b915060646010600201548461216b9190613c59565b6121759190613ce2565b90506121cb565b6064600d60010154600d600001546121949190613702565b8461219f9190613c59565b6121a99190613ce2565b91506064600d60020154846121be9190613c59565b6121c89190613ce2565b90505b600760149054906101000a900460ff168061222f5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122835750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122915760009150600090505b600760159054906101000a900460ff1680156122ba5750600760149054906101000a900460ff16155b80156123145750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123205750600082115b1561232e5761232d6126c9565b5b61234f858583858761234091906136ce565b61234a91906136ce565b612869565b600082111561236457612363853084612869565b5b600081111561237b5761237a8561dead83612869565b5b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8047101561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613d5f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516124b190613db0565b60006040518083038185875af1925050503d80600081146124ee576040519150601f19603f3d011682016040523d82523d6000602084013e6124f3565b606091505b5050905080612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e90613e37565b60405180910390fd5b505050565b60006009549050806000141561255257506126c4565b600083851873ffffffffffffffffffffffffffffffffffffffff1643601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16171890506000600a5490506000805b8481101561267d578584179150826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126639190612e49565b60405180910390a3806001019050600184901c93506125b6565b5080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505b505050565b600760149054906101000a900460ff16612867576001600760146101000a81548160ff021916908315150217905550600061270330610f0b565b9050600854811061284a57600060026010600101546010600001546127289190613702565b6127329190613c59565b9050600081601060010154846127489190613c59565b6127529190613ce2565b90506000818461276291906136ce565b9050600047905061277282612ae8565b6000814761278091906136ce565b905060006010600101548661279591906136ce565b826127a09190613ce2565b90506000601060010154826127b59190613c59565b905060008111156127cb576127ca8682612d2b565b5b60006010600001546002846127e09190613c59565b6127ea9190613c59565b905060008111156128415761284081600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661244890919063ffffffff16565b5b50505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d090613ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090613f5b565b60405180910390fd5b612954838383612e2b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d190613fed565b60405180910390fd5b81816129e691906136ce565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a769190613702565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ada9190612e49565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b0557612b0461328d565b5b604051908082528060200260200182016040528015612b335781602001602082028036833780820191505090505b5090503081600081518110612b4b57612b4a613758565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c169190614022565b81600181518110612c2a57612c29613758565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cf5959493929190614148565b600060405180830381600087803b158015612d0f57600080fd5b505af1158015612d23573d6000803e3d6000fd5b505050505050565b612d5830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612de1969594939291906141a2565b60606040518083038185885af1158015612dff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e249190614218565b5050505050565b505050565b6000819050919050565b612e4381612e30565b82525050565b6000602082019050612e5e6000830184612e3a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e9e578082015181840152602081019050612e83565b83811115612ead576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ecf82612e64565b612ed98185612e6f565b9350612ee9818560208601612e80565b612ef281612eb3565b840191505092915050565b60006020820190508181036000830152612f178184612ec4565b905092915050565b6000604051905090565b600080fd5b600080fd5b612f3c81612e30565b8114612f4757600080fd5b50565b600081359050612f5981612f33565b92915050565b600080600060608486031215612f7857612f77612f29565b5b6000612f8686828701612f4a565b9350506020612f9786828701612f4a565b9250506040612fa886828701612f4a565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fdd82612fb2565b9050919050565b612fed81612fd2565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b6000806040838503121561302757613026612f29565b5b600061303585828601612ffb565b925050602061304685828601612f4a565b9150509250929050565b60008115159050919050565b61306581613050565b82525050565b6000602082019050613080600083018461305c565b92915050565b61308f81613050565b811461309a57600080fd5b50565b6000813590506130ac81613086565b92915050565b600080604083850312156130c9576130c8612f29565b5b60006130d785828601612ffb565b92505060206130e88582860161309d565b9150509250929050565b60008060006060848603121561310b5761310a612f29565b5b600061311986828701612ffb565b935050602061312a86828701612ffb565b925050604061313b86828701612f4a565b9150509250925092565b600060ff82169050919050565b61315b81613145565b82525050565b60006020820190506131766000830184613152565b92915050565b600061318782612fd2565b9050919050565b6131978161317c565b81146131a257600080fd5b50565b6000813590506131b48161318e565b92915050565b600080604083850312156131d1576131d0612f29565b5b60006131df858286016131a5565b92505060206131f085828601612ffb565b9150509250929050565b6000602082840312156132105761320f612f29565b5b600061321e84828501612ffb565b91505092915050565b600060608201905061323c6000830186612e3a565b6132496020830185612e3a565b6132566040830184612e3a565b949350505050565b61326781612fd2565b82525050565b6000602082019050613282600083018461325e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132c582612eb3565b810181811067ffffffffffffffff821117156132e4576132e361328d565b5b80604052505050565b60006132f7612f1f565b905061330382826132bc565b919050565b600067ffffffffffffffff8211156133235761332261328d565b5b602082029050602081019050919050565b600080fd5b600061334c61334784613308565b6132ed565b9050808382526020820190506020840283018581111561336f5761336e613334565b5b835b8181101561339857806133848882612ffb565b845260208401935050602081019050613371565b5050509392505050565b600082601f8301126133b7576133b6613288565b5b81356133c7848260208601613339565b91505092915050565b600080604083850312156133e7576133e6612f29565b5b600083013567ffffffffffffffff81111561340557613404612f2e565b5b613411858286016133a2565b92505060206134228582860161309d565b9150509250929050565b60006020828403121561344257613441612f29565b5b600061345084828501612f4a565b91505092915050565b600080604083850312156134705761346f612f29565b5b600061347e85828601612ffb565b925050602061348f85828601612ffb565b9150509250929050565b6000602082840312156134af576134ae612f29565b5b60006134bd8482850161309d565b91505092915050565b6000819050919050565b60006134eb6134e66134e184612fb2565b6134c6565b612fb2565b9050919050565b60006134fd826134d0565b9050919050565b600061350f826134f2565b9050919050565b61351f81613504565b82525050565b600060208201905061353a6000830184613516565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061358757607f821691505b6020821081141561359b5761359a613540565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135d7602083612e6f565b91506135e2826135a1565b602082019050919050565b60006020820190508181036000830152613606816135ca565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613669602883612e6f565b91506136748261360d565b604082019050919050565b600060208201905081810360008301526136988161365c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136d982612e30565b91506136e483612e30565b9250828210156136f7576136f661369f565b5b828203905092915050565b600061370d82612e30565b915061371883612e30565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561374d5761374c61369f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061379282612e30565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c5576137c461369f565b5b600182019050919050565b60006040820190506137e5600083018561325e565b6137f26020830184612e3a565b9392505050565b60008151905061380881613086565b92915050565b60006020828403121561382457613823612f29565b5b6000613832848285016137f9565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613897602583612e6f565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613929602683612e6f565b9150613934826138cd565b604082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f546865206465616c20686173206265656e206f70656e65640000000000000000600082015250565b6000613995601883612e6f565b91506139a08261395f565b602082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a27602483612e6f565b9150613a32826139cb565b604082019050919050565b60006020820190508181036000830152613a5681613a1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab9602283612e6f565b9150613ac482613a5d565b604082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b7f73656e6465722069732076697000000000000000000000000000000000000000600082015250565b6000613b25600d83612e6f565b9150613b3082613aef565b602082019050919050565b60006020820190508181036000830152613b5481613b18565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bb7602983612e6f565b9150613bc282613b5b565b604082019050919050565b60006020820190508181036000830152613be681613baa565b9050919050565b7f6e6f6e2d7472616461626c650000000000000000000000000000000000000000600082015250565b6000613c23600c83612e6f565b9150613c2e82613bed565b602082019050919050565b60006020820190508181036000830152613c5281613c16565b9050919050565b6000613c6482612e30565b9150613c6f83612e30565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ca857613ca761369f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ced82612e30565b9150613cf883612e30565b925082613d0857613d07613cb3565b5b828204905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613d49601d83612e6f565b9150613d5482613d13565b602082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b600081905092915050565b50565b6000613d9a600083613d7f565b9150613da582613d8a565b600082019050919050565b6000613dbb82613d8d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613e21603a83612e6f565b9150613e2c82613dc5565b604082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613eb3602583612e6f565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f45602383612e6f565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fd7602683612e6f565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b60008151905061401c81612fe4565b92915050565b60006020828403121561403857614037612f29565b5b60006140468482850161400d565b91505092915050565b6000819050919050565b600061407461406f61406a8461404f565b6134c6565b612e30565b9050919050565b61408481614059565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140bf81612fd2565b82525050565b60006140d183836140b6565b60208301905092915050565b6000602082019050919050565b60006140f58261408a565b6140ff8185614095565b935061410a836140a6565b8060005b8381101561413b57815161412288826140c5565b975061412d836140dd565b92505060018101905061410e565b5085935050505092915050565b600060a08201905061415d6000830188612e3a565b61416a602083018761407b565b818103604083015261417c81866140ea565b905061418b606083018561325e565b6141986080830184612e3a565b9695505050505050565b600060c0820190506141b7600083018961325e565b6141c46020830188612e3a565b6141d1604083018761407b565b6141de606083018661407b565b6141eb608083018561325e565b6141f860a0830184612e3a565b979650505050505050565b60008151905061421281612f33565b92915050565b60008060006060848603121561423157614230612f29565b5b600061423f86828701614203565b935050602061425086828701614203565b925050604061426186828701614203565b915050925092509256fea2646970667358221220bae84f390646e65bc0b74e67a6a09945eadc9812d64508164f99817ead67044d64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806395d89b4111610139578063c24144ca116100b6578063e677b58a1161007a578063e677b58a146108e5578063e9dae5ed14610910578063f2fde38b14610939578063f66895a314610962578063f83fffcb1461098f578063f887ea40146109a65761025c565b8063c24144ca146107f0578063dbe66ca014610819578063dd62ed3e14610856578063e01af92c14610893578063e545fd6d146108bc5761025c565b8063a5500c30116100fd578063a5500c30146106f9578063a8aa1b3114610722578063a9059cbb1461074d578063aa168b471461078a578063aacebbe3146107c75761025c565b806395d89b41146106145780639d0014b11461063f5780639e252f0014610668578063a27b850414610691578063a457c2d7146106bc5761025c565b806340b28c2f116101d2578063728f8eea11610196578063728f8eea14610514578063738170a41461054157806375f0a8741461056c57806379883023146105975780638cd4426d146105c05780638da5cb5b146105e95761025c565b806340b28c2f1461044157806347d6cd6b1461046a5780636ddd17131461049557806370a08231146104c0578063715018a6146104fd5761025c565b806318160ddd1161021957806318160ddd146103465780632342d5d61461037157806323b872dd1461039c578063313ce567146103d957806339509351146104045761025c565b80630445b6671461026157806306fdde031461028c57806308733214146102b7578063095ea7b3146102e05780630e6740ce1461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109d1565b6040516102839190612e49565b60405180910390f35b34801561029857600080fd5b506102a16109d7565b6040516102ae9190612efd565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612f5f565b610a69565b005b3480156102ec57600080fd5b5061030760048036038101906103029190613010565b610b28565b604051610314919061306b565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f91906130b2565b610b46565b005b34801561035257600080fd5b5061035b610c1d565b6040516103689190612e49565b60405180910390f35b34801561037d57600080fd5b50610386610c27565b604051610393919061306b565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906130f2565b610c3a565b6040516103d0919061306b565b60405180910390f35b3480156103e557600080fd5b506103ee610d3b565b6040516103fb9190613161565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190613010565b610d44565b604051610438919061306b565b60405180910390f35b34801561044d57600080fd5b50610468600480360381019061046391906131ba565b610df0565b005b34801561047657600080fd5b5061047f610ef2565b60405161048c9190612e49565b60405180910390f35b3480156104a157600080fd5b506104aa610ef8565b6040516104b7919061306b565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e291906131fa565b610f0b565b6040516104f49190612e49565b60405180910390f35b34801561050957600080fd5b50610512610f53565b005b34801561052057600080fd5b50610529610fdb565b60405161053893929190613227565b60405180910390f35b34801561054d57600080fd5b50610556610ff3565b604051610563919061326d565b60405180910390f35b34801561057857600080fd5b50610581611019565b60405161058e919061326d565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b991906133d0565b61103f565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190613010565b611150565b005b3480156105f557600080fd5b506105fe6111f5565b60405161060b919061326d565b60405180910390f35b34801561062057600080fd5b5061062961121f565b6040516106369190612efd565b60405180910390f35b34801561064b57600080fd5b506106666004803603810190610661919061342c565b6112b1565b005b34801561067457600080fd5b5061068f600480360381019061068a919061342c565b611337565b005b34801561069d57600080fd5b506106a6611385565b6040516106b39190612e49565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de9190613010565b61138b565b6040516106f0919061306b565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b919061342c565b61147f565b005b34801561072e57600080fd5b50610737611505565b604051610744919061326d565b60405180910390f35b34801561075957600080fd5b50610774600480360381019061076f9190613010565b61152b565b604051610781919061306b565b60405180910390f35b34801561079657600080fd5b506107b160048036038101906107ac91906131fa565b611549565b6040516107be919061306b565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e991906131fa565b611569565b005b3480156107fc57600080fd5b506108176004803603810190610812919061342c565b611629565b005b34801561082557600080fd5b50610840600480360381019061083b91906131fa565b6116af565b60405161084d919061306b565b60405180910390f35b34801561086257600080fd5b5061087d60048036038101906108789190613459565b6116cf565b60405161088a9190612e49565b60405180910390f35b34801561089f57600080fd5b506108ba60048036038101906108b59190613499565b611756565b005b3480156108c857600080fd5b506108e360048036038101906108de91906130b2565b6117ef565b005b3480156108f157600080fd5b506108fa6118c6565b604051610907919061326d565b60405180910390f35b34801561091c57600080fd5b5061093760048036038101906109329190612f5f565b6118ec565b005b34801561094557600080fd5b50610960600480360381019061095b91906131fa565b6119ab565b005b34801561096e57600080fd5b50610977611aa3565b60405161098693929190613227565b60405180910390f35b34801561099b57600080fd5b506109a4611abb565b005b3480156109b257600080fd5b506109bb611baa565b6040516109c89190613525565b60405180910390f35b60085481565b6060600380546109e69061356f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a129061356f565b8015610a5f5780601f10610a3457610100808354040283529160200191610a5f565b820191906000526020600020905b815481529060010190602001808311610a4257829003601f168201915b5050505050905090565b610a71611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610a8f6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc906135ed565b60405180910390fd5b6040518060600160405280848152602001838152602001828152506010600082015181600001556020820151816001015560408201518160020155905050505050565b6000610b3c610b35611bd0565b8484611bd8565b6001905092915050565b610b4e611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610b6c6111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb9906135ed565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b600760169054906101000a900460ff1681565b6000610c47848484611da3565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c92611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d099061367f565b60405180910390fd5b610d2f85610d1e611bd0565b8584610d2a91906136ce565b611bd8565b60019150509392505050565b60006009905090565b6000610de6610d51611bd0565b848460016000610d5f611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610de19190613702565b611bd8565b6001905092915050565b610df8611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610e166111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e63906135ed565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600a5481565b600760159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f5b611bd0565b73ffffffffffffffffffffffffffffffffffffffff16610f796111f5565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc6906135ed565b60405180910390fd5b610fd96000612382565b565b600d8060000154908060010154908060020154905083565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611047611bd0565b73ffffffffffffffffffffffffffffffffffffffff166110656111f5565b73ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b2906135ed565b60405180910390fd5b60005b825181101561114b5781601360008584815181106110df576110de613758565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061114390613787565b9150506110be565b505050565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016111ad9291906137d0565b6020604051808303816000875af11580156111cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f0919061380e565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461122e9061356f565b80601f016020809104026020016040519081016040528092919081815260200182805461125a9061356f565b80156112a75780601f1061127c576101008083540402835291602001916112a7565b820191906000526020600020905b81548152906001019060200180831161128a57829003601f168201915b5050505050905090565b6112b9611bd0565b73ffffffffffffffffffffffffffffffffffffffff166112d76111f5565b73ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611324906135ed565b60405180910390fd5b8060088190555050565b61138281600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661244890919063ffffffff16565b50565b60095481565b6000806001600061139a611bd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144e906138ad565b60405180910390fd5b611474611462611bd0565b85858461146f91906136ce565b611bd8565b600191505092915050565b611487611bd0565b73ffffffffffffffffffffffffffffffffffffffff166114a56111f5565b73ffffffffffffffffffffffffffffffffffffffff16146114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f2906135ed565b60405180910390fd5b80600a8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061153f611538611bd0565b8484611da3565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b611571611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661158f6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc906135ed565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611631611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661164f6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146116a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169c906135ed565b60405180910390fd5b8060098190555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61175e611bd0565b73ffffffffffffffffffffffffffffffffffffffff1661177c6111f5565b73ffffffffffffffffffffffffffffffffffffffff16146117d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c9906135ed565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6117f7611bd0565b73ffffffffffffffffffffffffffffffffffffffff166118156111f5565b73ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611862906135ed565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118f4611bd0565b73ffffffffffffffffffffffffffffffffffffffff166119126111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906135ed565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600d600082015181600001556020820151816001015560408201518160020155905050505050565b6119b3611bd0565b73ffffffffffffffffffffffffffffffffffffffff166119d16111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e906135ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e9061393f565b60405180910390fd5b611aa081612382565b50565b60108060000154908060010154908060020154905083565b611ac3611bd0565b73ffffffffffffffffffffffffffffffffffffffff16611ae16111f5565b73ffffffffffffffffffffffffffffffffffffffff1614611b37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2e906135ed565b60405180910390fd5b60001515600760169054906101000a900460ff16151514611b8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b84906139ab565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90613a3d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611caf90613acf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d969190612e49565b60405180910390a3505050565b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2790613b3b565b60405180910390fd5b60008111611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a90613bcd565b60405180910390fd5b600080601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f1a5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f2b57611f2a85858561253c565b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611fd45750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156120d357601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561207d5750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120d257600760169054906101000a900460ff166120d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c890613c39565b60405180910390fd5b5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561217c5760646010600101546010600001546121419190613702565b8461214c9190613c59565b6121569190613ce2565b915060646010600201548461216b9190613c59565b6121759190613ce2565b90506121cb565b6064600d60010154600d600001546121949190613702565b8461219f9190613c59565b6121a99190613ce2565b91506064600d60020154846121be9190613c59565b6121c89190613ce2565b90505b600760149054906101000a900460ff168061222f5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806122835750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122915760009150600090505b600760159054906101000a900460ff1680156122ba5750600760149054906101000a900460ff16155b80156123145750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123205750600082115b1561232e5761232d6126c9565b5b61234f858583858761234091906136ce565b61234a91906136ce565b612869565b600082111561236457612363853084612869565b5b600081111561237b5761237a8561dead83612869565b5b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8047101561248b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248290613d5f565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516124b190613db0565b60006040518083038185875af1925050503d80600081146124ee576040519150601f19603f3d011682016040523d82523d6000602084013e6124f3565b606091505b5050905080612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252e90613e37565b60405180910390fd5b505050565b60006009549050806000141561255257506126c4565b600083851873ffffffffffffffffffffffffffffffffffffffff1643601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16171890506000600a5490506000805b8481101561267d578584179150826000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126639190612e49565b60405180910390a3806001019050600184901c93506125b6565b5080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505b505050565b600760149054906101000a900460ff16612867576001600760146101000a81548160ff021916908315150217905550600061270330610f0b565b9050600854811061284a57600060026010600101546010600001546127289190613702565b6127329190613c59565b9050600081601060010154846127489190613c59565b6127529190613ce2565b90506000818461276291906136ce565b9050600047905061277282612ae8565b6000814761278091906136ce565b905060006010600101548661279591906136ce565b826127a09190613ce2565b90506000601060010154826127b59190613c59565b905060008111156127cb576127ca8682612d2b565b5b60006010600001546002846127e09190613c59565b6127ea9190613c59565b905060008111156128415761284081600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661244890919063ffffffff16565b5b50505050505050505b506000600760146101000a81548160ff0219169083151502179055505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d090613ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294090613f5b565b60405180910390fd5b612954838383612e2b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156129da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d190613fed565b60405180910390fd5b81816129e691906136ce565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a769190613702565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ada9190612e49565b60405180910390a350505050565b6000600267ffffffffffffffff811115612b0557612b0461328d565b5b604051908082528060200260200182016040528015612b335781602001602082028036833780820191505090505b5090503081600081518110612b4b57612b4a613758565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c169190614022565b81600181518110612c2a57612c29613758565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c9130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612cf5959493929190614148565b600060405180830381600087803b158015612d0f57600080fd5b505af1158015612d23573d6000803e3d6000fd5b505050505050565b612d5830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611bd8565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612de1969594939291906141a2565b60606040518083038185885af1158015612dff573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e249190614218565b5050505050565b505050565b6000819050919050565b612e4381612e30565b82525050565b6000602082019050612e5e6000830184612e3a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e9e578082015181840152602081019050612e83565b83811115612ead576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ecf82612e64565b612ed98185612e6f565b9350612ee9818560208601612e80565b612ef281612eb3565b840191505092915050565b60006020820190508181036000830152612f178184612ec4565b905092915050565b6000604051905090565b600080fd5b600080fd5b612f3c81612e30565b8114612f4757600080fd5b50565b600081359050612f5981612f33565b92915050565b600080600060608486031215612f7857612f77612f29565b5b6000612f8686828701612f4a565b9350506020612f9786828701612f4a565b9250506040612fa886828701612f4a565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fdd82612fb2565b9050919050565b612fed81612fd2565b8114612ff857600080fd5b50565b60008135905061300a81612fe4565b92915050565b6000806040838503121561302757613026612f29565b5b600061303585828601612ffb565b925050602061304685828601612f4a565b9150509250929050565b60008115159050919050565b61306581613050565b82525050565b6000602082019050613080600083018461305c565b92915050565b61308f81613050565b811461309a57600080fd5b50565b6000813590506130ac81613086565b92915050565b600080604083850312156130c9576130c8612f29565b5b60006130d785828601612ffb565b92505060206130e88582860161309d565b9150509250929050565b60008060006060848603121561310b5761310a612f29565b5b600061311986828701612ffb565b935050602061312a86828701612ffb565b925050604061313b86828701612f4a565b9150509250925092565b600060ff82169050919050565b61315b81613145565b82525050565b60006020820190506131766000830184613152565b92915050565b600061318782612fd2565b9050919050565b6131978161317c565b81146131a257600080fd5b50565b6000813590506131b48161318e565b92915050565b600080604083850312156131d1576131d0612f29565b5b60006131df858286016131a5565b92505060206131f085828601612ffb565b9150509250929050565b6000602082840312156132105761320f612f29565b5b600061321e84828501612ffb565b91505092915050565b600060608201905061323c6000830186612e3a565b6132496020830185612e3a565b6132566040830184612e3a565b949350505050565b61326781612fd2565b82525050565b6000602082019050613282600083018461325e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132c582612eb3565b810181811067ffffffffffffffff821117156132e4576132e361328d565b5b80604052505050565b60006132f7612f1f565b905061330382826132bc565b919050565b600067ffffffffffffffff8211156133235761332261328d565b5b602082029050602081019050919050565b600080fd5b600061334c61334784613308565b6132ed565b9050808382526020820190506020840283018581111561336f5761336e613334565b5b835b8181101561339857806133848882612ffb565b845260208401935050602081019050613371565b5050509392505050565b600082601f8301126133b7576133b6613288565b5b81356133c7848260208601613339565b91505092915050565b600080604083850312156133e7576133e6612f29565b5b600083013567ffffffffffffffff81111561340557613404612f2e565b5b613411858286016133a2565b92505060206134228582860161309d565b9150509250929050565b60006020828403121561344257613441612f29565b5b600061345084828501612f4a565b91505092915050565b600080604083850312156134705761346f612f29565b5b600061347e85828601612ffb565b925050602061348f85828601612ffb565b9150509250929050565b6000602082840312156134af576134ae612f29565b5b60006134bd8482850161309d565b91505092915050565b6000819050919050565b60006134eb6134e66134e184612fb2565b6134c6565b612fb2565b9050919050565b60006134fd826134d0565b9050919050565b600061350f826134f2565b9050919050565b61351f81613504565b82525050565b600060208201905061353a6000830184613516565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061358757607f821691505b6020821081141561359b5761359a613540565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135d7602083612e6f565b91506135e2826135a1565b602082019050919050565b60006020820190508181036000830152613606816135ca565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613669602883612e6f565b91506136748261360d565b604082019050919050565b600060208201905081810360008301526136988161365c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136d982612e30565b91506136e483612e30565b9250828210156136f7576136f661369f565b5b828203905092915050565b600061370d82612e30565b915061371883612e30565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561374d5761374c61369f565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061379282612e30565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156137c5576137c461369f565b5b600182019050919050565b60006040820190506137e5600083018561325e565b6137f26020830184612e3a565b9392505050565b60008151905061380881613086565b92915050565b60006020828403121561382457613823612f29565b5b6000613832848285016137f9565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613897602583612e6f565b91506138a28261383b565b604082019050919050565b600060208201905081810360008301526138c68161388a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613929602683612e6f565b9150613934826138cd565b604082019050919050565b600060208201905081810360008301526139588161391c565b9050919050565b7f546865206465616c20686173206265656e206f70656e65640000000000000000600082015250565b6000613995601883612e6f565b91506139a08261395f565b602082019050919050565b600060208201905081810360008301526139c481613988565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a27602483612e6f565b9150613a32826139cb565b604082019050919050565b60006020820190508181036000830152613a5681613a1a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ab9602283612e6f565b9150613ac482613a5d565b604082019050919050565b60006020820190508181036000830152613ae881613aac565b9050919050565b7f73656e6465722069732076697000000000000000000000000000000000000000600082015250565b6000613b25600d83612e6f565b9150613b3082613aef565b602082019050919050565b60006020820190508181036000830152613b5481613b18565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bb7602983612e6f565b9150613bc282613b5b565b604082019050919050565b60006020820190508181036000830152613be681613baa565b9050919050565b7f6e6f6e2d7472616461626c650000000000000000000000000000000000000000600082015250565b6000613c23600c83612e6f565b9150613c2e82613bed565b602082019050919050565b60006020820190508181036000830152613c5281613c16565b9050919050565b6000613c6482612e30565b9150613c6f83612e30565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ca857613ca761369f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ced82612e30565b9150613cf883612e30565b925082613d0857613d07613cb3565b5b828204905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613d49601d83612e6f565b9150613d5482613d13565b602082019050919050565b60006020820190508181036000830152613d7881613d3c565b9050919050565b600081905092915050565b50565b6000613d9a600083613d7f565b9150613da582613d8a565b600082019050919050565b6000613dbb82613d8d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613e21603a83612e6f565b9150613e2c82613dc5565b604082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613eb3602583612e6f565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f45602383612e6f565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fd7602683612e6f565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b60008151905061401c81612fe4565b92915050565b60006020828403121561403857614037612f29565b5b60006140468482850161400d565b91505092915050565b6000819050919050565b600061407461406f61406a8461404f565b6134c6565b612e30565b9050919050565b61408481614059565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140bf81612fd2565b82525050565b60006140d183836140b6565b60208301905092915050565b6000602082019050919050565b60006140f58261408a565b6140ff8185614095565b935061410a836140a6565b8060005b8381101561413b57815161412288826140c5565b975061412d836140dd565b92505060018101905061410e565b5085935050505092915050565b600060a08201905061415d6000830188612e3a565b61416a602083018761407b565b818103604083015261417c81866140ea565b905061418b606083018561325e565b6141986080830184612e3a565b9695505050505050565b600060c0820190506141b7600083018961325e565b6141c46020830188612e3a565b6141d1604083018761407b565b6141de606083018661407b565b6141eb608083018561325e565b6141f860a0830184612e3a565b979650505050505050565b60008151905061421281612f33565b92915050565b60008060006060848603121561423157614230612f29565b5b600061423f86828701614203565b935050602061425086828701614203565b925050604061426186828701614203565b915050925092509256fea2646970667358221220bae84f390646e65bc0b74e67a6a09945eadc9812d64508164f99817ead67044d64736f6c634300080c0033

Deployed Bytecode Sourcemap

13302:8359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13554:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2508:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19347:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4675:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20208:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3628:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13514:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5326:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14893:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6157:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19643:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13634:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13477:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3799:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12079:94;;;;;;;;;;;;;:::i;:::-;;13964:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13762:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13680;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19989:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21319:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11856:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2727:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19067:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21477:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13597:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6875:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21204:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13417:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4139:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14113:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19521:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21105:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14057:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4377:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18814:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19847:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20332:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19185:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12181:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14008:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;18915:144;;;;;;;;;;;;;:::i;:::-;;13389:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13554:36;;;;:::o;2508:100::-;2562:13;2595:5;2588:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2508:100;:::o;19347:162::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19465:36:::1;;;;;;;;19471:10;19465:36;;;;19483:10;19465:36;;;;19495:5;19465:36;;::::0;19453:9:::1;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;19347:162:::0;;;:::o;4675:169::-;4758:4;4775:39;4784:12;:10;:12::i;:::-;4798:7;4807:6;4775:8;:39::i;:::-;4832:4;4825:11;;4675:169;;;;:::o;20208:116::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20311:5:::1;20291:7;:17;20299:8;20291:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;20208:116:::0;;:::o;3628:108::-;3689:7;3716:12;;3709:19;;3628:108;:::o;13514:31::-;;;;;;;;;;;;;:::o;5326:422::-;5432:4;5449:36;5459:6;5467:9;5478:6;5449:9;:36::i;:::-;5498:24;5525:11;:19;5537:6;5525:19;;;;;;;;;;;;;;;:33;5545:12;:10;:12::i;:::-;5525:33;;;;;;;;;;;;;;;;5498:60;;5597:6;5577:16;:26;;5569:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5659:57;5668:6;5676:12;:10;:12::i;:::-;5709:6;5690:16;:25;;;;:::i;:::-;5659:8;:57::i;:::-;5736:4;5729:11;;;5326:422;;;;;:::o;14893:82::-;14942:5;14966:1;14959:8;;14893:82;:::o;6157:215::-;6245:4;6262:80;6271:12;:10;:12::i;:::-;6285:7;6331:10;6294:11;:25;6306:12;:10;:12::i;:::-;6294:25;;;;;;;;;;;;;;;:34;6320:7;6294:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6262:8;:80::i;:::-;6360:4;6353:11;;6157:215;;;;:::o;19643:192::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19797:7:::1;19788:6;;:16;;;;;;;;;;;;;;;;;;19822:5;19815:4;;:12;;;;;;;;;;;;;;;;;;19643:192:::0;;:::o;13634:33::-;;;;:::o;13477:30::-;;;;;;;;;;;;;:::o;3799:127::-;3873:7;3900:9;:18;3910:7;3900:18;;;;;;;;;;;;;;;;3893:25;;3799:127;;;:::o;12079:94::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:21:::1;12162:1;12144:9;:21::i;:::-;12079:94::o:0;13964:34::-;;;;;;;;;;;;;;;;;;;:::o;13762:75::-;;;;;;;;;;;;;:::o;13680:::-;;;;;;;;;;;;;:::o;19989:211::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20098:6:::1;20093:100;20114:4;:11;20110:1;:15;20093:100;;;20175:6;20147:16;:25;20164:4;20169:1;20164:7;;;;;;;;:::i;:::-;;;;;;;;20147:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20127:3;;;;;:::i;:::-;;;;20093:100;;;;19989:211:::0;;:::o;21319:150::-;21405:12;21398:29;;;21436:15;;;;;;;;;;;21454:6;21398:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21319:150;;:::o;11856:87::-;11902:7;11929:6;;;;;;;;;;;11922:13;;11856:87;:::o;2727:104::-;2783:13;2816:7;2809:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2727:104;:::o;19067:110::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19159:10:::1;19143:13;:26;;;;19067:110:::0;:::o;21477:120::-;21535:54;21579:9;21551:15;;;;;;;;;;;21535:43;;;;:54;;;;:::i;:::-;21477:120;:::o;13597:30::-;;;;:::o;6875:377::-;6968:4;6985:24;7012:11;:25;7024:12;:10;:12::i;:::-;7012:25;;;;;;;;;;;;;;;:34;7038:7;7012:34;;;;;;;;;;;;;;;;6985:61;;7085:15;7065:16;:35;;7057:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7153:67;7162:12;:10;:12::i;:::-;7176:7;7204:15;7185:16;:34;;;;:::i;:::-;7153:8;:67::i;:::-;7240:4;7233:11;;;6875:377;;;;:::o;21204:103::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21293:6:::1;21276:14;:23;;;;21204:103:::0;:::o;13417:19::-;;;;;;;;;;;;;:::o;4139:175::-;4225:4;4242:42;4252:12;:10;:12::i;:::-;4266:9;4277:6;4242:9;:42::i;:::-;4302:4;4295:11;;4139:175;;;;:::o;14113:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;19521:114::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19618:9:::1;19600:15;;:27;;;;;;;;;;;;;;;;;;19521:114:::0;:::o;21105:91::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21185:3:::1;21171:11;:17;;;;21105:91:::0;:::o;14057:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;4377:151::-;4466:7;4493:11;:18;4505:5;4493:18;;;;;;;;;;;;;;;:27;4512:7;4493:27;;;;;;;;;;;;;;;;4486:34;;4377:151;;;;:::o;18814:93::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18894:5:::1;18880:11;;:19;;;;;;;;;;;;;;;;;;18814:93:::0;:::o;19847:134::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19968:5:::1;19939:16;:26;19956:8;19939:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;19847:134:::0;;:::o;20332:33::-;;;;;;;;;;;;;:::o;19185:154::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19295:36:::1;;;;;;;;19301:10;19295:36;;;;19313:10;19295:36;;;;19325:5;19295:36;;::::0;19287:5:::1;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;19185:154:::0;;;:::o;12181:192::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12290:1:::1;12270:22;;:8;:22;;;;12262:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12346:19;12356:8;12346:9;:19::i;:::-;12181:192:::0;:::o;14008:38::-;;;;;;;;;;;;;;;;;;;:::o;18915:144::-;12002:12;:10;:12::i;:::-;11991:23;;:7;:5;:7::i;:::-;:23;;;11983:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18988:5:::1;18973:20;;:11;;;;;;;;;;;:20;;;18965:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;19047:4;19033:11;;:18;;;;;;;;;;;;;;;;;;18915:144::o:0;13389:21::-;;;;;;;;;;;;;:::o;224:98::-;277:7;304:10;297:17;;224:98;:::o;10231:346::-;10350:1;10333:19;;:5;:19;;;;10325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10431:1;10412:21;;:7;:21;;;;10404:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10515:6;10485:11;:18;10497:5;10485:18;;;;;;;;;;;;;;;:27;10504:7;10485:27;;;;;;;;;;;;;;;:36;;;;10553:7;10537:32;;10546:5;10537:32;;;10562:6;10537:32;;;;;;:::i;:::-;;;;;;;;10231:346;;;:::o;14983:1657::-;15091:7;:15;15099:6;15091:15;;;;;;;;;;;;;;;;;;;;;;;;;15090:16;15082:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15152:1;15143:6;:10;15135:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15218:11;15240:15;15316:16;:24;15333:6;15316:24;;;;;;;;;;;;;;;;;;;;;;;;;15315:25;:57;;;;;15345:16;:27;15362:9;15345:27;;;;;;;;;;;;;;;;;;;;;;;;;15344:28;15315:57;15312:123;;;15388:35;15397:6;15405:9;15416:6;15388:8;:35::i;:::-;15312:123;15494:4;;;;;;;;;;;15484:14;;:6;:14;;;:35;;;;15515:4;;;;;;;;;;;15502:17;;:9;:17;;;15484:35;15481:198;;;15540:16;:24;15557:6;15540:24;;;;;;;;;;;;;;;;;;;;;;;;;15539:25;:57;;;;;15569:16;:27;15586:9;15569:27;;;;;;;;;;;;;;;;;;;;;;;;;15568:28;15539:57;15536:132;;;15624:11;;;;;;;;;;;15616:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;15536:132;15481:198;15705:4;;;;;;;;;;;15692:17;;:9;:17;;;15689:315;;;15787:3;15764:9;:19;;;15742:9;:19;;;:41;;;;:::i;:::-;15732:6;:52;;;;:::i;:::-;:58;;;;:::i;:::-;15726:64;;15841:3;15824:9;:14;;;15815:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;15805:39;;15689:315;;;15939:3;15920:5;:15;;;15902:5;:15;;;:33;;;;:::i;:::-;15892:6;:44;;;;:::i;:::-;:50;;;;:::i;:::-;15886:56;;15989:3;15976:5;:10;;;15967:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;15957:35;;15689:315;16099:8;;;;;;;;;;;:36;;;;16111:16;:24;16128:6;16111:24;;;;;;;;;;;;;;;;;;;;;;;;;16099:36;:67;;;;16139:16;:27;16156:9;16139:27;;;;;;;;;;;;;;;;;;;;;;;;;16099:67;16095:133;;;16189:1;16183:7;;16215:1;16205:11;;16095:133;16349:11;;;;;;;;;;;:24;;;;;16365:8;;;;;;;;;;;16364:9;16349:24;:42;;;;;16387:4;;;;;;;;;;;16377:14;;:6;:14;;;;16349:42;:53;;;;;16401:1;16395:3;:7;16349:53;16345:72;;;16404:13;:11;:13::i;:::-;16345:72;16430:58;16446:6;16454:9;16480:7;16474:3;16465:6;:12;;;;:::i;:::-;:22;;;;:::i;:::-;16430:15;:58::i;:::-;16508:1;16502:3;:7;16499:55;;;16511:43;16527:6;16543:4;16550:3;16511:15;:43::i;:::-;16499:55;16578:1;16568:7;:11;16565:65;;;16581:49;16597:6;16613;16622:7;16581:15;:49::i;:::-;16565:65;15071:1569;;14983:1657;;;:::o;12381:173::-;12437:16;12456:6;;;;;;;;;;;12437:25;;12482:8;12473:6;;:17;;;;;;;;;;;;;;;;;;12537:8;12506:40;;12527:8;12506:40;;;;;;;;;;;;12426:128;12381:173;:::o;11301:317::-;11416:6;11391:21;:31;;11383:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11470:12;11488:9;:14;;11510:6;11488:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11469:52;;;11540:7;11532:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11372:246;11301:317;;:::o;20374:723::-;20454:11;20468;;20454:25;;20499:3;20494:1;:8;20490:47;;;20519:7;;;20490:47;20547:12;20634:2;20618:4;20610:27;20562:76;;20593:12;20571:18;;;;;;;;;;;20563:42;;;20562:76;20547:91;;20649:21;20673:14;;20649:38;;20698:22;20736:9;20731:313;20751:3;20747:1;:7;20731:313;;;20812:7;20805:4;:14;20772:49;;20864:13;20836:9;:25;20846:14;20836:25;;;;;;;;;;;;;;;:41;;;;20922:14;20897:55;;20906:14;20897:55;;;20938:13;20897:55;;;;;;:::i;:::-;;;;;;;;20987:3;;;;;21020:1;21012:4;:9;;21005:16;;20731:313;;;;21075:14;21054:18;;:35;;;;;;;;;;;;;;;;;;20443:654;;;;20374:723;;;;:::o;16648:1230::-;14196:8;;;;;;;;;;;14191:104;;14232:4;14221:8;;:15;;;;;;;;;;;;;;;;;;16697:23:::1;16723:24;16741:4;16723:9;:24::i;:::-;16697:50;;16781:13;;16762:15;:32;16758:1113;;16868:19;16936:1;16913:9;:19;;;16891:9;:19;;;:41;;;;:::i;:::-;16890:47;;;;:::i;:::-;16868:69;;16952:32;17027:11;17005:9;:19;;;16987:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;16952:86;;17053:14;17088:24;17070:15;:42;;;;:::i;:::-;17053:59;;17133:22;17158:21;17133:46;;17200:24;17217:6;17200:16;:24::i;:::-;17245:20;17292:14;17268:21;:38;;;;:::i;:::-;17245:61;;17321:19;17372:9;:19;;;17358:11;:33;;;;:::i;:::-;17342:12;:50;;;;:::i;:::-;17321:71;;17407:29;17453:9;:19;;;17439:11;:33;;;;:::i;:::-;17407:65;;17520:1;17496:21;:25;17493:167;;;17583:61;17596:24;17622:21;17583:12;:61::i;:::-;17493:167;17680:20;17721:9;:19;;;17717:1;17703:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;17680:60;;17773:1;17758:12;:16;17755:103;;;17794:48;17829:12;17802:15;;;;;;;;;;;17794:34;;;;:48;;;;:::i;:::-;17755:103;16796:1075;;;;;;;;16758:1113;16686:1192;14278:5:::0;14267:8;;:16;;;;;;;;;;;;;;;;;;14191:104;16648:1230::o;7742:604::-;7866:1;7848:20;;:6;:20;;;;7840:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7950:1;7929:23;;:9;:23;;;;7921:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8005:47;8026:6;8034:9;8045:6;8005:20;:47::i;:::-;8065:21;8089:9;:17;8099:6;8089:17;;;;;;;;;;;;;;;;8065:41;;8142:6;8125:13;:23;;8117:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8238:6;8222:13;:22;;;;:::i;:::-;8202:9;:17;8212:6;8202:17;;;;;;;;;;;;;;;:42;;;;8279:6;8255:9;:20;8265:9;8255:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8320:9;8303:35;;8312:6;8303:35;;;8331:6;8303:35;;;;;;:::i;:::-;;;;;;;;7829:517;7742:604;;;:::o;17886:400::-;17952:21;17990:1;17976:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17952:40;;18021:4;18003;18008:1;18003:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18047:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18037:4;18042:1;18037:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18073:53;18090:4;18105:6;;;;;;;;;;;18114:11;18073:8;:53::i;:::-;18165:6;;;;;;;;;;;:57;;;18223:11;18236:1;18239:4;18253;18260:15;18165:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17941:345;17886:400;:::o;18294:512::-;18442:53;18459:4;18474:6;;;;;;;;;;;18483:11;18442:8;:53::i;:::-;18538:6;;;;;;;;;;;:22;;;18568:9;18601:4;18621:11;18647:1;18690;18741:15;;;;;;;;;;;18772;18538:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18294:512;;:::o;11180:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:122;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:619::-;2509:6;2517;2525;2574:2;2562:9;2553:7;2549:23;2545:32;2542:119;;;2580:79;;:::i;:::-;2542:119;2700:1;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;:::i;:::-;2715:63;;2671:117;2827:2;2853:53;2898:7;2889:6;2878:9;2874:22;2853:53;:::i;:::-;2843:63;;2798:118;2955:2;2981:53;3026:7;3017:6;3006:9;3002:22;2981:53;:::i;:::-;2971:63;;2926:118;2432:619;;;;;:::o;3057:126::-;3094:7;3134:42;3127:5;3123:54;3112:65;;3057:126;;;:::o;3189:96::-;3226:7;3255:24;3273:5;3255:24;:::i;:::-;3244:35;;3189:96;;;:::o;3291:122::-;3364:24;3382:5;3364:24;:::i;:::-;3357:5;3354:35;3344:63;;3403:1;3400;3393:12;3344:63;3291:122;:::o;3419:139::-;3465:5;3503:6;3490:20;3481:29;;3519:33;3546:5;3519:33;:::i;:::-;3419:139;;;;:::o;3564:474::-;3632:6;3640;3689:2;3677:9;3668:7;3664:23;3660:32;3657:119;;;3695:79;;:::i;:::-;3657:119;3815:1;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;:::i;:::-;3830:63;;3786:117;3942:2;3968:53;4013:7;4004:6;3993:9;3989:22;3968:53;:::i;:::-;3958:63;;3913:118;3564:474;;;;;:::o;4044:90::-;4078:7;4121:5;4114:13;4107:21;4096:32;;4044:90;;;:::o;4140:109::-;4221:21;4236:5;4221:21;:::i;:::-;4216:3;4209:34;4140:109;;:::o;4255:210::-;4342:4;4380:2;4369:9;4365:18;4357:26;;4393:65;4455:1;4444:9;4440:17;4431:6;4393:65;:::i;:::-;4255:210;;;;:::o;4471:116::-;4541:21;4556:5;4541:21;:::i;:::-;4534:5;4531:32;4521:60;;4577:1;4574;4567:12;4521:60;4471:116;:::o;4593:133::-;4636:5;4674:6;4661:20;4652:29;;4690:30;4714:5;4690:30;:::i;:::-;4593:133;;;;:::o;4732:468::-;4797:6;4805;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;5107:2;5133:50;5175:7;5166:6;5155:9;5151:22;5133:50;:::i;:::-;5123:60;;5078:115;4732:468;;;;;:::o;5206:619::-;5283:6;5291;5299;5348:2;5336:9;5327:7;5323:23;5319:32;5316:119;;;5354:79;;:::i;:::-;5316:119;5474:1;5499:53;5544:7;5535:6;5524:9;5520:22;5499:53;:::i;:::-;5489:63;;5445:117;5601:2;5627:53;5672:7;5663:6;5652:9;5648:22;5627:53;:::i;:::-;5617:63;;5572:118;5729:2;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5700:118;5206:619;;;;;:::o;5831:86::-;5866:7;5906:4;5899:5;5895:16;5884:27;;5831:86;;;:::o;5923:112::-;6006:22;6022:5;6006:22;:::i;:::-;6001:3;5994:35;5923:112;;:::o;6041:214::-;6130:4;6168:2;6157:9;6153:18;6145:26;;6181:67;6245:1;6234:9;6230:17;6221:6;6181:67;:::i;:::-;6041:214;;;;:::o;6261:111::-;6313:7;6342:24;6360:5;6342:24;:::i;:::-;6331:35;;6261:111;;;:::o;6378:152::-;6466:39;6499:5;6466:39;:::i;:::-;6459:5;6456:50;6446:78;;6520:1;6517;6510:12;6446:78;6378:152;:::o;6536:169::-;6597:5;6635:6;6622:20;6613:29;;6651:48;6693:5;6651:48;:::i;:::-;6536:169;;;;:::o;6711:504::-;6794:6;6802;6851:2;6839:9;6830:7;6826:23;6822:32;6819:119;;;6857:79;;:::i;:::-;6819:119;6977:1;7002:68;7062:7;7053:6;7042:9;7038:22;7002:68;:::i;:::-;6992:78;;6948:132;7119:2;7145:53;7190:7;7181:6;7170:9;7166:22;7145:53;:::i;:::-;7135:63;;7090:118;6711:504;;;;;:::o;7221:329::-;7280:6;7329:2;7317:9;7308:7;7304:23;7300:32;7297:119;;;7335:79;;:::i;:::-;7297:119;7455:1;7480:53;7525:7;7516:6;7505:9;7501:22;7480:53;:::i;:::-;7470:63;;7426:117;7221:329;;;;:::o;7556:442::-;7705:4;7743:2;7732:9;7728:18;7720:26;;7756:71;7824:1;7813:9;7809:17;7800:6;7756:71;:::i;:::-;7837:72;7905:2;7894:9;7890:18;7881:6;7837:72;:::i;:::-;7919;7987:2;7976:9;7972:18;7963:6;7919:72;:::i;:::-;7556:442;;;;;;:::o;8004:118::-;8091:24;8109:5;8091:24;:::i;:::-;8086:3;8079:37;8004:118;;:::o;8128:222::-;8221:4;8259:2;8248:9;8244:18;8236:26;;8272:71;8340:1;8329:9;8325:17;8316:6;8272:71;:::i;:::-;8128:222;;;;:::o;8356:117::-;8465:1;8462;8455:12;8479:180;8527:77;8524:1;8517:88;8624:4;8621:1;8614:15;8648:4;8645:1;8638:15;8665:281;8748:27;8770:4;8748:27;:::i;:::-;8740:6;8736:40;8878:6;8866:10;8863:22;8842:18;8830:10;8827:34;8824:62;8821:88;;;8889:18;;:::i;:::-;8821:88;8929:10;8925:2;8918:22;8708:238;8665:281;;:::o;8952:129::-;8986:6;9013:20;;:::i;:::-;9003:30;;9042:33;9070:4;9062:6;9042:33;:::i;:::-;8952:129;;;:::o;9087:311::-;9164:4;9254:18;9246:6;9243:30;9240:56;;;9276:18;;:::i;:::-;9240:56;9326:4;9318:6;9314:17;9306:25;;9386:4;9380;9376:15;9368:23;;9087:311;;;:::o;9404:117::-;9513:1;9510;9503:12;9544:710;9640:5;9665:81;9681:64;9738:6;9681:64;:::i;:::-;9665:81;:::i;:::-;9656:90;;9766:5;9795:6;9788:5;9781:21;9829:4;9822:5;9818:16;9811:23;;9882:4;9874:6;9870:17;9862:6;9858:30;9911:3;9903:6;9900:15;9897:122;;;9930:79;;:::i;:::-;9897:122;10045:6;10028:220;10062:6;10057:3;10054:15;10028:220;;;10137:3;10166:37;10199:3;10187:10;10166:37;:::i;:::-;10161:3;10154:50;10233:4;10228:3;10224:14;10217:21;;10104:144;10088:4;10083:3;10079:14;10072:21;;10028:220;;;10032:21;9646:608;;9544:710;;;;;:::o;10277:370::-;10348:5;10397:3;10390:4;10382:6;10378:17;10374:27;10364:122;;10405:79;;:::i;:::-;10364:122;10522:6;10509:20;10547:94;10637:3;10629:6;10622:4;10614:6;10610:17;10547:94;:::i;:::-;10538:103;;10354:293;10277:370;;;;:::o;10653:678::-;10743:6;10751;10800:2;10788:9;10779:7;10775:23;10771:32;10768:119;;;10806:79;;:::i;:::-;10768:119;10954:1;10943:9;10939:17;10926:31;10984:18;10976:6;10973:30;10970:117;;;11006:79;;:::i;:::-;10970:117;11111:78;11181:7;11172:6;11161:9;11157:22;11111:78;:::i;:::-;11101:88;;10897:302;11238:2;11264:50;11306:7;11297:6;11286:9;11282:22;11264:50;:::i;:::-;11254:60;;11209:115;10653:678;;;;;:::o;11337:329::-;11396:6;11445:2;11433:9;11424:7;11420:23;11416:32;11413:119;;;11451:79;;:::i;:::-;11413:119;11571:1;11596:53;11641:7;11632:6;11621:9;11617:22;11596:53;:::i;:::-;11586:63;;11542:117;11337:329;;;;:::o;11672:474::-;11740:6;11748;11797:2;11785:9;11776:7;11772:23;11768:32;11765:119;;;11803:79;;:::i;:::-;11765:119;11923:1;11948:53;11993:7;11984:6;11973:9;11969:22;11948:53;:::i;:::-;11938:63;;11894:117;12050:2;12076:53;12121:7;12112:6;12101:9;12097:22;12076:53;:::i;:::-;12066:63;;12021:118;11672:474;;;;;:::o;12152:323::-;12208:6;12257:2;12245:9;12236:7;12232:23;12228:32;12225:119;;;12263:79;;:::i;:::-;12225:119;12383:1;12408:50;12450:7;12441:6;12430:9;12426:22;12408:50;:::i;:::-;12398:60;;12354:114;12152:323;;;;:::o;12481:60::-;12509:3;12530:5;12523:12;;12481:60;;;:::o;12547:142::-;12597:9;12630:53;12648:34;12657:24;12675:5;12657:24;:::i;:::-;12648:34;:::i;:::-;12630:53;:::i;:::-;12617:66;;12547:142;;;:::o;12695:126::-;12745:9;12778:37;12809:5;12778:37;:::i;:::-;12765:50;;12695:126;;;:::o;12827:141::-;12892:9;12925:37;12956:5;12925:37;:::i;:::-;12912:50;;12827:141;;;:::o;12974:161::-;13076:52;13122:5;13076:52;:::i;:::-;13071:3;13064:65;12974:161;;:::o;13141:252::-;13249:4;13287:2;13276:9;13272:18;13264:26;;13300:86;13383:1;13372:9;13368:17;13359:6;13300:86;:::i;:::-;13141:252;;;;:::o;13399:180::-;13447:77;13444:1;13437:88;13544:4;13541:1;13534:15;13568:4;13565:1;13558:15;13585:320;13629:6;13666:1;13660:4;13656:12;13646:22;;13713:1;13707:4;13703:12;13734:18;13724:81;;13790:4;13782:6;13778:17;13768:27;;13724:81;13852:2;13844:6;13841:14;13821:18;13818:38;13815:84;;;13871:18;;:::i;:::-;13815:84;13636:269;13585:320;;;:::o;13911:182::-;14051:34;14047:1;14039:6;14035:14;14028:58;13911:182;:::o;14099:366::-;14241:3;14262:67;14326:2;14321:3;14262:67;:::i;:::-;14255:74;;14338:93;14427:3;14338:93;:::i;:::-;14456:2;14451:3;14447:12;14440:19;;14099:366;;;:::o;14471:419::-;14637:4;14675:2;14664:9;14660:18;14652:26;;14724:9;14718:4;14714:20;14710:1;14699:9;14695:17;14688:47;14752:131;14878:4;14752:131;:::i;:::-;14744:139;;14471:419;;;:::o;14896:227::-;15036:34;15032:1;15024:6;15020:14;15013:58;15105:10;15100:2;15092:6;15088:15;15081:35;14896:227;:::o;15129:366::-;15271:3;15292:67;15356:2;15351:3;15292:67;:::i;:::-;15285:74;;15368:93;15457:3;15368:93;:::i;:::-;15486:2;15481:3;15477:12;15470:19;;15129:366;;;:::o;15501:419::-;15667:4;15705:2;15694:9;15690:18;15682:26;;15754:9;15748:4;15744:20;15740:1;15729:9;15725:17;15718:47;15782:131;15908:4;15782:131;:::i;:::-;15774:139;;15501:419;;;:::o;15926:180::-;15974:77;15971:1;15964:88;16071:4;16068:1;16061:15;16095:4;16092:1;16085:15;16112:191;16152:4;16172:20;16190:1;16172:20;:::i;:::-;16167:25;;16206:20;16224:1;16206:20;:::i;:::-;16201:25;;16245:1;16242;16239:8;16236:34;;;16250:18;;:::i;:::-;16236:34;16295:1;16292;16288:9;16280:17;;16112:191;;;;:::o;16309:305::-;16349:3;16368:20;16386:1;16368:20;:::i;:::-;16363:25;;16402:20;16420:1;16402:20;:::i;:::-;16397:25;;16556:1;16488:66;16484:74;16481:1;16478:81;16475:107;;;16562:18;;:::i;:::-;16475:107;16606:1;16603;16599:9;16592:16;;16309:305;;;;:::o;16620:180::-;16668:77;16665:1;16658:88;16765:4;16762:1;16755:15;16789:4;16786:1;16779:15;16806:233;16845:3;16868:24;16886:5;16868:24;:::i;:::-;16859:33;;16914:66;16907:5;16904:77;16901:103;;;16984:18;;:::i;:::-;16901:103;17031:1;17024:5;17020:13;17013:20;;16806:233;;;:::o;17045:332::-;17166:4;17204:2;17193:9;17189:18;17181:26;;17217:71;17285:1;17274:9;17270:17;17261:6;17217:71;:::i;:::-;17298:72;17366:2;17355:9;17351:18;17342:6;17298:72;:::i;:::-;17045:332;;;;;:::o;17383:137::-;17437:5;17468:6;17462:13;17453:22;;17484:30;17508:5;17484:30;:::i;:::-;17383:137;;;;:::o;17526:345::-;17593:6;17642:2;17630:9;17621:7;17617:23;17613:32;17610:119;;;17648:79;;:::i;:::-;17610:119;17768:1;17793:61;17846:7;17837:6;17826:9;17822:22;17793:61;:::i;:::-;17783:71;;17739:125;17526:345;;;;:::o;17877:224::-;18017:34;18013:1;18005:6;18001:14;17994:58;18086:7;18081:2;18073:6;18069:15;18062:32;17877:224;:::o;18107:366::-;18249:3;18270:67;18334:2;18329:3;18270:67;:::i;:::-;18263:74;;18346:93;18435:3;18346:93;:::i;:::-;18464:2;18459:3;18455:12;18448:19;;18107:366;;;:::o;18479:419::-;18645:4;18683:2;18672:9;18668:18;18660:26;;18732:9;18726:4;18722:20;18718:1;18707:9;18703:17;18696:47;18760:131;18886:4;18760:131;:::i;:::-;18752:139;;18479:419;;;:::o;18904:225::-;19044:34;19040:1;19032:6;19028:14;19021:58;19113:8;19108:2;19100:6;19096:15;19089:33;18904:225;:::o;19135:366::-;19277:3;19298:67;19362:2;19357:3;19298:67;:::i;:::-;19291:74;;19374:93;19463:3;19374:93;:::i;:::-;19492:2;19487:3;19483:12;19476:19;;19135:366;;;:::o;19507:419::-;19673:4;19711:2;19700:9;19696:18;19688:26;;19760:9;19754:4;19750:20;19746:1;19735:9;19731:17;19724:47;19788:131;19914:4;19788:131;:::i;:::-;19780:139;;19507:419;;;:::o;19932:174::-;20072:26;20068:1;20060:6;20056:14;20049:50;19932:174;:::o;20112:366::-;20254:3;20275:67;20339:2;20334:3;20275:67;:::i;:::-;20268:74;;20351:93;20440:3;20351:93;:::i;:::-;20469:2;20464:3;20460:12;20453:19;;20112:366;;;:::o;20484:419::-;20650:4;20688:2;20677:9;20673:18;20665:26;;20737:9;20731:4;20727:20;20723:1;20712:9;20708:17;20701:47;20765:131;20891:4;20765:131;:::i;:::-;20757:139;;20484:419;;;:::o;20909:223::-;21049:34;21045:1;21037:6;21033:14;21026:58;21118:6;21113:2;21105:6;21101:15;21094:31;20909:223;:::o;21138:366::-;21280:3;21301:67;21365:2;21360:3;21301:67;:::i;:::-;21294:74;;21377:93;21466:3;21377:93;:::i;:::-;21495:2;21490:3;21486:12;21479:19;;21138:366;;;:::o;21510:419::-;21676:4;21714:2;21703:9;21699:18;21691:26;;21763:9;21757:4;21753:20;21749:1;21738:9;21734:17;21727:47;21791:131;21917:4;21791:131;:::i;:::-;21783:139;;21510:419;;;:::o;21935:221::-;22075:34;22071:1;22063:6;22059:14;22052:58;22144:4;22139:2;22131:6;22127:15;22120:29;21935:221;:::o;22162:366::-;22304:3;22325:67;22389:2;22384:3;22325:67;:::i;:::-;22318:74;;22401:93;22490:3;22401:93;:::i;:::-;22519:2;22514:3;22510:12;22503:19;;22162:366;;;:::o;22534:419::-;22700:4;22738:2;22727:9;22723:18;22715:26;;22787:9;22781:4;22777:20;22773:1;22762:9;22758:17;22751:47;22815:131;22941:4;22815:131;:::i;:::-;22807:139;;22534:419;;;:::o;22959:163::-;23099:15;23095:1;23087:6;23083:14;23076:39;22959:163;:::o;23128:366::-;23270:3;23291:67;23355:2;23350:3;23291:67;:::i;:::-;23284:74;;23367:93;23456:3;23367:93;:::i;:::-;23485:2;23480:3;23476:12;23469:19;;23128:366;;;:::o;23500:419::-;23666:4;23704:2;23693:9;23689:18;23681:26;;23753:9;23747:4;23743:20;23739:1;23728:9;23724:17;23717:47;23781:131;23907:4;23781:131;:::i;:::-;23773:139;;23500:419;;;:::o;23925:228::-;24065:34;24061:1;24053:6;24049:14;24042:58;24134:11;24129:2;24121:6;24117:15;24110:36;23925:228;:::o;24159:366::-;24301:3;24322:67;24386:2;24381:3;24322:67;:::i;:::-;24315:74;;24398:93;24487:3;24398:93;:::i;:::-;24516:2;24511:3;24507:12;24500:19;;24159:366;;;:::o;24531:419::-;24697:4;24735:2;24724:9;24720:18;24712:26;;24784:9;24778:4;24774:20;24770:1;24759:9;24755:17;24748:47;24812:131;24938:4;24812:131;:::i;:::-;24804:139;;24531:419;;;:::o;24956:162::-;25096:14;25092:1;25084:6;25080:14;25073:38;24956:162;:::o;25124:366::-;25266:3;25287:67;25351:2;25346:3;25287:67;:::i;:::-;25280:74;;25363:93;25452:3;25363:93;:::i;:::-;25481:2;25476:3;25472:12;25465:19;;25124:366;;;:::o;25496:419::-;25662:4;25700:2;25689:9;25685:18;25677:26;;25749:9;25743:4;25739:20;25735:1;25724:9;25720:17;25713:47;25777:131;25903:4;25777:131;:::i;:::-;25769:139;;25496:419;;;:::o;25921:348::-;25961:7;25984:20;26002:1;25984:20;:::i;:::-;25979:25;;26018:20;26036:1;26018:20;:::i;:::-;26013:25;;26206:1;26138:66;26134:74;26131:1;26128:81;26123:1;26116:9;26109:17;26105:105;26102:131;;;26213:18;;:::i;:::-;26102:131;26261:1;26258;26254:9;26243:20;;25921:348;;;;:::o;26275:180::-;26323:77;26320:1;26313:88;26420:4;26417:1;26410:15;26444:4;26441:1;26434:15;26461:185;26501:1;26518:20;26536:1;26518:20;:::i;:::-;26513:25;;26552:20;26570:1;26552:20;:::i;:::-;26547:25;;26591:1;26581:35;;26596:18;;:::i;:::-;26581:35;26638:1;26635;26631:9;26626:14;;26461:185;;;;:::o;26652:179::-;26792:31;26788:1;26780:6;26776:14;26769:55;26652:179;:::o;26837:366::-;26979:3;27000:67;27064:2;27059:3;27000:67;:::i;:::-;26993:74;;27076:93;27165:3;27076:93;:::i;:::-;27194:2;27189:3;27185:12;27178:19;;26837:366;;;:::o;27209:419::-;27375:4;27413:2;27402:9;27398:18;27390:26;;27462:9;27456:4;27452:20;27448:1;27437:9;27433:17;27426:47;27490:131;27616:4;27490:131;:::i;:::-;27482:139;;27209:419;;;:::o;27634:147::-;27735:11;27772:3;27757:18;;27634:147;;;;:::o;27787:114::-;;:::o;27907:398::-;28066:3;28087:83;28168:1;28163:3;28087:83;:::i;:::-;28080:90;;28179:93;28268:3;28179:93;:::i;:::-;28297:1;28292:3;28288:11;28281:18;;27907:398;;;:::o;28311:379::-;28495:3;28517:147;28660:3;28517:147;:::i;:::-;28510:154;;28681:3;28674:10;;28311:379;;;:::o;28696:245::-;28836:34;28832:1;28824:6;28820:14;28813:58;28905:28;28900:2;28892:6;28888:15;28881:53;28696:245;:::o;28947:366::-;29089:3;29110:67;29174:2;29169:3;29110:67;:::i;:::-;29103:74;;29186:93;29275:3;29186:93;:::i;:::-;29304:2;29299:3;29295:12;29288:19;;28947:366;;;:::o;29319:419::-;29485:4;29523:2;29512:9;29508:18;29500:26;;29572:9;29566:4;29562:20;29558:1;29547:9;29543:17;29536:47;29600:131;29726:4;29600:131;:::i;:::-;29592:139;;29319:419;;;:::o;29744:224::-;29884:34;29880:1;29872:6;29868:14;29861:58;29953:7;29948:2;29940:6;29936:15;29929:32;29744:224;:::o;29974:366::-;30116:3;30137:67;30201:2;30196:3;30137:67;:::i;:::-;30130:74;;30213:93;30302:3;30213:93;:::i;:::-;30331:2;30326:3;30322:12;30315:19;;29974:366;;;:::o;30346:419::-;30512:4;30550:2;30539:9;30535:18;30527:26;;30599:9;30593:4;30589:20;30585:1;30574:9;30570:17;30563:47;30627:131;30753:4;30627:131;:::i;:::-;30619:139;;30346:419;;;:::o;30771:222::-;30911:34;30907:1;30899:6;30895:14;30888:58;30980:5;30975:2;30967:6;30963:15;30956:30;30771:222;:::o;30999:366::-;31141:3;31162:67;31226:2;31221:3;31162:67;:::i;:::-;31155:74;;31238:93;31327:3;31238:93;:::i;:::-;31356:2;31351:3;31347:12;31340:19;;30999:366;;;:::o;31371:419::-;31537:4;31575:2;31564:9;31560:18;31552:26;;31624:9;31618:4;31614:20;31610:1;31599:9;31595:17;31588:47;31652:131;31778:4;31652:131;:::i;:::-;31644:139;;31371:419;;;:::o;31796:225::-;31936:34;31932:1;31924:6;31920:14;31913:58;32005:8;32000:2;31992:6;31988:15;31981:33;31796:225;:::o;32027:366::-;32169:3;32190:67;32254:2;32249:3;32190:67;:::i;:::-;32183:74;;32266:93;32355:3;32266:93;:::i;:::-;32384:2;32379:3;32375:12;32368:19;;32027:366;;;:::o;32399:419::-;32565:4;32603:2;32592:9;32588:18;32580:26;;32652:9;32646:4;32642:20;32638:1;32627:9;32623:17;32616:47;32680:131;32806:4;32680:131;:::i;:::-;32672:139;;32399:419;;;:::o;32824:143::-;32881:5;32912:6;32906:13;32897:22;;32928:33;32955:5;32928:33;:::i;:::-;32824:143;;;;:::o;32973:351::-;33043:6;33092:2;33080:9;33071:7;33067:23;33063:32;33060:119;;;33098:79;;:::i;:::-;33060:119;33218:1;33243:64;33299:7;33290:6;33279:9;33275:22;33243:64;:::i;:::-;33233:74;;33189:128;32973:351;;;;:::o;33330:85::-;33375:7;33404:5;33393:16;;33330:85;;;:::o;33421:158::-;33479:9;33512:61;33530:42;33539:32;33565:5;33539:32;:::i;:::-;33530:42;:::i;:::-;33512:61;:::i;:::-;33499:74;;33421:158;;;:::o;33585:147::-;33680:45;33719:5;33680:45;:::i;:::-;33675:3;33668:58;33585:147;;:::o;33738:114::-;33805:6;33839:5;33833:12;33823:22;;33738:114;;;:::o;33858:184::-;33957:11;33991:6;33986:3;33979:19;34031:4;34026:3;34022:14;34007:29;;33858:184;;;;:::o;34048:132::-;34115:4;34138:3;34130:11;;34168:4;34163:3;34159:14;34151:22;;34048:132;;;:::o;34186:108::-;34263:24;34281:5;34263:24;:::i;:::-;34258:3;34251:37;34186:108;;:::o;34300:179::-;34369:10;34390:46;34432:3;34424:6;34390:46;:::i;:::-;34468:4;34463:3;34459:14;34445:28;;34300:179;;;;:::o;34485:113::-;34555:4;34587;34582:3;34578:14;34570:22;;34485:113;;;:::o;34634:732::-;34753:3;34782:54;34830:5;34782:54;:::i;:::-;34852:86;34931:6;34926:3;34852:86;:::i;:::-;34845:93;;34962:56;35012:5;34962:56;:::i;:::-;35041:7;35072:1;35057:284;35082:6;35079:1;35076:13;35057:284;;;35158:6;35152:13;35185:63;35244:3;35229:13;35185:63;:::i;:::-;35178:70;;35271:60;35324:6;35271:60;:::i;:::-;35261:70;;35117:224;35104:1;35101;35097:9;35092:14;;35057:284;;;35061:14;35357:3;35350:10;;34758:608;;;34634:732;;;;:::o;35372:831::-;35635:4;35673:3;35662:9;35658:19;35650:27;;35687:71;35755:1;35744:9;35740:17;35731:6;35687:71;:::i;:::-;35768:80;35844:2;35833:9;35829:18;35820:6;35768:80;:::i;:::-;35895:9;35889:4;35885:20;35880:2;35869:9;35865:18;35858:48;35923:108;36026:4;36017:6;35923:108;:::i;:::-;35915:116;;36041:72;36109:2;36098:9;36094:18;36085:6;36041:72;:::i;:::-;36123:73;36191:3;36180:9;36176:19;36167:6;36123:73;:::i;:::-;35372:831;;;;;;;;:::o;36209:807::-;36458:4;36496:3;36485:9;36481:19;36473:27;;36510:71;36578:1;36567:9;36563:17;36554:6;36510:71;:::i;:::-;36591:72;36659:2;36648:9;36644:18;36635:6;36591:72;:::i;:::-;36673:80;36749:2;36738:9;36734:18;36725:6;36673:80;:::i;:::-;36763;36839:2;36828:9;36824:18;36815:6;36763:80;:::i;:::-;36853:73;36921:3;36910:9;36906:19;36897:6;36853:73;:::i;:::-;36936;37004:3;36993:9;36989:19;36980:6;36936:73;:::i;:::-;36209:807;;;;;;;;;:::o;37022:143::-;37079:5;37110:6;37104:13;37095:22;;37126:33;37153:5;37126:33;:::i;:::-;37022:143;;;;:::o;37171:663::-;37259:6;37267;37275;37324:2;37312:9;37303:7;37299:23;37295:32;37292:119;;;37330:79;;:::i;:::-;37292:119;37450:1;37475:64;37531:7;37522:6;37511:9;37507:22;37475:64;:::i;:::-;37465:74;;37421:128;37588:2;37614:64;37670:7;37661:6;37650:9;37646:22;37614:64;:::i;:::-;37604:74;;37559:129;37727:2;37753:64;37809:7;37800:6;37789:9;37785:22;37753:64;:::i;:::-;37743:74;;37698:129;37171:663;;;;;:::o

Swarm Source

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