ETH Price: $3,374.34 (-0.83%)
Gas: 25 Gwei

Token

Saja Reloaded (SAJAR)
 

Overview

Max Total Supply

1,000,000,000,000 SAJAR

Holders

183

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.339812353 SAJAR

Value
$0.00
0x3050f8fb759ad5932bec80b9c18b7aa46594dd93
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:
SajaReloaded

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
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);
}


library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

library Address {

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

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

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

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

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

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

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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 9;
    }

    /**
     * @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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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:
     *
     * - `account` 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);

        _afterTokenTransfer(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");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address token0, address token1) external view returns (address);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

contract SajaReloaded is ERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; }
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private _totalSupply = 1_000_000_000_000  * 10 ** 9;
    uint256 public _maxWalletAmount = 20_000_000_000 * 10 ** 9;
    uint256 public buyFee = 13;
    uint256 public sellFee = 13;
    bool inSwapAndLiquify;
    uint256 public ethPriceToSwap = 0.05 ether;
    address private feeOne = 0x3a4B5A609399E96DF49725555a689c051A5fAa28;
    address private feeTwo = 0x13D8211a4415592817e41C8110f88B5751288405;
    address public deployer;
    
    constructor() ERC20("Saja Reloaded", "SAJAR") {
        deployer = owner();
        _mint(address(this), _totalSupply);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            taxAmount = amount.mul(buyFee).div(100);
            uint256 amountToHolder = amount.sub(taxAmount);
            uint256 holderBalance = balanceOf(to).add(amountToHolder);
            if (from == marketPair && to != deployer) {
                require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
            }
            if (from != marketPair && to != marketPair) {
                require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
            }
            if (from != marketPair && to == marketPair) {
                taxAmount = amount.mul(sellFee).div(100);
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance > 0) {
                    uint256 tokenAmount = getTokenPrice();
                    if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                        swapTokensForEth(tokenAmount);
                    }
                }
            }
            if(taxAmount > 0) {
                super._transfer(from, address(this), taxAmount);
            }
           super._transfer(from, to, amountToHolder); 
       } else {
            super._transfer(from, to, amount);
        }
    }

    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

   function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }


    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
    }

    function airDrops(address[] calldata holders, uint256[] calldata amounts) external onlyOwner {
        require(holders.length == amounts.length, "Holders and amounts must be the same count");
        address from = address(this);
        for(uint256 i=0; i < holders.length; i++) {
            address to = holders[i];
            uint256 amount = amounts[i];
            _transfer(from, to, amount);
        }
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    function setWalletAddresses(address feeOne_, address feeTwo_) external onlyOwner {
        feeOne = feeOne_;
        feeTwo = feeTwo_;
    }

    function setFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

    receive() external payable {}

    function recoverEthInContract() external {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }

}

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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrops","outputs":[],"stateMutability":"nonpayable","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":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"feeOne_","type":"address"},{"internalType":"address","name":"feeTwo_","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea000006009556801158e460913d00000600a55600d600b55600d600c5566b1a2bc2ec50000600e55733a4b5a609399e96df49725555a689c051a5faa28600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507313d8211a4415592817e41c8110f88b5751288405601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013f57600080fd5b506040518060400160405280600d81526020017f53616a612052656c6f61646564000000000000000000000000000000000000008152506040518060400160405280600581526020017f53414a41520000000000000000000000000000000000000000000000000000008152508160039081620001bd91906200071b565b508060049081620001cf91906200071b565b5050506000620001e4620002ed60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000293620002f560201b60201c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002e7306009546200031f60201b60201c565b6200091d565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003889062000863565b60405180910390fd5b620003a5600083836200049760201b60201c565b8060026000828254620003b99190620008b4565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620004109190620008b4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000477919062000900565b60405180910390a362000493600083836200049c60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052357607f821691505b602082108103620005395762000538620004db565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000564565b620005af868362000564565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005fc620005f6620005f084620005c7565b620005d1565b620005c7565b9050919050565b6000819050919050565b6200061883620005db565b62000630620006278262000603565b84845462000571565b825550505050565b600090565b6200064762000638565b620006548184846200060d565b505050565b5b818110156200067c57620006706000826200063d565b6001810190506200065a565b5050565b601f821115620006cb5762000695816200053f565b620006a08462000554565b81016020851015620006b0578190505b620006c8620006bf8562000554565b83018262000659565b50505b505050565b600082821c905092915050565b6000620006f060001984600802620006d0565b1980831691505092915050565b60006200070b8383620006dd565b9150826002028217905092915050565b6200072682620004a1565b67ffffffffffffffff811115620007425762000741620004ac565b5b6200074e82546200050a565b6200075b82828562000680565b600060209050601f8311600181146200079357600084156200077e578287015190505b6200078a8582620006fd565b865550620007fa565b601f198416620007a3866200053f565b60005b82811015620007cd57848901518255600182019150602085019450602081019050620007a6565b86831015620007ed5784890151620007e9601f891682620006dd565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200084b601f8362000802565b9150620008588262000813565b602082019050919050565b600060208201905081810360008301526200087e816200083c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008c182620005c7565b9150620008ce83620005c7565b9250828201905080821115620008e957620008e862000885565b5b92915050565b620008fa81620005c7565b82525050565b6000602082019050620009176000830184620008ef565b92915050565b614269806200092d6000396000f3fe6080604052600436106101e75760003560e01c80636c0a24eb11610102578063a9059cbb11610095578063dcda6af311610064578063dcda6af3146106cb578063dd62ed3e146106f4578063e9ac0e5914610731578063f2fde38b14610748576101ee565b8063a9059cbb14610623578063b2abbbc414610660578063c9567bf914610689578063d5f39488146106a0576101ee565b806388847825116100d157806388847825146105675780638da5cb5b1461059057806395d89b41146105bb578063a457c2d7146105e6576101ee565b80636c0a24eb146104bf57806370a08231146104ea578063715018a61461052757806384afff9b1461053e576101ee565b8063313ce5671161017a5780634b94f50e116101495780634b94f50e1461042757806350faa48f1461045257806351bc3c851461047d57806354a5df1f14610494576101ee565b8063313ce5671461036b5780633950935114610396578063441d801f146103d357806347062402146103fc576101ee565b806318160ddd116101b657806318160ddd146102af57806323b872dd146102da57806327a14fc2146103175780632b14ca5614610340576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630b78f9c01461025b5780631694505e14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610771565b6040516102159190612df7565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612ec1565b610803565b6040516102529190612f1c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612f37565b610826565b005b34801561029057600080fd5b506102996108cf565b6040516102a69190612fd6565b60405180910390f35b3480156102bb57600080fd5b506102c46108f5565b6040516102d19190613000565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc919061301b565b6108ff565b60405161030e9190612f1c565b60405180910390f35b34801561032357600080fd5b5061033e6004803603810190610339919061306e565b61092e565b005b34801561034c57600080fd5b506103556109de565b6040516103629190613000565b60405180910390f35b34801561037757600080fd5b506103806109e4565b60405161038d91906130b7565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612ec1565b6109ed565b6040516103ca9190612f1c565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190613163565b610a24565b005b34801561040857600080fd5b50610411610acb565b60405161041e9190613000565b60405180910390f35b34801561043357600080fd5b5061043c610ad1565b6040516104499190613000565b60405180910390f35b34801561045e57600080fd5b50610467610d14565b60405161047491906131d2565b60405180910390f35b34801561048957600080fd5b50610492610d3a565b005b3480156104a057600080fd5b506104a9610d72565b6040516104b69190613000565b60405180910390f35b3480156104cb57600080fd5b506104d4610d78565b6040516104e19190613000565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906131ed565b610d7e565b60405161051e9190613000565b60405180910390f35b34801561053357600080fd5b5061053c610dc6565b005b34801561054a57600080fd5b50610565600480360381019061056091906131ed565b610f1e565b005b34801561057357600080fd5b5061058e6004803603810190610589919061321a565b611047565b005b34801561059c57600080fd5b506105a5611164565b6040516105b291906131d2565b60405180910390f35b3480156105c757600080fd5b506105d061118e565b6040516105dd9190612df7565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190612ec1565b611220565b60405161061a9190612f1c565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612ec1565b611297565b6040516106579190612f1c565b60405180910390f35b34801561066c57600080fd5b506106876004803603810190610682919061306e565b6112ba565b005b34801561069557600080fd5b5061069e61135b565b005b3480156106ac57600080fd5b506106b5611831565b6040516106c291906131d2565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed91906132b0565b611857565b005b34801561070057600080fd5b5061071b6004803603810190610716919061321a565b6119bb565b6040516107289190613000565b60405180910390f35b34801561073d57600080fd5b50610746611a42565b005b34801561075457600080fd5b5061076f600480360381019061076a91906131ed565b611ab3565b005b60606003805461078090613360565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac90613360565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b5050505050905090565b60008061080e611c79565b905061081b818585611c81565b600191505092915050565b61082e611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906133dd565b60405180910390fd5b81600b8190555080600c819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60008061090a611c79565b9050610917858285611e4a565b610922858585611ed6565b60019150509392505050565b610936611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906133dd565b60405180910390fd5b633b9aca00816109d5919061342c565b600a8190555050565b600c5481565b60006009905090565b6000806109f8611c79565b9050610a19818585610a0a85896119bb565b610a14919061346e565b611c81565b600191505092915050565b610a2c611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906133dd565b60405180910390fd5b610ac68383836124cc565b505050565b600b5481565b600080600267ffffffffffffffff811115610aef57610aee6134a2565b5b604051908082528060200260200182016040528015610b1d5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb191906134e6565b81600081518110610bc557610bc4613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610c1457610c13613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610cad929190613600565b600060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cf39190613754565b600181518110610d0657610d05613513565b5b602002602001015191505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d4530610d7e565b90506000811115610d6f57600d60009054906101000a900460ff16610d6e57610d6d81612577565b5b5b50565b600e5481565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dce611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e54906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f5e91906131d2565b602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f919061379d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ffe9291906137ca565b6020604051808303816000875af115801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190613808565b50505050565b61104f611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d5906133dd565b60405180910390fd5b81600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461119d90613360565b80601f01602080910402602001604051908101604052809291908181526020018280546111c990613360565b80156112165780601f106111eb57610100808354040283529160200191611216565b820191906000526020600020905b8154815290600101906020018083116111f957829003601f168201915b5050505050905090565b60008061122b611c79565b9050600061123982866119bb565b90508381101561127e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611275906138a7565b60405180910390fd5b61128b8286868403611c81565b60019250505092915050565b6000806112a2611c79565b90506112af818585611ed6565b600191505092915050565b6112c2611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611348906133dd565b60405180910390fd5b80600e8190555050565b611363611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e9906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90613939565b60405180910390fd5b6114b230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954611c81565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154391906134e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f091906134e6565b6040518363ffffffff1660e01b815260040161160d929190613959565b6020604051808303816000875af115801561162c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165091906134e6565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116d930610d7e565b6000806116e4611164565b426040518863ffffffff1660e01b8152600401611706969594939291906139bd565b60606040518083038185885af1158015611724573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117499190613a1e565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117eb9291906137ca565b6020604051808303816000875af115801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e9190613808565b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185f611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906133dd565b60405180910390fd5b818190508484905014611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90613ae3565b60405180910390fd5b600030905060005b858590508110156119b357600086868381811061195e5761195d613513565b5b905060200201602081019061197391906131ed565b9050600085858481811061198a57611989613513565b5b90506020020135905061199e848383611ed6565b505080806119ab90613b03565b91505061193e565b505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611aaf573d6000803e3d6000fd5b5050565b611abb611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b41906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090613bbd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce790613c4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613ce1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e3d9190613000565b60405180910390a3505050565b6000611e5684846119bb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ed05781811015611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613d4d565b60405180910390fd5b611ecf8484848403611c81565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613ddf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613e71565b60405180910390fd5b60008111611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee90613f03565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a55750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120dd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561211557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124ba576121426064612134600b54856128ab90919063ffffffff16565b61292590919063ffffffff16565b90506000612159828461296f90919063ffffffff16565b905060006121788261216a87610d7e565b6129b990919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122255750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600a5481111561226f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226690613f95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561231c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561236757600a54811115612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90613f95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156124125750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124935761243f6064612431600c54876128ab90919063ffffffff16565b61292590919063ffffffff16565b9250600061244c30610d7e565b90506000811115612491576000612461610ad1565b90508082101580156124805750600d60009054906101000a900460ff16155b1561248f5761248e81612577565b5b505b505b60008311156124a8576124a7863085612a17565b5b6124b3868684612a17565b50506124c6565b6124c5848484612a17565b5b50505050565b60005b838390508110156125715760008484838181106124ef576124ee613513565b5b905060200201602081019061250491906131ed565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061256990613b03565b9150506124cf565b50505050565b6000600267ffffffffffffffff811115612594576125936134a2565b5b6040519080825280602002602001820160405280156125c25781602001602082028036833780820191505090505b50905030816000815181106125da576125d9613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a591906134e6565b816001815181106126b9576126b8613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c81565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612784959493929190613fb5565b600060405180830381600087803b15801561279e57600080fd5b505af11580156127b2573d6000803e3d6000fd5b50505050600047905060006127d160028361292590919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561283b573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156128a4573d6000803e3d6000fd5b5050505050565b60008083036128bd576000905061291f565b600082846128cb919061342c565b90508284826128da919061403e565b1461291a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612911906140e1565b60405180910390fd5b809150505b92915050565b600061296783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c96565b905092915050565b60006129b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cf9565b905092915050565b60008082846129c8919061346e565b905083811015612a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a049061414d565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90613ddf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aec90613e71565b60405180910390fd5b612b00838383612d5d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d906141df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c19919061346e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c7d9190613000565b60405180910390a3612c90848484612d62565b50505050565b60008083118290612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd49190612df7565b60405180910390fd5b5060008385612cec919061403e565b9050809150509392505050565b6000838311158290612d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d389190612df7565b60405180910390fd5b5060008385612d5091906141ff565b9050809150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612da1578082015181840152602081019050612d86565b60008484015250505050565b6000601f19601f8301169050919050565b6000612dc982612d67565b612dd38185612d72565b9350612de3818560208601612d83565b612dec81612dad565b840191505092915050565b60006020820190508181036000830152612e118184612dbe565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5882612e2d565b9050919050565b612e6881612e4d565b8114612e7357600080fd5b50565b600081359050612e8581612e5f565b92915050565b6000819050919050565b612e9e81612e8b565b8114612ea957600080fd5b50565b600081359050612ebb81612e95565b92915050565b60008060408385031215612ed857612ed7612e23565b5b6000612ee685828601612e76565b9250506020612ef785828601612eac565b9150509250929050565b60008115159050919050565b612f1681612f01565b82525050565b6000602082019050612f316000830184612f0d565b92915050565b60008060408385031215612f4e57612f4d612e23565b5b6000612f5c85828601612eac565b9250506020612f6d85828601612eac565b9150509250929050565b6000819050919050565b6000612f9c612f97612f9284612e2d565b612f77565b612e2d565b9050919050565b6000612fae82612f81565b9050919050565b6000612fc082612fa3565b9050919050565b612fd081612fb5565b82525050565b6000602082019050612feb6000830184612fc7565b92915050565b612ffa81612e8b565b82525050565b60006020820190506130156000830184612ff1565b92915050565b60008060006060848603121561303457613033612e23565b5b600061304286828701612e76565b935050602061305386828701612e76565b925050604061306486828701612eac565b9150509250925092565b60006020828403121561308457613083612e23565b5b600061309284828501612eac565b91505092915050565b600060ff82169050919050565b6130b18161309b565b82525050565b60006020820190506130cc60008301846130a8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130f7576130f66130d2565b5b8235905067ffffffffffffffff811115613114576131136130d7565b5b6020830191508360208202830111156131305761312f6130dc565b5b9250929050565b61314081612f01565b811461314b57600080fd5b50565b60008135905061315d81613137565b92915050565b60008060006040848603121561317c5761317b612e23565b5b600084013567ffffffffffffffff81111561319a57613199612e28565b5b6131a6868287016130e1565b935093505060206131b98682870161314e565b9150509250925092565b6131cc81612e4d565b82525050565b60006020820190506131e760008301846131c3565b92915050565b60006020828403121561320357613202612e23565b5b600061321184828501612e76565b91505092915050565b6000806040838503121561323157613230612e23565b5b600061323f85828601612e76565b925050602061325085828601612e76565b9150509250929050565b60008083601f8401126132705761326f6130d2565b5b8235905067ffffffffffffffff81111561328d5761328c6130d7565b5b6020830191508360208202830111156132a9576132a86130dc565b5b9250929050565b600080600080604085870312156132ca576132c9612e23565b5b600085013567ffffffffffffffff8111156132e8576132e7612e28565b5b6132f4878288016130e1565b9450945050602085013567ffffffffffffffff81111561331757613316612e28565b5b6133238782880161325a565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061337857607f821691505b60208210810361338b5761338a613331565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133c7602083612d72565b91506133d282613391565b602082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343782612e8b565b915061344283612e8b565b925082820261345081612e8b565b91508282048414831517613467576134666133fd565b5b5092915050565b600061347982612e8b565b915061348483612e8b565b925082820190508082111561349c5761349b6133fd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134e081612e5f565b92915050565b6000602082840312156134fc576134fb612e23565b5b600061350a848285016134d1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61357781612e4d565b82525050565b6000613589838361356e565b60208301905092915050565b6000602082019050919050565b60006135ad82613542565b6135b7818561354d565b93506135c28361355e565b8060005b838110156135f35781516135da888261357d565b97506135e583613595565b9250506001810190506135c6565b5085935050505092915050565b60006040820190506136156000830185612ff1565b818103602083015261362781846135a2565b90509392505050565b61363982612dad565b810181811067ffffffffffffffff82111715613658576136576134a2565b5b80604052505050565b600061366b612e19565b90506136778282613630565b919050565b600067ffffffffffffffff821115613697576136966134a2565b5b602082029050602081019050919050565b6000815190506136b781612e95565b92915050565b60006136d06136cb8461367c565b613661565b905080838252602082019050602084028301858111156136f3576136f26130dc565b5b835b8181101561371c578061370888826136a8565b8452602084019350506020810190506136f5565b5050509392505050565b600082601f83011261373b5761373a6130d2565b5b815161374b8482602086016136bd565b91505092915050565b60006020828403121561376a57613769612e23565b5b600082015167ffffffffffffffff81111561378857613787612e28565b5b61379484828501613726565b91505092915050565b6000602082840312156137b3576137b2612e23565b5b60006137c1848285016136a8565b91505092915050565b60006040820190506137df60008301856131c3565b6137ec6020830184612ff1565b9392505050565b60008151905061380281613137565b92915050565b60006020828403121561381e5761381d612e23565b5b600061382c848285016137f3565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613891602583612d72565b915061389c82613835565b604082019050919050565b600060208201905081810360008301526138c081613884565b9050919050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613923602283612d72565b915061392e826138c7565b604082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b600060408201905061396e60008301856131c3565b61397b60208301846131c3565b9392505050565b6000819050919050565b60006139a76139a261399d84613982565b612f77565b612e8b565b9050919050565b6139b78161398c565b82525050565b600060c0820190506139d260008301896131c3565b6139df6020830188612ff1565b6139ec60408301876139ae565b6139f960608301866139ae565b613a0660808301856131c3565b613a1360a0830184612ff1565b979650505050505050565b600080600060608486031215613a3757613a36612e23565b5b6000613a45868287016136a8565b9350506020613a56868287016136a8565b9250506040613a67868287016136a8565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e7473206d757374206265207468652060008201527f73616d6520636f756e7400000000000000000000000000000000000000000000602082015250565b6000613acd602a83612d72565b9150613ad882613a71565b604082019050919050565b60006020820190508181036000830152613afc81613ac0565b9050919050565b6000613b0e82612e8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4057613b3f6133fd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ba7602683612d72565b9150613bb282613b4b565b604082019050919050565b60006020820190508181036000830152613bd681613b9a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c39602483612d72565b9150613c4482613bdd565b604082019050919050565b60006020820190508181036000830152613c6881613c2c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ccb602283612d72565b9150613cd682613c6f565b604082019050919050565b60006020820190508181036000830152613cfa81613cbe565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d37601d83612d72565b9150613d4282613d01565b602082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613dc9602583612d72565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5b602383612d72565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613eed602983612d72565b9150613ef882613e91565b604082019050919050565b60006020820190508181036000830152613f1c81613ee0565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613f7f602583612d72565b9150613f8a82613f23565b604082019050919050565b60006020820190508181036000830152613fae81613f72565b9050919050565b600060a082019050613fca6000830188612ff1565b613fd760208301876139ae565b8181036040830152613fe981866135a2565b9050613ff860608301856131c3565b6140056080830184612ff1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404982612e8b565b915061405483612e8b565b9250826140645761406361400f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140cb602183612d72565b91506140d68261406f565b604082019050919050565b600060208201905081810360008301526140fa816140be565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614137601b83612d72565b915061414282614101565b602082019050919050565b600060208201905081810360008301526141668161412a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141c9602683612d72565b91506141d48261416d565b604082019050919050565b600060208201905081810360008301526141f8816141bc565b9050919050565b600061420a82612e8b565b915061421583612e8b565b925082820390508181111561422d5761422c6133fd565b5b9291505056fea26469706673582212204824c76e145d0f9a01d198eee6405f89f2fe24c634af6ca646056cbc31417edd64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80636c0a24eb11610102578063a9059cbb11610095578063dcda6af311610064578063dcda6af3146106cb578063dd62ed3e146106f4578063e9ac0e5914610731578063f2fde38b14610748576101ee565b8063a9059cbb14610623578063b2abbbc414610660578063c9567bf914610689578063d5f39488146106a0576101ee565b806388847825116100d157806388847825146105675780638da5cb5b1461059057806395d89b41146105bb578063a457c2d7146105e6576101ee565b80636c0a24eb146104bf57806370a08231146104ea578063715018a61461052757806384afff9b1461053e576101ee565b8063313ce5671161017a5780634b94f50e116101495780634b94f50e1461042757806350faa48f1461045257806351bc3c851461047d57806354a5df1f14610494576101ee565b8063313ce5671461036b5780633950935114610396578063441d801f146103d357806347062402146103fc576101ee565b806318160ddd116101b657806318160ddd146102af57806323b872dd146102da57806327a14fc2146103175780632b14ca5614610340576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630b78f9c01461025b5780631694505e14610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610771565b6040516102159190612df7565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612ec1565b610803565b6040516102529190612f1c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612f37565b610826565b005b34801561029057600080fd5b506102996108cf565b6040516102a69190612fd6565b60405180910390f35b3480156102bb57600080fd5b506102c46108f5565b6040516102d19190613000565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc919061301b565b6108ff565b60405161030e9190612f1c565b60405180910390f35b34801561032357600080fd5b5061033e6004803603810190610339919061306e565b61092e565b005b34801561034c57600080fd5b506103556109de565b6040516103629190613000565b60405180910390f35b34801561037757600080fd5b506103806109e4565b60405161038d91906130b7565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b89190612ec1565b6109ed565b6040516103ca9190612f1c565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190613163565b610a24565b005b34801561040857600080fd5b50610411610acb565b60405161041e9190613000565b60405180910390f35b34801561043357600080fd5b5061043c610ad1565b6040516104499190613000565b60405180910390f35b34801561045e57600080fd5b50610467610d14565b60405161047491906131d2565b60405180910390f35b34801561048957600080fd5b50610492610d3a565b005b3480156104a057600080fd5b506104a9610d72565b6040516104b69190613000565b60405180910390f35b3480156104cb57600080fd5b506104d4610d78565b6040516104e19190613000565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c91906131ed565b610d7e565b60405161051e9190613000565b60405180910390f35b34801561053357600080fd5b5061053c610dc6565b005b34801561054a57600080fd5b50610565600480360381019061056091906131ed565b610f1e565b005b34801561057357600080fd5b5061058e6004803603810190610589919061321a565b611047565b005b34801561059c57600080fd5b506105a5611164565b6040516105b291906131d2565b60405180910390f35b3480156105c757600080fd5b506105d061118e565b6040516105dd9190612df7565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190612ec1565b611220565b60405161061a9190612f1c565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612ec1565b611297565b6040516106579190612f1c565b60405180910390f35b34801561066c57600080fd5b506106876004803603810190610682919061306e565b6112ba565b005b34801561069557600080fd5b5061069e61135b565b005b3480156106ac57600080fd5b506106b5611831565b6040516106c291906131d2565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed91906132b0565b611857565b005b34801561070057600080fd5b5061071b6004803603810190610716919061321a565b6119bb565b6040516107289190613000565b60405180910390f35b34801561073d57600080fd5b50610746611a42565b005b34801561075457600080fd5b5061076f600480360381019061076a91906131ed565b611ab3565b005b60606003805461078090613360565b80601f01602080910402602001604051908101604052809291908181526020018280546107ac90613360565b80156107f95780601f106107ce576101008083540402835291602001916107f9565b820191906000526020600020905b8154815290600101906020018083116107dc57829003601f168201915b5050505050905090565b60008061080e611c79565b905061081b818585611c81565b600191505092915050565b61082e611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906133dd565b60405180910390fd5b81600b8190555080600c819055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b60008061090a611c79565b9050610917858285611e4a565b610922858585611ed6565b60019150509392505050565b610936611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906133dd565b60405180910390fd5b633b9aca00816109d5919061342c565b600a8190555050565b600c5481565b60006009905090565b6000806109f8611c79565b9050610a19818585610a0a85896119bb565b610a14919061346e565b611c81565b600191505092915050565b610a2c611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906133dd565b60405180910390fd5b610ac68383836124cc565b505050565b600b5481565b600080600267ffffffffffffffff811115610aef57610aee6134a2565b5b604051908082528060200260200182016040528015610b1d5781602001602082028036833780820191505090505b509050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb191906134e6565b81600081518110610bc557610bc4613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110610c1457610c13613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600e54836040518363ffffffff1660e01b8152600401610cad929190613600565b600060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610cf39190613754565b600181518110610d0657610d05613513565b5b602002602001015191505090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610d4530610d7e565b90506000811115610d6f57600d60009054906101000a900460ff16610d6e57610d6d81612577565b5b5b50565b600e5481565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dce611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e54906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f5e91906131d2565b602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f919061379d565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ffe9291906137ca565b6020604051808303816000875af115801561101d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110419190613808565b50505050565b61104f611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d5906133dd565b60405180910390fd5b81600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461119d90613360565b80601f01602080910402602001604051908101604052809291908181526020018280546111c990613360565b80156112165780601f106111eb57610100808354040283529160200191611216565b820191906000526020600020905b8154815290600101906020018083116111f957829003601f168201915b5050505050905090565b60008061122b611c79565b9050600061123982866119bb565b90508381101561127e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611275906138a7565b60405180910390fd5b61128b8286868403611c81565b60019250505092915050565b6000806112a2611c79565b90506112af818585611ed6565b600191505092915050565b6112c2611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611348906133dd565b60405180910390fd5b80600e8190555050565b611363611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e9906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90613939565b60405180910390fd5b6114b230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954611c81565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154391906134e6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f091906134e6565b6040518363ffffffff1660e01b815260040161160d929190613959565b6020604051808303816000875af115801561162c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165091906134e6565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116d930610d7e565b6000806116e4611164565b426040518863ffffffff1660e01b8152600401611706969594939291906139bd565b60606040518083038185885af1158015611724573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117499190613a1e565b505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016117eb9291906137ca565b6020604051808303816000875af115801561180a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182e9190613808565b50565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61185f611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e5906133dd565b60405180910390fd5b818190508484905014611936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192d90613ae3565b60405180910390fd5b600030905060005b858590508110156119b357600086868381811061195e5761195d613513565b5b905060200201602081019061197391906131ed565b9050600085858481811061198a57611989613513565b5b90506020020135905061199e848383611ed6565b505080806119ab90613b03565b91505061193e565b505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611aaf573d6000803e3d6000fd5b5050565b611abb611c79565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b41906133dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb090613bbd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce790613c4f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5690613ce1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e3d9190613000565b60405180910390a3505050565b6000611e5684846119bb565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611ed05781811015611ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb990613d4d565b60405180910390fd5b611ecf8484848403611c81565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613ddf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613e71565b60405180910390fd5b60008111611ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fee90613f03565b60405180910390fd5b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120a55750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120dd57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561211557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124ba576121426064612134600b54856128ab90919063ffffffff16565b61292590919063ffffffff16565b90506000612159828461296f90919063ffffffff16565b905060006121788261216a87610d7e565b6129b990919063ffffffff16565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480156122255750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561227057600a5481111561226f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226690613f95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561231c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561236757600a54811115612366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235d90613f95565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156124125750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156124935761243f6064612431600c54876128ab90919063ffffffff16565b61292590919063ffffffff16565b9250600061244c30610d7e565b90506000811115612491576000612461610ad1565b90508082101580156124805750600d60009054906101000a900460ff16155b1561248f5761248e81612577565b5b505b505b60008311156124a8576124a7863085612a17565b5b6124b3868684612a17565b50506124c6565b6124c5848484612a17565b5b50505050565b60005b838390508110156125715760008484838181106124ef576124ee613513565b5b905060200201602081019061250491906131ed565b905082600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061256990613b03565b9150506124cf565b50505050565b6000600267ffffffffffffffff811115612594576125936134a2565b5b6040519080825280602002602001820160405280156125c25781602001602082028036833780820191505090505b50905030816000815181106125da576125d9613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a591906134e6565b816001815181106126b9576126b8613513565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c81565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612784959493929190613fb5565b600060405180830381600087803b15801561279e57600080fd5b505af11580156127b2573d6000803e3d6000fd5b50505050600047905060006127d160028361292590919063ffffffff16565b9050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561283b573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156128a4573d6000803e3d6000fd5b5050505050565b60008083036128bd576000905061291f565b600082846128cb919061342c565b90508284826128da919061403e565b1461291a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612911906140e1565b60405180910390fd5b809150505b92915050565b600061296783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c96565b905092915050565b60006129b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612cf9565b905092915050565b60008082846129c8919061346e565b905083811015612a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a049061414d565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90613ddf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aec90613e71565b60405180910390fd5b612b00838383612d5d565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7d906141df565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c19919061346e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c7d9190613000565b60405180910390a3612c90848484612d62565b50505050565b60008083118290612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd49190612df7565b60405180910390fd5b5060008385612cec919061403e565b9050809150509392505050565b6000838311158290612d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d389190612df7565b60405180910390fd5b5060008385612d5091906141ff565b9050809150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612da1578082015181840152602081019050612d86565b60008484015250505050565b6000601f19601f8301169050919050565b6000612dc982612d67565b612dd38185612d72565b9350612de3818560208601612d83565b612dec81612dad565b840191505092915050565b60006020820190508181036000830152612e118184612dbe565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5882612e2d565b9050919050565b612e6881612e4d565b8114612e7357600080fd5b50565b600081359050612e8581612e5f565b92915050565b6000819050919050565b612e9e81612e8b565b8114612ea957600080fd5b50565b600081359050612ebb81612e95565b92915050565b60008060408385031215612ed857612ed7612e23565b5b6000612ee685828601612e76565b9250506020612ef785828601612eac565b9150509250929050565b60008115159050919050565b612f1681612f01565b82525050565b6000602082019050612f316000830184612f0d565b92915050565b60008060408385031215612f4e57612f4d612e23565b5b6000612f5c85828601612eac565b9250506020612f6d85828601612eac565b9150509250929050565b6000819050919050565b6000612f9c612f97612f9284612e2d565b612f77565b612e2d565b9050919050565b6000612fae82612f81565b9050919050565b6000612fc082612fa3565b9050919050565b612fd081612fb5565b82525050565b6000602082019050612feb6000830184612fc7565b92915050565b612ffa81612e8b565b82525050565b60006020820190506130156000830184612ff1565b92915050565b60008060006060848603121561303457613033612e23565b5b600061304286828701612e76565b935050602061305386828701612e76565b925050604061306486828701612eac565b9150509250925092565b60006020828403121561308457613083612e23565b5b600061309284828501612eac565b91505092915050565b600060ff82169050919050565b6130b18161309b565b82525050565b60006020820190506130cc60008301846130a8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130f7576130f66130d2565b5b8235905067ffffffffffffffff811115613114576131136130d7565b5b6020830191508360208202830111156131305761312f6130dc565b5b9250929050565b61314081612f01565b811461314b57600080fd5b50565b60008135905061315d81613137565b92915050565b60008060006040848603121561317c5761317b612e23565b5b600084013567ffffffffffffffff81111561319a57613199612e28565b5b6131a6868287016130e1565b935093505060206131b98682870161314e565b9150509250925092565b6131cc81612e4d565b82525050565b60006020820190506131e760008301846131c3565b92915050565b60006020828403121561320357613202612e23565b5b600061321184828501612e76565b91505092915050565b6000806040838503121561323157613230612e23565b5b600061323f85828601612e76565b925050602061325085828601612e76565b9150509250929050565b60008083601f8401126132705761326f6130d2565b5b8235905067ffffffffffffffff81111561328d5761328c6130d7565b5b6020830191508360208202830111156132a9576132a86130dc565b5b9250929050565b600080600080604085870312156132ca576132c9612e23565b5b600085013567ffffffffffffffff8111156132e8576132e7612e28565b5b6132f4878288016130e1565b9450945050602085013567ffffffffffffffff81111561331757613316612e28565b5b6133238782880161325a565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061337857607f821691505b60208210810361338b5761338a613331565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006133c7602083612d72565b91506133d282613391565b602082019050919050565b600060208201905081810360008301526133f6816133ba565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061343782612e8b565b915061344283612e8b565b925082820261345081612e8b565b91508282048414831517613467576134666133fd565b5b5092915050565b600061347982612e8b565b915061348483612e8b565b925082820190508082111561349c5761349b6133fd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506134e081612e5f565b92915050565b6000602082840312156134fc576134fb612e23565b5b600061350a848285016134d1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61357781612e4d565b82525050565b6000613589838361356e565b60208301905092915050565b6000602082019050919050565b60006135ad82613542565b6135b7818561354d565b93506135c28361355e565b8060005b838110156135f35781516135da888261357d565b97506135e583613595565b9250506001810190506135c6565b5085935050505092915050565b60006040820190506136156000830185612ff1565b818103602083015261362781846135a2565b90509392505050565b61363982612dad565b810181811067ffffffffffffffff82111715613658576136576134a2565b5b80604052505050565b600061366b612e19565b90506136778282613630565b919050565b600067ffffffffffffffff821115613697576136966134a2565b5b602082029050602081019050919050565b6000815190506136b781612e95565b92915050565b60006136d06136cb8461367c565b613661565b905080838252602082019050602084028301858111156136f3576136f26130dc565b5b835b8181101561371c578061370888826136a8565b8452602084019350506020810190506136f5565b5050509392505050565b600082601f83011261373b5761373a6130d2565b5b815161374b8482602086016136bd565b91505092915050565b60006020828403121561376a57613769612e23565b5b600082015167ffffffffffffffff81111561378857613787612e28565b5b61379484828501613726565b91505092915050565b6000602082840312156137b3576137b2612e23565b5b60006137c1848285016136a8565b91505092915050565b60006040820190506137df60008301856131c3565b6137ec6020830184612ff1565b9392505050565b60008151905061380281613137565b92915050565b60006020828403121561381e5761381d612e23565b5b600061382c848285016137f3565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613891602583612d72565b915061389c82613835565b604082019050919050565b600060208201905081810360008301526138c081613884565b9050919050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000613923602283612d72565b915061392e826138c7565b604082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b600060408201905061396e60008301856131c3565b61397b60208301846131c3565b9392505050565b6000819050919050565b60006139a76139a261399d84613982565b612f77565b612e8b565b9050919050565b6139b78161398c565b82525050565b600060c0820190506139d260008301896131c3565b6139df6020830188612ff1565b6139ec60408301876139ae565b6139f960608301866139ae565b613a0660808301856131c3565b613a1360a0830184612ff1565b979650505050505050565b600080600060608486031215613a3757613a36612e23565b5b6000613a45868287016136a8565b9350506020613a56868287016136a8565b9250506040613a67868287016136a8565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e7473206d757374206265207468652060008201527f73616d6520636f756e7400000000000000000000000000000000000000000000602082015250565b6000613acd602a83612d72565b9150613ad882613a71565b604082019050919050565b60006020820190508181036000830152613afc81613ac0565b9050919050565b6000613b0e82612e8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4057613b3f6133fd565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ba7602683612d72565b9150613bb282613b4b565b604082019050919050565b60006020820190508181036000830152613bd681613b9a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613c39602483612d72565b9150613c4482613bdd565b604082019050919050565b60006020820190508181036000830152613c6881613c2c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ccb602283612d72565b9150613cd682613c6f565b604082019050919050565b60006020820190508181036000830152613cfa81613cbe565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613d37601d83612d72565b9150613d4282613d01565b602082019050919050565b60006020820190508181036000830152613d6681613d2a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613dc9602583612d72565b9150613dd482613d6d565b604082019050919050565b60006020820190508181036000830152613df881613dbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5b602383612d72565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613eed602983612d72565b9150613ef882613e91565b604082019050919050565b60006020820190508181036000830152613f1c81613ee0565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613f7f602583612d72565b9150613f8a82613f23565b604082019050919050565b60006020820190508181036000830152613fae81613f72565b9050919050565b600060a082019050613fca6000830188612ff1565b613fd760208301876139ae565b8181036040830152613fe981866135a2565b9050613ff860608301856131c3565b6140056080830184612ff1565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404982612e8b565b915061405483612e8b565b9250826140645761406361400f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140cb602183612d72565b91506140d68261406f565b604082019050919050565b600060208201905081810360008301526140fa816140be565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614137601b83612d72565b915061414282614101565b602082019050919050565b600060208201905081810360008301526141668161412a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006141c9602683612d72565b91506141d48261416d565b604082019050919050565b600060208201905081810360008301526141f8816141bc565b9050919050565b600061420a82612e8b565b915061421583612e8b565b925082820390508181111561422d5761422c6133fd565b5b9291505056fea26469706673582212204824c76e145d0f9a01d198eee6405f89f2fe24c634af6ca646056cbc31417edd64736f6c63430008110033

Deployed Bytecode Sourcemap

19805:6425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8119:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10469:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25522:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20001:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9238:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11250:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25649:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20368:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11954:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24828:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20335:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24556:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20114:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22535:267;;;;;;;;;;;;;:::i;:::-;;20430:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20270:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9409:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6932:148;;;;;;;;;;;;;:::i;:::-;;25988:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25371:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6718:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8338:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12695:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9742:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25241:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23488:628;;;;;;;;;;;;;:::i;:::-;;20627:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24124:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9998:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25829;;;;;;;;;;;;;:::i;:::-;;7088:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8119:100;8173:13;8206:5;8199:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8119:100;:::o;10469:201::-;10552:4;10569:13;10585:12;:10;:12::i;:::-;10569:28;;10608:32;10617:5;10624:7;10633:6;10608:8;:32::i;:::-;10658:4;10651:11;;;10469:201;;;;:::o;25522:119::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25605:3:::1;25596:6;:12;;;;25629:4;25619:7;:14;;;;25522:119:::0;;:::o;20001:106::-;;;;;;;;;;;;;:::o;9238:108::-;9299:7;9326:12;;9319:19;;9238:108;:::o;11250:295::-;11381:4;11398:15;11416:12;:10;:12::i;:::-;11398:30;;11439:38;11455:4;11461:7;11470:6;11439:15;:38::i;:::-;11488:27;11498:4;11504:2;11508:6;11488:9;:27::i;:::-;11533:4;11526:11;;;11250:295;;;;;:::o;25649:135::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25769:7:::1;25751:15;:25;;;;:::i;:::-;25732:16;:44;;;;25649:135:::0;:::o;20368:27::-;;;;:::o;9081:92::-;9139:5;9164:1;9157:8;;9081:92;:::o;11954:238::-;12042:4;12059:13;12075:12;:10;:12::i;:::-;12059:28;;12098:64;12107:5;12114:7;12151:10;12123:25;12133:5;12140:7;12123:9;:25::i;:::-;:38;;;;:::i;:::-;12098:8;:64::i;:::-;12180:4;12173:11;;;11954:238;;;;:::o;24828:161::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24940:41:::1;24953:9;;24964:16;24940:12;:41::i;:::-;24828:161:::0;;;:::o;20335:26::-;;;;:::o;24556:264::-;24602:7;24623:21;24661:1;24647:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24623:40;;24684:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24674:4;24679:1;24674:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24735:4;24717;24722:1;24717:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24758:15;;;;;;;;;;;:29;;;24788:14;;24804:4;24758:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24810:1;24758:54;;;;;;;;:::i;:::-;;;;;;;;24751:61;;;24556:264;:::o;20114:25::-;;;;;;;;;;;;;:::o;22535:267::-;22577:28;22608:24;22626:4;22608:9;:24::i;:::-;22577:55;;22670:1;22647:20;:24;22643:152;;;22693:16;;;;;;;;;;;22688:96;;22730:38;22747:20;22730:16;:38::i;:::-;22688:96;22643:152;22566:236;22535:267::o;20430:42::-;;;;:::o;20270:58::-;;;;:::o;9409:127::-;9483:7;9510:9;:18;9520:7;9510:18;;;;;;;;;;;;;;;;9503:25;;9409:127;;;:::o;6932:148::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7039:1:::1;7002:40;;7023:6;;;;;;;;;;;7002:40;;;;;;;;;;;;7070:1;7053:6;;:19;;;;;;;;;;;;;;;;;;6932:148::o:0;25988:237::-;26061:17;26088:15;26061:43;;26115:15;26133:10;:20;;;26162:4;26133:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26115:53;;26179:10;:19;;;26199:8;;;;;;;;;;;26209:7;26179:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26050:175;;25988:237;:::o;25371:143::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25472:7:::1;25463:6;;:16;;;;;;;;;;;;;;;;;;25499:7;25490:6;;:16;;;;;;;;;;;;;;;;;;25371:143:::0;;:::o;6718:79::-;6756:7;6783:6;;;;;;;;;;;6776:13;;6718:79;:::o;8338:104::-;8394:13;8427:7;8420:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8338:104;:::o;12695:436::-;12788:4;12805:13;12821:12;:10;:12::i;:::-;12805:28;;12844:24;12871:25;12881:5;12888:7;12871:9;:25::i;:::-;12844:52;;12935:15;12915:16;:35;;12907:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13028:60;13037:5;13044:7;13072:15;13053:16;:34;13028:8;:60::i;:::-;13119:4;13112:11;;;;12695:436;;;;:::o;9742:193::-;9821:4;9838:13;9854:12;:10;:12::i;:::-;9838:28;;9877;9887:5;9894:2;9898:6;9877:9;:28::i;:::-;9923:4;9916:11;;;9742:193;;;;:::o;25241:122::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25340:15:::1;25323:14;:32;;;;25241:122:::0;:::o;23488:628::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23573:1:::1;23551:24;;:10;;;;;;;;;;;:24;;;23543:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23624:63;23641:4;23656:15;;;;;;;;;;;23674:12;;23624:8;:63::i;:::-;23729:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23711:55;;;23775:4;23782:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23711:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23698:10;;:107;;;;;;;;;;;;;;;;;;23816:15;;;;;;;;;;;:31;;;23855:21;23900:4;23920:24;23938:4;23920:9;:24::i;:::-;23959:1;23975::::0;23991:7:::1;:5;:7::i;:::-;24013:15;23816:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24047:10;;;;;;;;;;;24040:26;;;24075:15;;;;;;;;;;;24093:14;24040:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23488:628::o:0;20627:23::-;;;;;;;;;;;;;:::o;24124:424::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24254:7:::1;;:14;;24236:7;;:14;;:32;24228:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24326:12;24349:4;24326:28;;24369:9;24365:176;24386:7;;:14;;24382:1;:18;24365:176;;;24422:10;24435:7;;24443:1;24435:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24422:23;;24460:14;24477:7;;24485:1;24477:10;;;;;;;:::i;:::-;;;;;;;;24460:27;;24502;24512:4;24518:2;24522:6;24502:9;:27::i;:::-;24407:134;;24402:3;;;;;:::i;:::-;;;;24365:176;;;;24217:331;24124:424:::0;;;;:::o;9998:151::-;10087:7;10114:11;:18;10126:5;10114:18;;;;;;;;;;;;;;;:27;10133:7;10114:27;;;;;;;;;;;;;;;;10107:34;;9998:151;;;;:::o;25829:::-;25881:18;25902:21;25881:42;;25942:8;;;;;;;;;;;25934:26;;:38;25961:10;25934:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25870:110;25829:151::o;7088:244::-;6855:12;:10;:12::i;:::-;6845:22;;:6;;;;;;;;;;;:22;;;6837:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7197:1:::1;7177:22;;:8;:22;;::::0;7169:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7287:8;7258:38;;7279:6;;;;;;;;;;;7258:38;;;;;;;;;;;;7316:8;7307:6;;:17;;;;;;;;;;;;;;;;;;7088:244:::0;:::o;3060:98::-;3113:7;3140:10;3133:17;;3060:98;:::o;16320:380::-;16473:1;16456:19;;:5;:19;;;16448:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16554:1;16535:21;;:7;:21;;;16527:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16638:6;16608:11;:18;16620:5;16608:18;;;;;;;;;;;;;;;:27;16627:7;16608:27;;;;;;;;;;;;;;;:36;;;;16676:7;16660:32;;16669:5;16660:32;;;16685:6;16660:32;;;;;;:::i;:::-;;;;;;;;16320:380;;;:::o;16991:453::-;17126:24;17153:25;17163:5;17170:7;17153:9;:25::i;:::-;17126:52;;17213:17;17193:16;:37;17189:248;;17275:6;17255:16;:26;;17247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17359:51;17368:5;17375:7;17403:6;17384:16;:25;17359:8;:51::i;:::-;17189:248;17115:329;16991:453;;;:::o;20799:1728::-;20913:1;20897:18;;:4;:18;;;20889:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20990:1;20976:16;;:2;:16;;;20968:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21060:1;21051:6;:10;21043:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;21118:17;21161:8;;;;;;;;;;;21153:16;;:4;:16;;;;:34;;;;;21179:8;;;;;;;;;;;21173:14;;:2;:14;;;;21153:34;:59;;;;;21207:4;21191:21;;:4;:21;;;;21153:59;:82;;;;;21230:4;21216:19;;:2;:19;;;;21153:82;21150:1370;;;21264:27;21287:3;21264:18;21275:6;;21264;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21252:39;;21306:22;21331:21;21342:9;21331:6;:10;;:21;;;;:::i;:::-;21306:46;;21367:21;21391:33;21409:14;21391:13;21401:2;21391:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;21367:57;;21451:10;;;;;;;;;;;21443:18;;:4;:18;;;:36;;;;;21471:8;;;;;;;;;;;21465:14;;:2;:14;;;;21443:36;21439:160;;;21525:16;;21508:13;:33;;21500:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21439:160;21625:10;;;;;;;;;;;21617:18;;:4;:18;;;;:38;;;;;21645:10;;;;;;;;;;;21639:16;;:2;:16;;;;21617:38;21613:162;;;21701:16;;21684:13;:33;;21676:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21613:162;21801:10;;;;;;;;;;;21793:18;;:4;:18;;;;:38;;;;;21821:10;;;;;;;;;;;21815:16;;:2;:16;;;21793:38;21789:485;;;21864:28;21888:3;21864:19;21875:7;;21864:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21852:40;;21911:28;21942:24;21960:4;21942:9;:24::i;:::-;21911:55;;22012:1;21989:20;:24;21985:274;;;22038:19;22060:15;:13;:15::i;:::-;22038:37;;22126:11;22102:20;:35;;:56;;;;;22142:16;;;;;;;;;;;22141:17;22102:56;22098:142;;;22187:29;22204:11;22187:16;:29::i;:::-;22098:142;22015:244;21985:274;21833:441;21789:485;22303:1;22291:9;:13;22288:100;;;22325:47;22341:4;22355;22362:9;22325:15;:47::i;:::-;22288:100;22401:41;22417:4;22423:2;22427:14;22401:15;:41::i;:::-;21237:1217;;21150:1370;;;22475:33;22491:4;22497:2;22501:6;22475:15;:33::i;:::-;21150:1370;20878:1649;20799:1728;;;:::o;24997:236::-;25084:9;25079:147;25103:9;;:16;;25099:1;:20;25079:147;;;25141:12;25156:9;;25166:1;25156:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25141:27;;25210:4;25183:18;:24;25202:4;25183:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;25126:100;25121:3;;;;;:::i;:::-;;;;25079:147;;;;24997:236;;;:::o;22809:669::-;22875:21;22913:1;22899:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22875:40;;22944:4;22926;22931:1;22926:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22970:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22960:4;22965:1;22960:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23003:62;23020:4;23035:15;;;;;;;;;;;23053:11;23003:8;:62::i;:::-;23076:15;;;;;;;;;;;:66;;;23157:11;23183:1;23199:4;23226;23246:15;23076:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23285:18;23306:21;23285:42;;23338:17;23358;23373:1;23358:10;:14;;:17;;;;:::i;:::-;23338:37;;23396:6;;;;;;;;;;;23388:24;;:35;23413:9;23388:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23442:6;;;;;;;;;;;23434:24;;:35;23459:9;23434:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22864:614;;;22809:669;:::o;1732:471::-;1790:7;2040:1;2035;:6;2031:47;;2065:1;2058:8;;;;2031:47;2090:9;2106:1;2102;:5;;;;:::i;:::-;2090:17;;2135:1;2130;2126;:5;;;;:::i;:::-;:10;2118:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2194:1;2187:8;;;1732:471;;;;;:::o;2211:132::-;2269:7;2296:39;2300:1;2303;2296:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2289:46;;2211:132;;;;:::o;1388:136::-;1446:7;1473:43;1477:1;1480;1473:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1466:50;;1388:136;;;;:::o;1199:181::-;1257:7;1277:9;1293:1;1289;:5;;;;:::i;:::-;1277:17;;1318:1;1313;:6;;1305:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1371:1;1364:8;;;1199:181;;;;:::o;13601:671::-;13748:1;13732:18;;:4;:18;;;13724:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:1;13811:16;;:2;:16;;;13803:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:38;13901:4;13907:2;13911:6;13880:20;:38::i;:::-;13931:19;13953:9;:15;13963:4;13953:15;;;;;;;;;;;;;;;;13931:37;;14002:6;13987:11;:21;;13979:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14119:6;14105:11;:20;14087:9;:15;14097:4;14087:15;;;;;;;;;;;;;;;:38;;;;14164:6;14147:9;:13;14157:2;14147:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14203:2;14188:26;;14197:4;14188:26;;;14207:6;14188:26;;;;;;:::i;:::-;;;;;;;;14227:37;14247:4;14253:2;14257:6;14227:19;:37::i;:::-;13713:559;13601:671;;;:::o;2351:278::-;2437:7;2469:1;2465;:5;2472:12;2457:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2496:9;2512:1;2508;:5;;;;:::i;:::-;2496:17;;2620:1;2613:8;;;2351:278;;;;;:::o;1532:192::-;1618:7;1651:1;1646;:6;;1654:12;1638:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:9;1694:1;1690;:5;;;;:::i;:::-;1678:17;;1715:1;1708:8;;;1532:192;;;;;:::o;18044:125::-;;;;:::o;18773:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:153::-;4349:9;4382:37;4413:5;4382:37;:::i;:::-;4369:50;;4272:153;;;:::o;4431:185::-;4545:64;4603:5;4545:64;:::i;:::-;4540:3;4533:77;4431:185;;:::o;4622:276::-;4742:4;4780:2;4769:9;4765:18;4757:26;;4793:98;4888:1;4877:9;4873:17;4864:6;4793:98;:::i;:::-;4622:276;;;;:::o;4904:118::-;4991:24;5009:5;4991:24;:::i;:::-;4986:3;4979:37;4904:118;;:::o;5028:222::-;5121:4;5159:2;5148:9;5144:18;5136:26;;5172:71;5240:1;5229:9;5225:17;5216:6;5172:71;:::i;:::-;5028:222;;;;:::o;5256:619::-;5333:6;5341;5349;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5779:2;5805:53;5850:7;5841:6;5830:9;5826:22;5805:53;:::i;:::-;5795:63;;5750:118;5256:619;;;;;:::o;5881:329::-;5940:6;5989:2;5977:9;5968:7;5964:23;5960:32;5957:119;;;5995:79;;:::i;:::-;5957:119;6115:1;6140:53;6185:7;6176:6;6165:9;6161:22;6140:53;:::i;:::-;6130:63;;6086:117;5881:329;;;;:::o;6216:86::-;6251:7;6291:4;6284:5;6280:16;6269:27;;6216:86;;;:::o;6308:112::-;6391:22;6407:5;6391:22;:::i;:::-;6386:3;6379:35;6308:112;;:::o;6426:214::-;6515:4;6553:2;6542:9;6538:18;6530:26;;6566:67;6630:1;6619:9;6615:17;6606:6;6566:67;:::i;:::-;6426:214;;;;:::o;6646:117::-;6755:1;6752;6745:12;6769:117;6878:1;6875;6868:12;6892:117;7001:1;6998;6991:12;7032:568;7105:8;7115:6;7165:3;7158:4;7150:6;7146:17;7142:27;7132:122;;7173:79;;:::i;:::-;7132:122;7286:6;7273:20;7263:30;;7316:18;7308:6;7305:30;7302:117;;;7338:79;;:::i;:::-;7302:117;7452:4;7444:6;7440:17;7428:29;;7506:3;7498:4;7490:6;7486:17;7476:8;7472:32;7469:41;7466:128;;;7513:79;;:::i;:::-;7466:128;7032:568;;;;;:::o;7606:116::-;7676:21;7691:5;7676:21;:::i;:::-;7669:5;7666:32;7656:60;;7712:1;7709;7702:12;7656:60;7606:116;:::o;7728:133::-;7771:5;7809:6;7796:20;7787:29;;7825:30;7849:5;7825:30;:::i;:::-;7728:133;;;;:::o;7867:698::-;7959:6;7967;7975;8024:2;8012:9;8003:7;7999:23;7995:32;7992:119;;;8030:79;;:::i;:::-;7992:119;8178:1;8167:9;8163:17;8150:31;8208:18;8200:6;8197:30;8194:117;;;8230:79;;:::i;:::-;8194:117;8343:80;8415:7;8406:6;8395:9;8391:22;8343:80;:::i;:::-;8325:98;;;;8121:312;8472:2;8498:50;8540:7;8531:6;8520:9;8516:22;8498:50;:::i;:::-;8488:60;;8443:115;7867:698;;;;;:::o;8571:118::-;8658:24;8676:5;8658:24;:::i;:::-;8653:3;8646:37;8571:118;;:::o;8695:222::-;8788:4;8826:2;8815:9;8811:18;8803:26;;8839:71;8907:1;8896:9;8892:17;8883:6;8839:71;:::i;:::-;8695:222;;;;:::o;8923:329::-;8982:6;9031:2;9019:9;9010:7;9006:23;9002:32;8999:119;;;9037:79;;:::i;:::-;8999:119;9157:1;9182:53;9227:7;9218:6;9207:9;9203:22;9182:53;:::i;:::-;9172:63;;9128:117;8923:329;;;;:::o;9258:474::-;9326:6;9334;9383:2;9371:9;9362:7;9358:23;9354:32;9351:119;;;9389:79;;:::i;:::-;9351:119;9509:1;9534:53;9579:7;9570:6;9559:9;9555:22;9534:53;:::i;:::-;9524:63;;9480:117;9636:2;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9607:118;9258:474;;;;;:::o;9755:568::-;9828:8;9838:6;9888:3;9881:4;9873:6;9869:17;9865:27;9855:122;;9896:79;;:::i;:::-;9855:122;10009:6;9996:20;9986:30;;10039:18;10031:6;10028:30;10025:117;;;10061:79;;:::i;:::-;10025:117;10175:4;10167:6;10163:17;10151:29;;10229:3;10221:4;10213:6;10209:17;10199:8;10195:32;10192:41;10189:128;;;10236:79;;:::i;:::-;10189:128;9755:568;;;;;:::o;10329:934::-;10451:6;10459;10467;10475;10524:2;10512:9;10503:7;10499:23;10495:32;10492:119;;;10530:79;;:::i;:::-;10492:119;10678:1;10667:9;10663:17;10650:31;10708:18;10700:6;10697:30;10694:117;;;10730:79;;:::i;:::-;10694:117;10843:80;10915:7;10906:6;10895:9;10891:22;10843:80;:::i;:::-;10825:98;;;;10621:312;11000:2;10989:9;10985:18;10972:32;11031:18;11023:6;11020:30;11017:117;;;11053:79;;:::i;:::-;11017:117;11166:80;11238:7;11229:6;11218:9;11214:22;11166:80;:::i;:::-;11148:98;;;;10943:313;10329:934;;;;;;;:::o;11269:180::-;11317:77;11314:1;11307:88;11414:4;11411:1;11404:15;11438:4;11435:1;11428:15;11455:320;11499:6;11536:1;11530:4;11526:12;11516:22;;11583:1;11577:4;11573:12;11604:18;11594:81;;11660:4;11652:6;11648:17;11638:27;;11594:81;11722:2;11714:6;11711:14;11691:18;11688:38;11685:84;;11741:18;;:::i;:::-;11685:84;11506:269;11455:320;;;:::o;11781:182::-;11921:34;11917:1;11909:6;11905:14;11898:58;11781:182;:::o;11969:366::-;12111:3;12132:67;12196:2;12191:3;12132:67;:::i;:::-;12125:74;;12208:93;12297:3;12208:93;:::i;:::-;12326:2;12321:3;12317:12;12310:19;;11969:366;;;:::o;12341:419::-;12507:4;12545:2;12534:9;12530:18;12522:26;;12594:9;12588:4;12584:20;12580:1;12569:9;12565:17;12558:47;12622:131;12748:4;12622:131;:::i;:::-;12614:139;;12341:419;;;:::o;12766:180::-;12814:77;12811:1;12804:88;12911:4;12908:1;12901:15;12935:4;12932:1;12925:15;12952:410;12992:7;13015:20;13033:1;13015:20;:::i;:::-;13010:25;;13049:20;13067:1;13049:20;:::i;:::-;13044:25;;13104:1;13101;13097:9;13126:30;13144:11;13126:30;:::i;:::-;13115:41;;13305:1;13296:7;13292:15;13289:1;13286:22;13266:1;13259:9;13239:83;13216:139;;13335:18;;:::i;:::-;13216:139;13000:362;12952:410;;;;:::o;13368:191::-;13408:3;13427:20;13445:1;13427:20;:::i;:::-;13422:25;;13461:20;13479:1;13461:20;:::i;:::-;13456:25;;13504:1;13501;13497:9;13490:16;;13525:3;13522:1;13519:10;13516:36;;;13532:18;;:::i;:::-;13516:36;13368:191;;;;:::o;13565:180::-;13613:77;13610:1;13603:88;13710:4;13707:1;13700:15;13734:4;13731:1;13724:15;13751:143;13808:5;13839:6;13833:13;13824:22;;13855:33;13882:5;13855:33;:::i;:::-;13751:143;;;;:::o;13900:351::-;13970:6;14019:2;14007:9;13998:7;13994:23;13990:32;13987:119;;;14025:79;;:::i;:::-;13987:119;14145:1;14170:64;14226:7;14217:6;14206:9;14202:22;14170:64;:::i;:::-;14160:74;;14116:128;13900:351;;;;:::o;14257:180::-;14305:77;14302:1;14295:88;14402:4;14399:1;14392:15;14426:4;14423:1;14416:15;14443:114;14510:6;14544:5;14538:12;14528:22;;14443:114;;;:::o;14563:184::-;14662:11;14696:6;14691:3;14684:19;14736:4;14731:3;14727:14;14712:29;;14563:184;;;;:::o;14753:132::-;14820:4;14843:3;14835:11;;14873:4;14868:3;14864:14;14856:22;;14753:132;;;:::o;14891:108::-;14968:24;14986:5;14968:24;:::i;:::-;14963:3;14956:37;14891:108;;:::o;15005:179::-;15074:10;15095:46;15137:3;15129:6;15095:46;:::i;:::-;15173:4;15168:3;15164:14;15150:28;;15005:179;;;;:::o;15190:113::-;15260:4;15292;15287:3;15283:14;15275:22;;15190:113;;;:::o;15339:732::-;15458:3;15487:54;15535:5;15487:54;:::i;:::-;15557:86;15636:6;15631:3;15557:86;:::i;:::-;15550:93;;15667:56;15717:5;15667:56;:::i;:::-;15746:7;15777:1;15762:284;15787:6;15784:1;15781:13;15762:284;;;15863:6;15857:13;15890:63;15949:3;15934:13;15890:63;:::i;:::-;15883:70;;15976:60;16029:6;15976:60;:::i;:::-;15966:70;;15822:224;15809:1;15806;15802:9;15797:14;;15762:284;;;15766:14;16062:3;16055:10;;15463:608;;;15339:732;;;;:::o;16077:483::-;16248:4;16286:2;16275:9;16271:18;16263:26;;16299:71;16367:1;16356:9;16352:17;16343:6;16299:71;:::i;:::-;16417:9;16411:4;16407:20;16402:2;16391:9;16387:18;16380:48;16445:108;16548:4;16539:6;16445:108;:::i;:::-;16437:116;;16077:483;;;;;:::o;16566:281::-;16649:27;16671:4;16649:27;:::i;:::-;16641:6;16637:40;16779:6;16767:10;16764:22;16743:18;16731:10;16728:34;16725:62;16722:88;;;16790:18;;:::i;:::-;16722:88;16830:10;16826:2;16819:22;16609:238;16566:281;;:::o;16853:129::-;16887:6;16914:20;;:::i;:::-;16904:30;;16943:33;16971:4;16963:6;16943:33;:::i;:::-;16853:129;;;:::o;16988:311::-;17065:4;17155:18;17147:6;17144:30;17141:56;;;17177:18;;:::i;:::-;17141:56;17227:4;17219:6;17215:17;17207:25;;17287:4;17281;17277:15;17269:23;;16988:311;;;:::o;17305:143::-;17362:5;17393:6;17387:13;17378:22;;17409:33;17436:5;17409:33;:::i;:::-;17305:143;;;;:::o;17471:732::-;17578:5;17603:81;17619:64;17676:6;17619:64;:::i;:::-;17603:81;:::i;:::-;17594:90;;17704:5;17733:6;17726:5;17719:21;17767:4;17760:5;17756:16;17749:23;;17820:4;17812:6;17808:17;17800:6;17796:30;17849:3;17841:6;17838:15;17835:122;;;17868:79;;:::i;:::-;17835:122;17983:6;17966:231;18000:6;17995:3;17992:15;17966:231;;;18075:3;18104:48;18148:3;18136:10;18104:48;:::i;:::-;18099:3;18092:61;18182:4;18177:3;18173:14;18166:21;;18042:155;18026:4;18021:3;18017:14;18010:21;;17966:231;;;17970:21;17584:619;;17471:732;;;;;:::o;18226:385::-;18308:5;18357:3;18350:4;18342:6;18338:17;18334:27;18324:122;;18365:79;;:::i;:::-;18324:122;18475:6;18469:13;18500:105;18601:3;18593:6;18586:4;18578:6;18574:17;18500:105;:::i;:::-;18491:114;;18314:297;18226:385;;;;:::o;18617:554::-;18712:6;18761:2;18749:9;18740:7;18736:23;18732:32;18729:119;;;18767:79;;:::i;:::-;18729:119;18908:1;18897:9;18893:17;18887:24;18938:18;18930:6;18927:30;18924:117;;;18960:79;;:::i;:::-;18924:117;19065:89;19146:7;19137:6;19126:9;19122:22;19065:89;:::i;:::-;19055:99;;18858:306;18617:554;;;;:::o;19177:351::-;19247:6;19296:2;19284:9;19275:7;19271:23;19267:32;19264:119;;;19302:79;;:::i;:::-;19264:119;19422:1;19447:64;19503:7;19494:6;19483:9;19479:22;19447:64;:::i;:::-;19437:74;;19393:128;19177:351;;;;:::o;19534:332::-;19655:4;19693:2;19682:9;19678:18;19670:26;;19706:71;19774:1;19763:9;19759:17;19750:6;19706:71;:::i;:::-;19787:72;19855:2;19844:9;19840:18;19831:6;19787:72;:::i;:::-;19534:332;;;;;:::o;19872:137::-;19926:5;19957:6;19951:13;19942:22;;19973:30;19997:5;19973:30;:::i;:::-;19872:137;;;;:::o;20015:345::-;20082:6;20131:2;20119:9;20110:7;20106:23;20102:32;20099:119;;;20137:79;;:::i;:::-;20099:119;20257:1;20282:61;20335:7;20326:6;20315:9;20311:22;20282:61;:::i;:::-;20272:71;;20228:125;20015:345;;;;:::o;20366:224::-;20506:34;20502:1;20494:6;20490:14;20483:58;20575:7;20570:2;20562:6;20558:15;20551:32;20366:224;:::o;20596:366::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:419::-;21134:4;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;20968:419;;;:::o;21393:221::-;21533:34;21529:1;21521:6;21517:14;21510:58;21602:4;21597:2;21589:6;21585:15;21578:29;21393:221;:::o;21620:366::-;21762:3;21783:67;21847:2;21842:3;21783:67;:::i;:::-;21776:74;;21859:93;21948:3;21859:93;:::i;:::-;21977:2;21972:3;21968:12;21961:19;;21620:366;;;:::o;21992:419::-;22158:4;22196:2;22185:9;22181:18;22173:26;;22245:9;22239:4;22235:20;22231:1;22220:9;22216:17;22209:47;22273:131;22399:4;22273:131;:::i;:::-;22265:139;;21992:419;;;:::o;22417:332::-;22538:4;22576:2;22565:9;22561:18;22553:26;;22589:71;22657:1;22646:9;22642:17;22633:6;22589:71;:::i;:::-;22670:72;22738:2;22727:9;22723:18;22714:6;22670:72;:::i;:::-;22417:332;;;;;:::o;22755:85::-;22800:7;22829:5;22818:16;;22755:85;;;:::o;22846:158::-;22904:9;22937:61;22955:42;22964:32;22990:5;22964:32;:::i;:::-;22955:42;:::i;:::-;22937:61;:::i;:::-;22924:74;;22846:158;;;:::o;23010:147::-;23105:45;23144:5;23105:45;:::i;:::-;23100:3;23093:58;23010:147;;:::o;23163:807::-;23412:4;23450:3;23439:9;23435:19;23427:27;;23464:71;23532:1;23521:9;23517:17;23508:6;23464:71;:::i;:::-;23545:72;23613:2;23602:9;23598:18;23589:6;23545:72;:::i;:::-;23627:80;23703:2;23692:9;23688:18;23679:6;23627:80;:::i;:::-;23717;23793:2;23782:9;23778:18;23769:6;23717:80;:::i;:::-;23807:73;23875:3;23864:9;23860:19;23851:6;23807:73;:::i;:::-;23890;23958:3;23947:9;23943:19;23934:6;23890:73;:::i;:::-;23163:807;;;;;;;;;:::o;23976:663::-;24064:6;24072;24080;24129:2;24117:9;24108:7;24104:23;24100:32;24097:119;;;24135:79;;:::i;:::-;24097:119;24255:1;24280:64;24336:7;24327:6;24316:9;24312:22;24280:64;:::i;:::-;24270:74;;24226:128;24393:2;24419:64;24475:7;24466:6;24455:9;24451:22;24419:64;:::i;:::-;24409:74;;24364:129;24532:2;24558:64;24614:7;24605:6;24594:9;24590:22;24558:64;:::i;:::-;24548:74;;24503:129;23976:663;;;;;:::o;24645:229::-;24785:34;24781:1;24773:6;24769:14;24762:58;24854:12;24849:2;24841:6;24837:15;24830:37;24645:229;:::o;24880:366::-;25022:3;25043:67;25107:2;25102:3;25043:67;:::i;:::-;25036:74;;25119:93;25208:3;25119:93;:::i;:::-;25237:2;25232:3;25228:12;25221:19;;24880:366;;;:::o;25252:419::-;25418:4;25456:2;25445:9;25441:18;25433:26;;25505:9;25499:4;25495:20;25491:1;25480:9;25476:17;25469:47;25533:131;25659:4;25533:131;:::i;:::-;25525:139;;25252:419;;;:::o;25677:233::-;25716:3;25739:24;25757:5;25739:24;:::i;:::-;25730:33;;25785:66;25778:5;25775:77;25772:103;;25855:18;;:::i;:::-;25772:103;25902:1;25895:5;25891:13;25884:20;;25677:233;;;:::o;25916:225::-;26056:34;26052:1;26044:6;26040:14;26033:58;26125:8;26120:2;26112:6;26108:15;26101:33;25916:225;:::o;26147:366::-;26289:3;26310:67;26374:2;26369:3;26310:67;:::i;:::-;26303:74;;26386:93;26475:3;26386:93;:::i;:::-;26504:2;26499:3;26495:12;26488:19;;26147:366;;;:::o;26519:419::-;26685:4;26723:2;26712:9;26708:18;26700:26;;26772:9;26766:4;26762:20;26758:1;26747:9;26743:17;26736:47;26800:131;26926:4;26800:131;:::i;:::-;26792:139;;26519:419;;;:::o;26944:223::-;27084:34;27080:1;27072:6;27068:14;27061:58;27153:6;27148:2;27140:6;27136:15;27129:31;26944:223;:::o;27173:366::-;27315:3;27336:67;27400:2;27395:3;27336:67;:::i;:::-;27329:74;;27412:93;27501:3;27412:93;:::i;:::-;27530:2;27525:3;27521:12;27514:19;;27173:366;;;:::o;27545:419::-;27711:4;27749:2;27738:9;27734:18;27726:26;;27798:9;27792:4;27788:20;27784:1;27773:9;27769:17;27762:47;27826:131;27952:4;27826:131;:::i;:::-;27818:139;;27545:419;;;:::o;27970:221::-;28110:34;28106:1;28098:6;28094:14;28087:58;28179:4;28174:2;28166:6;28162:15;28155:29;27970:221;:::o;28197:366::-;28339:3;28360:67;28424:2;28419:3;28360:67;:::i;:::-;28353:74;;28436:93;28525:3;28436:93;:::i;:::-;28554:2;28549:3;28545:12;28538:19;;28197:366;;;:::o;28569:419::-;28735:4;28773:2;28762:9;28758:18;28750:26;;28822:9;28816:4;28812:20;28808:1;28797:9;28793:17;28786:47;28850:131;28976:4;28850:131;:::i;:::-;28842:139;;28569:419;;;:::o;28994:179::-;29134:31;29130:1;29122:6;29118:14;29111:55;28994:179;:::o;29179:366::-;29321:3;29342:67;29406:2;29401:3;29342:67;:::i;:::-;29335:74;;29418:93;29507:3;29418:93;:::i;:::-;29536:2;29531:3;29527:12;29520:19;;29179:366;;;:::o;29551:419::-;29717:4;29755:2;29744:9;29740:18;29732:26;;29804:9;29798:4;29794:20;29790:1;29779:9;29775:17;29768:47;29832:131;29958:4;29832:131;:::i;:::-;29824:139;;29551:419;;;:::o;29976:224::-;30116:34;30112:1;30104:6;30100:14;30093:58;30185:7;30180:2;30172:6;30168:15;30161:32;29976:224;:::o;30206:366::-;30348:3;30369:67;30433:2;30428:3;30369:67;:::i;:::-;30362:74;;30445:93;30534:3;30445:93;:::i;:::-;30563:2;30558:3;30554:12;30547:19;;30206:366;;;:::o;30578:419::-;30744:4;30782:2;30771:9;30767:18;30759:26;;30831:9;30825:4;30821:20;30817:1;30806:9;30802:17;30795:47;30859:131;30985:4;30859:131;:::i;:::-;30851:139;;30578:419;;;:::o;31003:222::-;31143:34;31139:1;31131:6;31127:14;31120:58;31212:5;31207:2;31199:6;31195:15;31188:30;31003:222;:::o;31231:366::-;31373:3;31394:67;31458:2;31453:3;31394:67;:::i;:::-;31387:74;;31470:93;31559:3;31470:93;:::i;:::-;31588:2;31583:3;31579:12;31572:19;;31231:366;;;:::o;31603:419::-;31769:4;31807:2;31796:9;31792:18;31784:26;;31856:9;31850:4;31846:20;31842:1;31831:9;31827:17;31820:47;31884:131;32010:4;31884:131;:::i;:::-;31876:139;;31603:419;;;:::o;32028:228::-;32168:34;32164:1;32156:6;32152:14;32145:58;32237:11;32232:2;32224:6;32220:15;32213:36;32028:228;:::o;32262:366::-;32404:3;32425:67;32489:2;32484:3;32425:67;:::i;:::-;32418:74;;32501:93;32590:3;32501:93;:::i;:::-;32619:2;32614:3;32610:12;32603:19;;32262:366;;;:::o;32634:419::-;32800:4;32838:2;32827:9;32823:18;32815:26;;32887:9;32881:4;32877:20;32873:1;32862:9;32858:17;32851:47;32915:131;33041:4;32915:131;:::i;:::-;32907:139;;32634:419;;;:::o;33059:224::-;33199:34;33195:1;33187:6;33183:14;33176:58;33268:7;33263:2;33255:6;33251:15;33244:32;33059:224;:::o;33289:366::-;33431:3;33452:67;33516:2;33511:3;33452:67;:::i;:::-;33445:74;;33528:93;33617:3;33528:93;:::i;:::-;33646:2;33641:3;33637:12;33630:19;;33289:366;;;:::o;33661:419::-;33827:4;33865:2;33854:9;33850:18;33842:26;;33914:9;33908:4;33904:20;33900:1;33889:9;33885:17;33878:47;33942:131;34068:4;33942:131;:::i;:::-;33934:139;;33661:419;;;:::o;34086:831::-;34349:4;34387:3;34376:9;34372:19;34364:27;;34401:71;34469:1;34458:9;34454:17;34445:6;34401:71;:::i;:::-;34482:80;34558:2;34547:9;34543:18;34534:6;34482:80;:::i;:::-;34609:9;34603:4;34599:20;34594:2;34583:9;34579:18;34572:48;34637:108;34740:4;34731:6;34637:108;:::i;:::-;34629:116;;34755:72;34823:2;34812:9;34808:18;34799:6;34755:72;:::i;:::-;34837:73;34905:3;34894:9;34890:19;34881:6;34837:73;:::i;:::-;34086:831;;;;;;;;:::o;34923:180::-;34971:77;34968:1;34961:88;35068:4;35065:1;35058:15;35092:4;35089:1;35082:15;35109:185;35149:1;35166:20;35184:1;35166:20;:::i;:::-;35161:25;;35200:20;35218:1;35200:20;:::i;:::-;35195:25;;35239:1;35229:35;;35244:18;;:::i;:::-;35229:35;35286:1;35283;35279:9;35274:14;;35109:185;;;;:::o;35300:220::-;35440:34;35436:1;35428:6;35424:14;35417:58;35509:3;35504:2;35496:6;35492:15;35485:28;35300:220;:::o;35526:366::-;35668:3;35689:67;35753:2;35748:3;35689:67;:::i;:::-;35682:74;;35765:93;35854:3;35765:93;:::i;:::-;35883:2;35878:3;35874:12;35867:19;;35526:366;;;:::o;35898:419::-;36064:4;36102:2;36091:9;36087:18;36079:26;;36151:9;36145:4;36141:20;36137:1;36126:9;36122:17;36115:47;36179:131;36305:4;36179:131;:::i;:::-;36171:139;;35898:419;;;:::o;36323:177::-;36463:29;36459:1;36451:6;36447:14;36440:53;36323:177;:::o;36506:366::-;36648:3;36669:67;36733:2;36728:3;36669:67;:::i;:::-;36662:74;;36745:93;36834:3;36745:93;:::i;:::-;36863:2;36858:3;36854:12;36847:19;;36506:366;;;:::o;36878:419::-;37044:4;37082:2;37071:9;37067:18;37059:26;;37131:9;37125:4;37121:20;37117:1;37106:9;37102:17;37095:47;37159:131;37285:4;37159:131;:::i;:::-;37151:139;;36878:419;;;:::o;37303:225::-;37443:34;37439:1;37431:6;37427:14;37420:58;37512:8;37507:2;37499:6;37495:15;37488:33;37303:225;:::o;37534:366::-;37676:3;37697:67;37761:2;37756:3;37697:67;:::i;:::-;37690:74;;37773:93;37862:3;37773:93;:::i;:::-;37891:2;37886:3;37882:12;37875:19;;37534:366;;;:::o;37906:419::-;38072:4;38110:2;38099:9;38095:18;38087:26;;38159:9;38153:4;38149:20;38145:1;38134:9;38130:17;38123:47;38187:131;38313:4;38187:131;:::i;:::-;38179:139;;37906:419;;;:::o;38331:194::-;38371:4;38391:20;38409:1;38391:20;:::i;:::-;38386:25;;38425:20;38443:1;38425:20;:::i;:::-;38420:25;;38469:1;38466;38462:9;38454:17;;38493:1;38487:4;38484:11;38481:37;;;38498:18;;:::i;:::-;38481:37;38331:194;;;;:::o

Swarm Source

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