ETH Price: $3,293.31 (-1.14%)

Token

$SCRATCH ($SCRATCH)
 

Overview

Max Total Supply

10,000,000,000 $SCRATCH

Holders

205

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,425,092.302526294961862912 $SCRATCH

Value
$0.00
0x7afa9d836d2fccf172b66622625e56404e465dbd
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:
$SCRATCH

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-28
*/

//  =H=H=  :::===  :::===== :::====  :::====  :::==== :::===== :::  ===
// ==H H   :::     :::      :::  === :::  === :::==== :::      :::  ===
//  =====   =====  ===      =======  ========   ===   ===      ========
//   H H==     === ===      === ===  ===  ===   ===   ===      ===  ===
//  =H=H=  ======   ======= ===  === ===  ===   ===    ======= ===  ===
                                                                                           
                                                                                                                                
//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.8;

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

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

interface IBEP20 {
    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 IBEP20Metadata is IBEP20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

contract BEP20 is Context, IBEP20, IBEP20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {BEP20} 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
     * {IBEP20-balanceOf} and {IBEP20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, 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), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

contract $SCRATCH is BEP20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _interlock = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 5e5 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 3;
    uint256 private launchtax = 99;

    address public marketingWallet = 0x624f0349b71f56a7bD2FCa5F5A624D53eC05E6B6;  // Wallet where the tax goes
    address public devWallet = 0xc96910E6d15F3e9729A0839A1BFc2b31775d8632; // Developer Wallet
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; 

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 dev;
    }

    Taxes public taxes = Taxes(10, 0, 0);
    Taxes public sellTaxes = Taxes(3, 0, 0);

    mapping(address => bool) public exemptFee;

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() BEP20("$SCRATCH", "$SCRATCH") {
        _tokengeneration(msg.sender, 1e10 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pancake pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
//////// JS WALLET
        exemptFee[0x23C99f168E3B3C0b5f52C094b062f0077cc69afF] = true;
//////// Mexican WALLET
        exemptFee[0x6661B69E92C80280Eb2a973ED32F5E46266cD2c2] = true;
//////// BostonShark WALLET
        exemptFee[0x01fC66A8745A4F5cEBfF891192aA95acbEF6FA78] = true;
//////// VP Wallet
        exemptFee[0x5D7c261B5098A20C5633E2850daD4781043D3D5E] = true;

    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +      
                sellTaxes.dev;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (sender == pair && recipient != address(router) && !useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 MarketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (MarketingAmt > 0) {
                payable(marketingWallet).sendValue(MarketingAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

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

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

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 1e7, "Swap threshold amount should be lower or equal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function SetBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
        require((_marketing + _liquidity + _dev) <= 12, "Must keep fees at 12% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        require((_marketing + _liquidity + _dev) <= 12, "Must keep fees at 12% or less");
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 5,"Deadline should be less than 5 Blocks");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        devWallet = newWallet;
    }

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

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function rescueBNB(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueBSC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IBEP20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueBSC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600760146101000a81548160ff0219169083151502179055505f600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff0219169083151502179055506969e10de76676d08000006008556003600a556063600b5573624f0349b71f56a7bd2fca5f5a624d53ec05e6b6600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c96910e6d15f3e9729a0839a1bfc2b31775d8632600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060600160405280600a81526020015f81526020015f815250600e5f820151815f0155602082015181600101556040820151816002015550506040518060600160405280600381526020015f81526020015f81525060115f820151815f015560208201518160010155604082015181600201555050348015610195575f80fd5b506040518060400160405280600881526020017f24534352415443480000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f245343524154434800000000000000000000000000000000000000000000000081525081600390816102119190610bbc565b5080600490816102219190610bbc565b5050506102406102356107ff60201b60201c565b61080660201b60201c565b610279336102526108c960201b60201c565b600a61025e9190610df3565b6402540be40061026e9190610e3d565b6108d160201b60201c565b600160145f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610330573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103549190610edc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103dd9190610edc565b6040518363ffffffff1660e01b81526004016103fa929190610f16565b6020604051808303815f875af1158015610416573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043a9190610edc565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160145f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f7323c99f168e3b3c0b5f52c094b062f0077cc69aff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f736661b69e92c80280eb2a973ed32f5e46266cd2c273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f7301fc66a8745a4f5cebff891192aa95acbef6fa7873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160145f735d7c261b5098a20c5633e2850dad4781043d3d5e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050610f65565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b80600281905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109769190610f4c565b60405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806109fd57607f821691505b602082108103610a1057610a0f6109b9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610a727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610a37565b610a7c8683610a37565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610ac0610abb610ab684610a94565b610a9d565b610a94565b9050919050565b5f819050919050565b610ad983610aa6565b610aed610ae582610ac7565b848454610a43565b825550505050565b5f90565b610b01610af5565b610b0c818484610ad0565b505050565b5b81811015610b2f57610b245f82610af9565b600181019050610b12565b5050565b601f821115610b7457610b4581610a16565b610b4e84610a28565b81016020851015610b5d578190505b610b71610b6985610a28565b830182610b11565b50505b505050565b5f82821c905092915050565b5f610b945f1984600802610b79565b1980831691505092915050565b5f610bac8383610b85565b9150826002028217905092915050565b610bc582610982565b67ffffffffffffffff811115610bde57610bdd61098c565b5b610be882546109e6565b610bf3828285610b33565b5f60209050601f831160018114610c24575f8415610c12578287015190505b610c1c8582610ba1565b865550610c83565b601f198416610c3286610a16565b5f5b82811015610c5957848901518255600182019150602085019450602081019050610c34565b86831015610c765784890151610c72601f891682610b85565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610d0d57808604811115610ce957610ce8610c8b565b5b6001851615610cf85780820291505b8081029050610d0685610cb8565b9450610ccd565b94509492505050565b5f82610d255760019050610de0565b81610d32575f9050610de0565b8160018114610d485760028114610d5257610d81565b6001915050610de0565b60ff841115610d6457610d63610c8b565b5b8360020a915084821115610d7b57610d7a610c8b565b5b50610de0565b5060208310610133831016604e8410600b8410161715610db65782820a905083811115610db157610db0610c8b565b5b610de0565b610dc38484846001610cc4565b92509050818404811115610dda57610dd9610c8b565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610dfd82610a94565b9150610e0883610de7565b9250610e357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610d16565b905092915050565b5f610e4782610a94565b9150610e5283610a94565b9250828202610e6081610a94565b91508282048414831517610e7757610e76610c8b565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610eab82610e82565b9050919050565b610ebb81610ea1565b8114610ec5575f80fd5b50565b5f81519050610ed681610eb2565b92915050565b5f60208284031215610ef157610ef0610e7e565b5b5f610efe84828501610ec8565b91505092915050565b610f1081610ea1565b82525050565b5f604082019050610f295f830185610f07565b610f366020830184610f07565b9392505050565b610f4681610a94565b82525050565b5f602082019050610f5f5f830184610f3d565b92915050565b61440580610f725f395ff3fe608060405260043610610228575f3560e01c8063715018a611610122578063a9059cbb116100aa578063edaa11681161006e578063edaa1168146107f3578063f2fde38b1461081b578063f66895a314610843578063f887ea401461086f578063fbe6324e146108995761022f565b8063a9059cbb146106ef578063aacebbe31461072b578063c5d32bb214610753578063c9300ed51461078f578063dd62ed3e146107b75761022f565b80638da5cb5b116100f15780638da5cb5b1461060b5780638ea5220f1461063557806395d89b411461065f578063a457c2d714610689578063a8aa1b31146106c55761022f565b8063715018a614610575578063728f8eea1461058b57806375f0a874146105b757806385141a77146105e15761022f565b8063274a533c116101b0578063441b1d3011610174578063441b1d30146104975780634a2b3b13146104bf5780634ada218b146104e75780634e736f221461051157806370a08231146105395761022f565b8063274a533c146103b7578063313ce567146103e1578063355496ca1461040b578063395093511461043357806342b6fa111461046f5761022f565b80631675d802116101f75780631675d802146102e957806318160ddd146103135780631816467f1461033d5780631d97b7cd1461036557806323b872dd1461037b5761022f565b806306fdde0314610233578063095ea7b31461025d5780630e375a5c146102995780631340538f146102c15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b506102476108c3565b6040516102549190612d93565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190612e51565b610953565b6040516102909190612ea9565b60405180910390f35b3480156102a4575f80fd5b506102bf60048036038101906102ba919061302c565b610970565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190613086565b610a77565b005b3480156102f4575f80fd5b506102fd610b10565b60405161030a91906130c0565b60405180910390f35b34801561031e575f80fd5b50610327610b16565b60405161033491906130c0565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e91906130d9565b610b1f565b005b348015610370575f80fd5b50610379610c4c565b005b348015610386575f80fd5b506103a1600480360381019061039c9190613104565b610d57565b6040516103ae9190612ea9565b60405180910390f35b3480156103c2575f80fd5b506103cb610e52565b6040516103d891906130c0565b60405180910390f35b3480156103ec575f80fd5b506103f5610e58565b604051610402919061316f565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190613188565b610e60565b005b34801561043e575f80fd5b5061045960048036038101906104549190612e51565b610f34565b6040516104669190612ea9565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906131c6565b610fdb565b005b3480156104a2575f80fd5b506104bd60048036038101906104b891906131c6565b6110c5565b005b3480156104ca575f80fd5b506104e560048036038101906104e091906131f1565b61118f565b005b3480156104f2575f80fd5b506104fb6112a6565b6040516105089190612ea9565b60405180910390f35b34801561051c575f80fd5b50610537600480360381019061053291906131f1565b6112b9565b005b348015610544575f80fd5b5061055f600480360381019061055a91906130d9565b6113d0565b60405161056c91906130c0565b60405180910390f35b348015610580575f80fd5b50610589611415565b005b348015610596575f80fd5b5061059f61149c565b6040516105ae93929190613241565b60405180910390f35b3480156105c2575f80fd5b506105cb6114b3565b6040516105d89190613285565b60405180910390f35b3480156105ec575f80fd5b506105f56114d8565b6040516106029190613285565b60405180910390f35b348015610616575f80fd5b5061061f6114de565b60405161062c9190613285565b60405180910390f35b348015610640575f80fd5b50610649611506565b6040516106569190613285565b60405180910390f35b34801561066a575f80fd5b5061067361152b565b6040516106809190612d93565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa9190612e51565b6115bb565b6040516106bc9190612ea9565b60405180910390f35b3480156106d0575f80fd5b506106d96116aa565b6040516106e69190613285565b60405180910390f35b3480156106fa575f80fd5b5061071560048036038101906107109190612e51565b6116cf565b6040516107229190612ea9565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906130d9565b6116e5565b005b34801561075e575f80fd5b50610779600480360381019061077491906130d9565b611812565b6040516107869190612ea9565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b09190612e51565b61182f565b005b3480156107c2575f80fd5b506107dd60048036038101906107d8919061329e565b6119a0565b6040516107ea91906130c0565b60405180910390f35b3480156107fe575f80fd5b50610819600480360381019061081491906131c6565b611a22565b005b348015610826575f80fd5b50610841600480360381019061083c91906130d9565b611b3b565b005b34801561084e575f80fd5b50610857611c31565b60405161086693929190613241565b60405180910390f35b34801561087a575f80fd5b50610883611c48565b6040516108909190613337565b60405180910390f35b3480156108a4575f80fd5b506108ad611c6d565b6040516108ba9190612ea9565b60405180910390f35b6060600380546108d29061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061337d565b80156109495780601f1061092057610100808354040283529160200191610949565b820191905f5260205f20905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b5f61096661095f611c80565b8484611c87565b6001905092915050565b610978611c80565b73ffffffffffffffffffffffffffffffffffffffff166109966114de565b73ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906133f7565b60405180910390fd5b5f5b8251811015610a72578160145f858481518110610a0e57610a0d613415565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109ee565b505050565b610a7f611c80565b73ffffffffffffffffffffffffffffffffffffffff16610a9d6114de565b73ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea906133f7565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b5f600254905090565b610b27611c80565b73ffffffffffffffffffffffffffffffffffffffff16610b456114de565b73ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c00906134b2565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c54611c80565b73ffffffffffffffffffffffffffffffffffffffff16610c726114de565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906133f7565b60405180910390fd5b600760169054906101000a900460ff1615610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f9061351a565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600981905550565b5f610d63848484611e4a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610daa611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906135a8565b60405180910390fd5b610e4685610e35611c80565b8584610e4191906135f3565b611c87565b60019150509392505050565b60095481565b5f6012905090565b610e68611c80565b73ffffffffffffffffffffffffffffffffffffffff16610e866114de565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed3906133f7565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610fd1610f40611c80565b848460015f610f4d611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fcc9190613626565b611c87565b6001905092915050565b610fe3611c80565b73ffffffffffffffffffffffffffffffffffffffff166110016114de565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906133f7565b60405180910390fd5b6298968081111561109d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906136c9565b60405180910390fd5b6110a5610e58565b600a6110b19190613816565b816110bc9190613860565b60088190555050565b6110cd611c80565b73ffffffffffffffffffffffffffffffffffffffff166110eb6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611138906133f7565b60405180910390fd5b6111496114de565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561118b573d5f803e3d5ffd5b5050565b611197611c80565b73ffffffffffffffffffffffffffffffffffffffff166111b56114de565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906133f7565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e5f820151815f01556020820151816001015560408201518160020155905050600c8183856112569190613626565b6112609190613626565b11156112a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611298906138eb565b60405180910390fd5b505050565b600760169054906101000a900460ff1681565b6112c1611c80565b73ffffffffffffffffffffffffffffffffffffffff166112df6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c906133f7565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060115f820151815f01556020820151816001015560408201518160020155905050600c8183856113809190613626565b61138a9190613626565b11156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906138eb565b60405180910390fd5b505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61141d611c80565b73ffffffffffffffffffffffffffffffffffffffff1661143b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906133f7565b60405180910390fd5b61149a5f6123d1565b565b600e805f0154908060010154908060020154905083565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461153a9061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546115669061337d565b80156115b15780601f10611588576101008083540402835291602001916115b1565b820191905f5260205f20905b81548152906001019060200180831161159457829003601f168201915b5050505050905090565b5f8060015f6115c8611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613979565b60405180910390fd5b61169f61168d611c80565b85858461169a91906135f3565b611c87565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6116db338484611e4a565b6001905092915050565b6116ed611c80565b73ffffffffffffffffffffffffffffffffffffffff1661170b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611758906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906134b2565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6014602052805f5260405f205f915054906101000a900460ff1681565b611837611c80565b73ffffffffffffffffffffffffffffffffffffffff166118556114de565b73ffffffffffffffffffffffffffffffffffffffff16146118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a2906133f7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613a07565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61193d6114de565b836040518363ffffffff1660e01b815260040161195b929190613a25565b6020604051808303815f875af1158015611977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199b9190613a60565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611a2a611c80565b73ffffffffffffffffffffffffffffffffffffffff16611a486114de565b73ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a95906133f7565b60405180910390fd5b600760169054906101000a900460ff1615611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613afb565b60405180910390fd5b60058110611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613b89565b60405180910390fd5b80600a8190555050565b611b43611c80565b73ffffffffffffffffffffffffffffffffffffffff16611b616114de565b73ffffffffffffffffffffffffffffffffffffffff1614611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613c17565b60405180910390fd5b611c2e816123d1565b50565b6011805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613ca5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a90613d33565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e3d91906130c0565b60405180910390a3505050565b5f8111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613dc1565b60405180910390fd5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f2a575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f7f57600760169054906101000a900460ff16611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613e29565b60405180910390fd5b5b5f805f611f8a612d05565b5f60145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612029575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120435750600a546009546120409190613626565b43105b9050600760149054906101000a900460ff16806120a6575060145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120f7575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612104575f92506122e5565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561215e575080155b156121be5760116002015460115f015460116001015461217e9190613626565b6121889190613626565b945084935060116040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e4565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015612267575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015612271575080155b156122d157600e60020154600e5f0154600e600101546122919190613626565b61229b9190613626565b9450849350600e6040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e3565b80156122e257600b549450600b5493505b5b5b5b606484876122f39190613860565b6122fd9190613e74565b9250600760159054906101000a900460ff168015612368575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612378576123778583612494565b5b61238e8888858961238991906135f3565b61269c565b5f8311156123c7575f8511156123c6575f606486886123ad9190613860565b6123b79190613e74565b90506123c489308361269c565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612698576001600760146101000a81548160ff0219169083151502179055505f82031561267d575f6124d5306113d0565b9050600854811061267b57600160085411156124f15760085490505b5f6002846124ff9190613860565b90505f818460200151846125139190613860565b61251d9190613e74565b90505f818461252c91906135f3565b90505f47905061253b82612904565b5f814761254891906135f3565b90505f87602001518661255b91906135f3565b826125669190613e74565b90505f8860200151826125799190613860565b90505f81111561258e5761258d8682612b3a565b5b5f895f01516002846125a09190613860565b6125aa9190613860565b90505f8111156125ff576125fe81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5f8a604001516002856126129190613860565b61261c9190613860565b90505f8111156126715761267081600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f90613fa2565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614030565b60405180910390fd5b818161280791906135f3565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128929190613626565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f691906130c0565b60405180910390a350505050565b5f600267ffffffffffffffff8111156129205761291f612ec6565b5b60405190808252806020026020018201604052801561294e5781602001602082028036833780820191505090505b50905030815f8151811061296557612964613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a2d9190614062565b81600181518110612a4157612a40613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aa73060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b0995949392919061417d565b5f604051808303815f87803b158015612b20575f80fd5b505af1158015612b32573d5f803e3d5ffd5b505050505050565b612b663060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612bcd969594939291906141d5565b60606040518083038185885af1158015612be9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c0e9190614248565b5050505050565b80471015612c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4f906142e2565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612c7d9061432d565b5f6040518083038185875af1925050503d805f8114612cb7576040519150601f19603f3d011682016040523d82523d5f602084013e612cbc565b606091505b5050905080612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf7906143b1565b60405180910390fd5b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d6582612d23565b612d6f8185612d2d565b9350612d7f818560208601612d3d565b612d8881612d4b565b840191505092915050565b5f6020820190508181035f830152612dab8184612d5b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ded82612dc4565b9050919050565b612dfd81612de3565b8114612e07575f80fd5b50565b5f81359050612e1881612df4565b92915050565b5f819050919050565b612e3081612e1e565b8114612e3a575f80fd5b50565b5f81359050612e4b81612e27565b92915050565b5f8060408385031215612e6757612e66612dbc565b5b5f612e7485828601612e0a565b9250506020612e8585828601612e3d565b9150509250929050565b5f8115159050919050565b612ea381612e8f565b82525050565b5f602082019050612ebc5f830184612e9a565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612efc82612d4b565b810181811067ffffffffffffffff82111715612f1b57612f1a612ec6565b5b80604052505050565b5f612f2d612db3565b9050612f398282612ef3565b919050565b5f67ffffffffffffffff821115612f5857612f57612ec6565b5b602082029050602081019050919050565b5f80fd5b5f612f7f612f7a84612f3e565b612f24565b90508083825260208201905060208402830185811115612fa257612fa1612f69565b5b835b81811015612fcb5780612fb78882612e0a565b845260208401935050602081019050612fa4565b5050509392505050565b5f82601f830112612fe957612fe8612ec2565b5b8135612ff9848260208601612f6d565b91505092915050565b61300b81612e8f565b8114613015575f80fd5b50565b5f8135905061302681613002565b92915050565b5f806040838503121561304257613041612dbc565b5b5f83013567ffffffffffffffff81111561305f5761305e612dc0565b5b61306b85828601612fd5565b925050602061307c85828601613018565b9150509250929050565b5f6020828403121561309b5761309a612dbc565b5b5f6130a884828501613018565b91505092915050565b6130ba81612e1e565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612dbc565b5b5f6130fb84828501612e0a565b91505092915050565b5f805f6060848603121561311b5761311a612dbc565b5b5f61312886828701612e0a565b935050602061313986828701612e0a565b925050604061314a86828701612e3d565b9150509250925092565b5f60ff82169050919050565b61316981613154565b82525050565b5f6020820190506131825f830184613160565b92915050565b5f806040838503121561319e5761319d612dbc565b5b5f6131ab85828601612e0a565b92505060206131bc85828601613018565b9150509250929050565b5f602082840312156131db576131da612dbc565b5b5f6131e884828501612e3d565b91505092915050565b5f805f6060848603121561320857613207612dbc565b5b5f61321586828701612e3d565b935050602061322686828701612e3d565b925050604061323786828701612e3d565b9150509250925092565b5f6060820190506132545f8301866130b1565b61326160208301856130b1565b61326e60408301846130b1565b949350505050565b61327f81612de3565b82525050565b5f6020820190506132985f830184613276565b92915050565b5f80604083850312156132b4576132b3612dbc565b5b5f6132c185828601612e0a565b92505060206132d285828601612e0a565b9150509250929050565b5f819050919050565b5f6132ff6132fa6132f584612dc4565b6132dc565b612dc4565b9050919050565b5f613310826132e5565b9050919050565b5f61332182613306565b9050919050565b61333181613317565b82525050565b5f60208201905061334a5f830184613328565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061339457607f821691505b6020821081036133a7576133a6613350565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133e1602083612d2d565b91506133ec826133ad565b602082019050919050565b5f6020820190508181035f83015261340e816133d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f46656520416464726573732063616e6e6f74206265207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602283612d2d565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e6700000000000000005f82015250565b5f613504601883612d2d565b915061350f826134d0565b602082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613592602883612d2d565b915061359d82613538565b604082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135fd82612e1e565b915061360883612e1e565b92508282039050818111156136205761361f6135c6565b5b92915050565b5f61363082612e1e565b915061363b83612e1e565b9250828201905080821115613653576136526135c6565b5b92915050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c64206265205f8201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000602082015250565b5f6136b3603e83612d2d565b91506136be82613659565b604082019050919050565b5f6020820190508181035f8301526136e0816136a7565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561373c57808604811115613718576137176135c6565b5b60018516156137275780820291505b8081029050613735856136e7565b94506136fc565b94509492505050565b5f82613754576001905061380f565b81613761575f905061380f565b81600181146137775760028114613781576137b0565b600191505061380f565b60ff841115613793576137926135c6565b5b8360020a9150848211156137aa576137a96135c6565b5b5061380f565b5060208310610133831016604e8410600b84101617156137e55782820a9050838111156137e0576137df6135c6565b5b61380f565b6137f284848460016136f3565b92509050818404811115613809576138086135c6565b5b81810290505b9392505050565b5f61382082612e1e565b915061382b83613154565b92506138587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613745565b905092915050565b5f61386a82612e1e565b915061387583612e1e565b925082820261388381612e1e565b9150828204841483151761389a576138996135c6565b5b5092915050565b7f4d757374206b656570206665657320617420313225206f72206c6573730000005f82015250565b5f6138d5601d83612d2d565b91506138e0826138a1565b602082019050919050565b5f6020820190508181035f830152613902816138c9565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613963602583612d2d565b915061396e82613909565b604082019050919050565b5f6020820190508181035f83015261399081613957565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f6139f1603683612d2d565b91506139fc82613997565b604082019050919050565b5f6020820190508181035f830152613a1e816139e5565b9050919050565b5f604082019050613a385f830185613276565b613a4560208301846130b1565b9392505050565b5f81519050613a5a81613002565b92915050565b5f60208284031215613a7557613a74612dbc565b5b5f613a8284828501613a4c565b91505092915050565b7f43616e2774206368616e6765207768656e2074726164696e67206861732073745f8201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b5f613ae5602583612d2d565b9150613af082613a8b565b604082019050919050565b5f6020820190508181035f830152613b1281613ad9565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e203520425f8201527f6c6f636b73000000000000000000000000000000000000000000000000000000602082015250565b5f613b73602583612d2d565b9150613b7e82613b19565b604082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c01602683612d2d565b9150613c0c82613ba7565b604082019050919050565b5f6020820190508181035f830152613c2e81613bf5565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c8f602483612d2d565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d1d602283612d2d565b9150613d2882613cc3565b604082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613dab602983612d2d565b9150613db682613d51565b604082019050919050565b5f6020820190508181035f830152613dd881613d9f565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613e13601383612d2d565b9150613e1e82613ddf565b602082019050919050565b5f6020820190508181035f830152613e4081613e07565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e7e82612e1e565b9150613e8983612e1e565b925082613e9957613e98613e47565b5b828204905092915050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613efe602583612d2d565b9150613f0982613ea4565b604082019050919050565b5f6020820190508181035f830152613f2b81613ef2565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8c602383612d2d565b9150613f9782613f32565b604082019050919050565b5f6020820190508181035f830152613fb981613f80565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61401a602683612d2d565b915061402582613fc0565b604082019050919050565b5f6020820190508181035f8301526140478161400e565b9050919050565b5f8151905061405c81612df4565b92915050565b5f6020828403121561407757614076612dbc565b5b5f6140848482850161404e565b91505092915050565b5f819050919050565b5f6140b06140ab6140a68461408d565b6132dc565b612e1e565b9050919050565b6140c081614096565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140f881612de3565b82525050565b5f61410983836140ef565b60208301905092915050565b5f602082019050919050565b5f61412b826140c6565b61413581856140d0565b9350614140836140e0565b805f5b8381101561417057815161415788826140fe565b975061416283614115565b925050600181019050614143565b5085935050505092915050565b5f60a0820190506141905f8301886130b1565b61419d60208301876140b7565b81810360408301526141af8186614121565b90506141be6060830185613276565b6141cb60808301846130b1565b9695505050505050565b5f60c0820190506141e85f830189613276565b6141f560208301886130b1565b61420260408301876140b7565b61420f60608301866140b7565b61421c6080830185613276565b61422960a08301846130b1565b979650505050505050565b5f8151905061424281612e27565b92915050565b5f805f6060848603121561425f5761425e612dbc565b5b5f61426c86828701614234565b935050602061427d86828701614234565b925050604061428e86828701614234565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6142cc601d83612d2d565b91506142d782614298565b602082019050919050565b5f6020820190508181035f8301526142f9816142c0565b9050919050565b5f81905092915050565b50565b5f6143185f83614300565b91506143238261430a565b5f82019050919050565b5f6143378261430d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61439b603a83612d2d565b91506143a682614341565b604082019050919050565b5f6020820190508181035f8301526143c88161438f565b905091905056fea26469706673582212206d77db5104c2e07c45ccc5c726301c901c8cc063706942b9cd3913bcc1c45ba964736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610228575f3560e01c8063715018a611610122578063a9059cbb116100aa578063edaa11681161006e578063edaa1168146107f3578063f2fde38b1461081b578063f66895a314610843578063f887ea401461086f578063fbe6324e146108995761022f565b8063a9059cbb146106ef578063aacebbe31461072b578063c5d32bb214610753578063c9300ed51461078f578063dd62ed3e146107b75761022f565b80638da5cb5b116100f15780638da5cb5b1461060b5780638ea5220f1461063557806395d89b411461065f578063a457c2d714610689578063a8aa1b31146106c55761022f565b8063715018a614610575578063728f8eea1461058b57806375f0a874146105b757806385141a77146105e15761022f565b8063274a533c116101b0578063441b1d3011610174578063441b1d30146104975780634a2b3b13146104bf5780634ada218b146104e75780634e736f221461051157806370a08231146105395761022f565b8063274a533c146103b7578063313ce567146103e1578063355496ca1461040b578063395093511461043357806342b6fa111461046f5761022f565b80631675d802116101f75780631675d802146102e957806318160ddd146103135780631816467f1461033d5780631d97b7cd1461036557806323b872dd1461037b5761022f565b806306fdde0314610233578063095ea7b31461025d5780630e375a5c146102995780631340538f146102c15761022f565b3661022f57005b5f80fd5b34801561023e575f80fd5b506102476108c3565b6040516102549190612d93565b60405180910390f35b348015610268575f80fd5b50610283600480360381019061027e9190612e51565b610953565b6040516102909190612ea9565b60405180910390f35b3480156102a4575f80fd5b506102bf60048036038101906102ba919061302c565b610970565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190613086565b610a77565b005b3480156102f4575f80fd5b506102fd610b10565b60405161030a91906130c0565b60405180910390f35b34801561031e575f80fd5b50610327610b16565b60405161033491906130c0565b60405180910390f35b348015610348575f80fd5b50610363600480360381019061035e91906130d9565b610b1f565b005b348015610370575f80fd5b50610379610c4c565b005b348015610386575f80fd5b506103a1600480360381019061039c9190613104565b610d57565b6040516103ae9190612ea9565b60405180910390f35b3480156103c2575f80fd5b506103cb610e52565b6040516103d891906130c0565b60405180910390f35b3480156103ec575f80fd5b506103f5610e58565b604051610402919061316f565b60405180910390f35b348015610416575f80fd5b50610431600480360381019061042c9190613188565b610e60565b005b34801561043e575f80fd5b5061045960048036038101906104549190612e51565b610f34565b6040516104669190612ea9565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906131c6565b610fdb565b005b3480156104a2575f80fd5b506104bd60048036038101906104b891906131c6565b6110c5565b005b3480156104ca575f80fd5b506104e560048036038101906104e091906131f1565b61118f565b005b3480156104f2575f80fd5b506104fb6112a6565b6040516105089190612ea9565b60405180910390f35b34801561051c575f80fd5b50610537600480360381019061053291906131f1565b6112b9565b005b348015610544575f80fd5b5061055f600480360381019061055a91906130d9565b6113d0565b60405161056c91906130c0565b60405180910390f35b348015610580575f80fd5b50610589611415565b005b348015610596575f80fd5b5061059f61149c565b6040516105ae93929190613241565b60405180910390f35b3480156105c2575f80fd5b506105cb6114b3565b6040516105d89190613285565b60405180910390f35b3480156105ec575f80fd5b506105f56114d8565b6040516106029190613285565b60405180910390f35b348015610616575f80fd5b5061061f6114de565b60405161062c9190613285565b60405180910390f35b348015610640575f80fd5b50610649611506565b6040516106569190613285565b60405180910390f35b34801561066a575f80fd5b5061067361152b565b6040516106809190612d93565b60405180910390f35b348015610694575f80fd5b506106af60048036038101906106aa9190612e51565b6115bb565b6040516106bc9190612ea9565b60405180910390f35b3480156106d0575f80fd5b506106d96116aa565b6040516106e69190613285565b60405180910390f35b3480156106fa575f80fd5b5061071560048036038101906107109190612e51565b6116cf565b6040516107229190612ea9565b60405180910390f35b348015610736575f80fd5b50610751600480360381019061074c91906130d9565b6116e5565b005b34801561075e575f80fd5b50610779600480360381019061077491906130d9565b611812565b6040516107869190612ea9565b60405180910390f35b34801561079a575f80fd5b506107b560048036038101906107b09190612e51565b61182f565b005b3480156107c2575f80fd5b506107dd60048036038101906107d8919061329e565b6119a0565b6040516107ea91906130c0565b60405180910390f35b3480156107fe575f80fd5b50610819600480360381019061081491906131c6565b611a22565b005b348015610826575f80fd5b50610841600480360381019061083c91906130d9565b611b3b565b005b34801561084e575f80fd5b50610857611c31565b60405161086693929190613241565b60405180910390f35b34801561087a575f80fd5b50610883611c48565b6040516108909190613337565b60405180910390f35b3480156108a4575f80fd5b506108ad611c6d565b6040516108ba9190612ea9565b60405180910390f35b6060600380546108d29061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546108fe9061337d565b80156109495780601f1061092057610100808354040283529160200191610949565b820191905f5260205f20905b81548152906001019060200180831161092c57829003601f168201915b5050505050905090565b5f61096661095f611c80565b8484611c87565b6001905092915050565b610978611c80565b73ffffffffffffffffffffffffffffffffffffffff166109966114de565b73ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906133f7565b60405180910390fd5b5f5b8251811015610a72578160145f858481518110610a0e57610a0d613415565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109ee565b505050565b610a7f611c80565b73ffffffffffffffffffffffffffffffffffffffff16610a9d6114de565b73ffffffffffffffffffffffffffffffffffffffff1614610af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aea906133f7565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b60085481565b5f600254905090565b610b27611c80565b73ffffffffffffffffffffffffffffffffffffffff16610b456114de565b73ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c00906134b2565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610c54611c80565b73ffffffffffffffffffffffffffffffffffffffff16610c726114de565b73ffffffffffffffffffffffffffffffffffffffff1614610cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbf906133f7565b60405180910390fd5b600760169054906101000a900460ff1615610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f9061351a565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600981905550565b5f610d63848484611e4a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610daa611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906135a8565b60405180910390fd5b610e4685610e35611c80565b8584610e4191906135f3565b611c87565b60019150509392505050565b60095481565b5f6012905090565b610e68611c80565b73ffffffffffffffffffffffffffffffffffffffff16610e866114de565b73ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed3906133f7565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f610fd1610f40611c80565b848460015f610f4d611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fcc9190613626565b611c87565b6001905092915050565b610fe3611c80565b73ffffffffffffffffffffffffffffffffffffffff166110016114de565b73ffffffffffffffffffffffffffffffffffffffff1614611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e906133f7565b60405180910390fd5b6298968081111561109d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906136c9565b60405180910390fd5b6110a5610e58565b600a6110b19190613816565b816110bc9190613860565b60088190555050565b6110cd611c80565b73ffffffffffffffffffffffffffffffffffffffff166110eb6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611141576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611138906133f7565b60405180910390fd5b6111496114de565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561118b573d5f803e3d5ffd5b5050565b611197611c80565b73ffffffffffffffffffffffffffffffffffffffff166111b56114de565b73ffffffffffffffffffffffffffffffffffffffff161461120b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611202906133f7565b60405180910390fd5b604051806060016040528084815260200183815260200182815250600e5f820151815f01556020820151816001015560408201518160020155905050600c8183856112569190613626565b6112609190613626565b11156112a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611298906138eb565b60405180910390fd5b505050565b600760169054906101000a900460ff1681565b6112c1611c80565b73ffffffffffffffffffffffffffffffffffffffff166112df6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c906133f7565b60405180910390fd5b60405180606001604052808481526020018381526020018281525060115f820151815f01556020820151816001015560408201518160020155905050600c8183856113809190613626565b61138a9190613626565b11156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906138eb565b60405180910390fd5b505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61141d611c80565b73ffffffffffffffffffffffffffffffffffffffff1661143b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906133f7565b60405180910390fd5b61149a5f6123d1565b565b600e805f0154908060010154908060020154905083565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461153a9061337d565b80601f01602080910402602001604051908101604052809291908181526020018280546115669061337d565b80156115b15780601f10611588576101008083540402835291602001916115b1565b820191905f5260205f20905b81548152906001019060200180831161159457829003601f168201915b5050505050905090565b5f8060015f6115c8611c80565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990613979565b60405180910390fd5b61169f61168d611c80565b85858461169a91906135f3565b611c87565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6116db338484611e4a565b6001905092915050565b6116ed611c80565b73ffffffffffffffffffffffffffffffffffffffff1661170b6114de565b73ffffffffffffffffffffffffffffffffffffffff1614611761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611758906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906134b2565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6014602052805f5260405f205f915054906101000a900460ff1681565b611837611c80565b73ffffffffffffffffffffffffffffffffffffffff166118556114de565b73ffffffffffffffffffffffffffffffffffffffff16146118ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a2906133f7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613a07565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61193d6114de565b836040518363ffffffff1660e01b815260040161195b929190613a25565b6020604051808303815f875af1158015611977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199b9190613a60565b505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611a2a611c80565b73ffffffffffffffffffffffffffffffffffffffff16611a486114de565b73ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a95906133f7565b60405180910390fd5b600760169054906101000a900460ff1615611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590613afb565b60405180910390fd5b60058110611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890613b89565b60405180910390fd5b80600a8190555050565b611b43611c80565b73ffffffffffffffffffffffffffffffffffffffff16611b616114de565b73ffffffffffffffffffffffffffffffffffffffff1614611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae906133f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613c17565b60405180910390fd5b611c2e816123d1565b50565b6011805f0154908060010154908060020154905083565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760159054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613ca5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a90613d33565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e3d91906130c0565b60405180910390a3505050565b5f8111611e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8390613dc1565b60405180910390fd5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611f2a575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f7f57600760169054906101000a900460ff16611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613e29565b60405180910390fd5b5b5f805f611f8a612d05565b5f60145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612029575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156120435750600a546009546120409190613626565b43105b9050600760149054906101000a900460ff16806120a6575060145f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120f7575060145f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612104575f92506122e5565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614801561215e575080155b156121be5760116002015460115f015460116001015461217e9190613626565b6121889190613626565b945084935060116040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e4565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015612267575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015612271575080155b156122d157600e60020154600e5f0154600e600101546122919190613626565b61229b9190613626565b9450849350600e6040518060600160405290815f82015481526020016001820154815260200160028201548152505091506122e3565b80156122e257600b549450600b5493505b5b5b5b606484876122f39190613860565b6122fd9190613e74565b9250600760159054906101000a900460ff168015612368575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612378576123778583612494565b5b61238e8888858961238991906135f3565b61269c565b5f8311156123c7575f8511156123c6575f606486886123ad9190613860565b6123b79190613e74565b90506123c489308361269c565b505b5b5050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612698576001600760146101000a81548160ff0219169083151502179055505f82031561267d575f6124d5306113d0565b9050600854811061267b57600160085411156124f15760085490505b5f6002846124ff9190613860565b90505f818460200151846125139190613860565b61251d9190613e74565b90505f818461252c91906135f3565b90505f47905061253b82612904565b5f814761254891906135f3565b90505f87602001518661255b91906135f3565b826125669190613e74565b90505f8860200151826125799190613860565b90505f81111561258e5761258d8682612b3a565b5b5f895f01516002846125a09190613860565b6125aa9190613860565b90505f8111156125ff576125fe81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5f8a604001516002856126129190613860565b61261c9190613860565b90505f8111156126715761267081600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c1590919063ffffffff16565b5b5050505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361270a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270190613f14565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f90613fa2565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614030565b60405180910390fd5b818161280791906135f3565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128929190613626565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128f691906130c0565b60405180910390a350505050565b5f600267ffffffffffffffff8111156129205761291f612ec6565b5b60405190808252806020026020018201604052801561294e5781602001602082028036833780820191505090505b50905030815f8151811061296557612964613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a2d9190614062565b81600181518110612a4157612a40613415565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aa73060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b0995949392919061417d565b5f604051808303815f87803b158015612b20575f80fd5b505af1158015612b32573d5f803e3d5ffd5b505050505050565b612b663060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c87565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612bcd969594939291906141d5565b60606040518083038185885af1158015612be9573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c0e9190614248565b5050505050565b80471015612c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4f906142e2565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612c7d9061432d565b5f6040518083038185875af1925050503d805f8114612cb7576040519150601f19603f3d011682016040523d82523d5f602084013e612cbc565b606091505b5050905080612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf7906143b1565b60405180910390fd5b505050565b60405180606001604052805f81526020015f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d6582612d23565b612d6f8185612d2d565b9350612d7f818560208601612d3d565b612d8881612d4b565b840191505092915050565b5f6020820190508181035f830152612dab8184612d5b565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ded82612dc4565b9050919050565b612dfd81612de3565b8114612e07575f80fd5b50565b5f81359050612e1881612df4565b92915050565b5f819050919050565b612e3081612e1e565b8114612e3a575f80fd5b50565b5f81359050612e4b81612e27565b92915050565b5f8060408385031215612e6757612e66612dbc565b5b5f612e7485828601612e0a565b9250506020612e8585828601612e3d565b9150509250929050565b5f8115159050919050565b612ea381612e8f565b82525050565b5f602082019050612ebc5f830184612e9a565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612efc82612d4b565b810181811067ffffffffffffffff82111715612f1b57612f1a612ec6565b5b80604052505050565b5f612f2d612db3565b9050612f398282612ef3565b919050565b5f67ffffffffffffffff821115612f5857612f57612ec6565b5b602082029050602081019050919050565b5f80fd5b5f612f7f612f7a84612f3e565b612f24565b90508083825260208201905060208402830185811115612fa257612fa1612f69565b5b835b81811015612fcb5780612fb78882612e0a565b845260208401935050602081019050612fa4565b5050509392505050565b5f82601f830112612fe957612fe8612ec2565b5b8135612ff9848260208601612f6d565b91505092915050565b61300b81612e8f565b8114613015575f80fd5b50565b5f8135905061302681613002565b92915050565b5f806040838503121561304257613041612dbc565b5b5f83013567ffffffffffffffff81111561305f5761305e612dc0565b5b61306b85828601612fd5565b925050602061307c85828601613018565b9150509250929050565b5f6020828403121561309b5761309a612dbc565b5b5f6130a884828501613018565b91505092915050565b6130ba81612e1e565b82525050565b5f6020820190506130d35f8301846130b1565b92915050565b5f602082840312156130ee576130ed612dbc565b5b5f6130fb84828501612e0a565b91505092915050565b5f805f6060848603121561311b5761311a612dbc565b5b5f61312886828701612e0a565b935050602061313986828701612e0a565b925050604061314a86828701612e3d565b9150509250925092565b5f60ff82169050919050565b61316981613154565b82525050565b5f6020820190506131825f830184613160565b92915050565b5f806040838503121561319e5761319d612dbc565b5b5f6131ab85828601612e0a565b92505060206131bc85828601613018565b9150509250929050565b5f602082840312156131db576131da612dbc565b5b5f6131e884828501612e3d565b91505092915050565b5f805f6060848603121561320857613207612dbc565b5b5f61321586828701612e3d565b935050602061322686828701612e3d565b925050604061323786828701612e3d565b9150509250925092565b5f6060820190506132545f8301866130b1565b61326160208301856130b1565b61326e60408301846130b1565b949350505050565b61327f81612de3565b82525050565b5f6020820190506132985f830184613276565b92915050565b5f80604083850312156132b4576132b3612dbc565b5b5f6132c185828601612e0a565b92505060206132d285828601612e0a565b9150509250929050565b5f819050919050565b5f6132ff6132fa6132f584612dc4565b6132dc565b612dc4565b9050919050565b5f613310826132e5565b9050919050565b5f61332182613306565b9050919050565b61333181613317565b82525050565b5f60208201905061334a5f830184613328565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061339457607f821691505b6020821081036133a7576133a6613350565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133e1602083612d2d565b91506133ec826133ad565b602082019050919050565b5f6020820190508181035f83015261340e816133d5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f46656520416464726573732063616e6e6f74206265207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61349c602283612d2d565b91506134a782613442565b604082019050919050565b5f6020820190508181035f8301526134c981613490565b9050919050565b7f43616e6e6f742072652d656e61626c652074726164696e6700000000000000005f82015250565b5f613504601883612d2d565b915061350f826134d0565b602082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613592602883612d2d565b915061359d82613538565b604082019050919050565b5f6020820190508181035f8301526135bf81613586565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6135fd82612e1e565b915061360883612e1e565b92508282039050818111156136205761361f6135c6565b5b92915050565b5f61363082612e1e565b915061363b83612e1e565b9250828201905080821115613653576136526135c6565b5b92915050565b7f53776170207468726573686f6c6420616d6f756e742073686f756c64206265205f8201527f6c6f776572206f7220657175616c20746f203125206f6620746f6b656e730000602082015250565b5f6136b3603e83612d2d565b91506136be82613659565b604082019050919050565b5f6020820190508181035f8301526136e0816136a7565b9050919050565b5f8160011c9050919050565b5f808291508390505b600185111561373c57808604811115613718576137176135c6565b5b60018516156137275780820291505b8081029050613735856136e7565b94506136fc565b94509492505050565b5f82613754576001905061380f565b81613761575f905061380f565b81600181146137775760028114613781576137b0565b600191505061380f565b60ff841115613793576137926135c6565b5b8360020a9150848211156137aa576137a96135c6565b5b5061380f565b5060208310610133831016604e8410600b84101617156137e55782820a9050838111156137e0576137df6135c6565b5b61380f565b6137f284848460016136f3565b92509050818404811115613809576138086135c6565b5b81810290505b9392505050565b5f61382082612e1e565b915061382b83613154565b92506138587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613745565b905092915050565b5f61386a82612e1e565b915061387583612e1e565b925082820261388381612e1e565b9150828204841483151761389a576138996135c6565b5b5092915050565b7f4d757374206b656570206665657320617420313225206f72206c6573730000005f82015250565b5f6138d5601d83612d2d565b91506138e0826138a1565b602082019050919050565b5f6020820190508181035f830152613902816138c9565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613963602583612d2d565b915061396e82613909565b604082019050919050565b5f6020820190508181035f83015261399081613957565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f6139f1603683612d2d565b91506139fc82613997565b604082019050919050565b5f6020820190508181035f830152613a1e816139e5565b9050919050565b5f604082019050613a385f830185613276565b613a4560208301846130b1565b9392505050565b5f81519050613a5a81613002565b92915050565b5f60208284031215613a7557613a74612dbc565b5b5f613a8284828501613a4c565b91505092915050565b7f43616e2774206368616e6765207768656e2074726164696e67206861732073745f8201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b5f613ae5602583612d2d565b9150613af082613a8b565b604082019050919050565b5f6020820190508181035f830152613b1281613ad9565b9050919050565b7f446561646c696e652073686f756c64206265206c657373207468616e203520425f8201527f6c6f636b73000000000000000000000000000000000000000000000000000000602082015250565b5f613b73602583612d2d565b9150613b7e82613b19565b604082019050919050565b5f6020820190508181035f830152613ba081613b67565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c01602683612d2d565b9150613c0c82613ba7565b604082019050919050565b5f6020820190508181035f830152613c2e81613bf5565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c8f602483612d2d565b9150613c9a82613c35565b604082019050919050565b5f6020820190508181035f830152613cbc81613c83565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d1d602283612d2d565b9150613d2882613cc3565b604082019050919050565b5f6020820190508181035f830152613d4a81613d11565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613dab602983612d2d565b9150613db682613d51565b604082019050919050565b5f6020820190508181035f830152613dd881613d9f565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613e13601383612d2d565b9150613e1e82613ddf565b602082019050919050565b5f6020820190508181035f830152613e4081613e07565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e7e82612e1e565b9150613e8983612e1e565b925082613e9957613e98613e47565b5b828204905092915050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613efe602583612d2d565b9150613f0982613ea4565b604082019050919050565b5f6020820190508181035f830152613f2b81613ef2565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613f8c602383612d2d565b9150613f9782613f32565b604082019050919050565b5f6020820190508181035f830152613fb981613f80565b9050919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61401a602683612d2d565b915061402582613fc0565b604082019050919050565b5f6020820190508181035f8301526140478161400e565b9050919050565b5f8151905061405c81612df4565b92915050565b5f6020828403121561407757614076612dbc565b5b5f6140848482850161404e565b91505092915050565b5f819050919050565b5f6140b06140ab6140a68461408d565b6132dc565b612e1e565b9050919050565b6140c081614096565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6140f881612de3565b82525050565b5f61410983836140ef565b60208301905092915050565b5f602082019050919050565b5f61412b826140c6565b61413581856140d0565b9350614140836140e0565b805f5b8381101561417057815161415788826140fe565b975061416283614115565b925050600181019050614143565b5085935050505092915050565b5f60a0820190506141905f8301886130b1565b61419d60208301876140b7565b81810360408301526141af8186614121565b90506141be6060830185613276565b6141cb60808301846130b1565b9695505050505050565b5f60c0820190506141e85f830189613276565b6141f560208301886130b1565b61420260408301876140b7565b61420f60608301866140b7565b61421c6080830185613276565b61422960a08301846130b1565b979650505050505050565b5f8151905061424281612e27565b92915050565b5f805f6060848603121561425f5761425e612dbc565b5b5f61426c86828701614234565b935050602061427d86828701614234565b925050604061428e86828701614234565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6142cc601d83612d2d565b91506142d782614298565b602082019050919050565b5f6020820190508181035f8301526142f9816142c0565b9050919050565b5f81905092915050565b50565b5f6143185f83614300565b91506143238261430a565b5f82019050919050565b5f6143378261430d565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61439b603a83612d2d565b91506143a682614341565b604082019050919050565b5f6020820190508181035f8301526143c88161438f565b905091905056fea26469706673582212206d77db5104c2e07c45ccc5c726301c901c8cc063706942b9cd3913bcc1c45ba964736f6c634300081a0033

Deployed Bytecode Sourcemap

12336:10955:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14465:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22665:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20624:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12603:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4087:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22346:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21655:222;;;;;;;;;;;;;:::i;:::-;;14634:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12665:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3929:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22537:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15090:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20784:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22875:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21072:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12560:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21361:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4258:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10999:94;;;;;;;;;;;;;:::i;:::-;;13178:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12774:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12982:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10776:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12886:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3186:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15346:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12449:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15764:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22143:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13269:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22995:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4877:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21885:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11101:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13221:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;12421:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12515:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2967:100;3021:13;3054:5;3047:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:100;:::o;14465:161::-;14540:4;14557:39;14566:12;:10;:12::i;:::-;14580:7;14589:6;14557:8;:39::i;:::-;14614:4;14607:11;;14465:161;;;;:::o;22665:202::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22762:9:::1;22757:103;22781:8;:15;22777:1;:19;22757:103;;;22843:5;22818:9;:22;22828:8;22837:1;22828:11;;;;;;;;:::i;:::-;;;;;;;;22818:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;22798:3;;;;;;;22757:103;;;;22665:202:::0;;:::o;20624:152::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20763:5:::1;20742:18;;:26;;;;;;;;;;;;;;;;;;20624:152:::0;:::o;12603:53::-;;;;:::o;4087:108::-;4148:7;4175:12;;4168:19;;4087:108;:::o;22346:183::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22449:1:::1;22428:23;;:9;:23;;::::0;22420:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22512:9;22500;;:21;;;;;;;;;;;;;;;;;;22346:183:::0;:::o;21655:222::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21719:14:::1;;;;;;;;;;;21718:15;21710:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21790:4;21773:14;;:21;;;;;;;;;;;;;;;;;;21826:4;21805:18;;:25;;;;;;;;;;;;;;;;;;21857:12;21841:13;:28;;;;21655:222::o:0;14634:448::-;14766:4;14783:36;14793:6;14801:9;14812:6;14783:9;:36::i;:::-;14832:24;14859:11;:19;14871:6;14859:19;;;;;;;;;;;;;;;:33;14879:12;:10;:12::i;:::-;14859:33;;;;;;;;;;;;;;;;14832:60;;14931:6;14911:16;:26;;14903:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;14993:57;15002:6;15010:12;:10;:12::i;:::-;15043:6;15024:16;:25;;;;:::i;:::-;14993:8;:57::i;:::-;15070:4;15063:11;;;14634:448;;;;;:::o;12665:28::-;;;;:::o;3929:93::-;3987:5;4012:2;4005:9;;3929:93;:::o;22537:120::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22644:5:::1;22622:9;:19;22632:8;22622:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22537:120:::0;;:::o;15090:248::-;15206:4;15228:80;15237:12;:10;:12::i;:::-;15251:7;15297:10;15260:11;:25;15272:12;:10;:12::i;:::-;15260:25;;;;;;;;;;;;;;;:34;15286:7;15260:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;15228:8;:80::i;:::-;15326:4;15319:11;;15090:248;;;;:::o;20784:280::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20922:3:::1;20908:10;:17;;20900:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;21046:10;:8;:10::i;:::-;21042:2;:14;;;;:::i;:::-;21029:10;:27;;;;:::i;:::-;21003:23;:53;;;;20784:280:::0;:::o;22875:112::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22951:7:::1;:5;:7::i;:::-;22943:25;;:36;22969:9;22943:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22875:112:::0;:::o;21072:281::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21219:35:::1;;;;;;;;21225:10;21219:35;;;;21237:10;21219:35;;;;21249:4;21219:35;;::::0;21211:5:::1;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;21309:2;21300:4;21287:10;21274;:23;;;;:::i;:::-;:30;;;;:::i;:::-;21273:38;;21265:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21072:281:::0;;;:::o;12560:34::-;;;;;;;;;;;;;:::o;21361:286::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21513:35:::1;;;;;;;;21519:10;21513:35;;;;21531:10;21513:35;;;;21543:4;21513:35;;::::0;21501:9:::1;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;21603:2;21594:4;21581:10;21568;:23;;;;:::i;:::-;:30;;;;:::i;:::-;21567:38;;21559:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;21361:286:::0;;;:::o;4258:127::-;4332:7;4359:9;:18;4369:7;4359:18;;;;;;;;;;;;;;;;4352:25;;4258:127;;;:::o;10999:94::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11064:21:::1;11082:1;11064:9;:21::i;:::-;10999:94::o:0;13178:36::-;;;;;;;;;;;;;;;;;;;:::o;12774:75::-;;;;;;;;;;;;;:::o;12982:79::-;13019:42;12982:79;:::o;10776:87::-;10822:7;10849:6;;;;;;;;;;;10842:13;;10776:87;:::o;12886:69::-;;;;;;;;;;;;;:::o;3186:104::-;3242:13;3275:7;3268:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3186:104;:::o;15346:410::-;15467:4;15489:24;15516:11;:25;15528:12;:10;:12::i;:::-;15516:25;;;;;;;;;;;;;;;:34;15542:7;15516:34;;;;;;;;;;;;;;;;15489:61;;15589:15;15569:16;:35;;15561:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;15657:67;15666:12;:10;:12::i;:::-;15680:7;15708:15;15689:16;:34;;;;:::i;:::-;15657:8;:67::i;:::-;15744:4;15737:11;;;15346:410;;;;:::o;12449:19::-;;;;;;;;;;;;;:::o;15764:165::-;15842:4;15859:40;15869:10;15881:9;15892:6;15859:9;:40::i;:::-;15917:4;15910:11;;15764:165;;;;:::o;22143:195::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22252:1:::1;22231:23;;:9;:23;;::::0;22223:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22321:9;22303:15;;:27;;;;;;;;;;;;;;;;;;22143:195:::0;:::o;13269:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;22995:238::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23108:4:::1;23088:25;;:8;:25;;::::0;23080:92:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23190:8;23183:25;;;23209:7;:5;:7::i;:::-;23218:6;23183:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22995:238:::0;;:::o;4877:201::-;5011:7;5043:11;:18;5055:5;5043:18;;;;;;;;;;;;;;;:27;5062:7;5043:27;;;;;;;;;;;;;;;;5036:34;;4877:201;;;;:::o;21885:250::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21967:14:::1;;;;;;;;;;;21966:15;21958:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22054:1;22042:9;:13;22034:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22118:9;22107:8;:20;;;;21885:250:::0;:::o;11101:192::-;10922:12;:10;:12::i;:::-;10911:23;;:7;:5;:7::i;:::-;:23;;;10903:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11210:1:::1;11190:22;;:8;:22;;::::0;11182:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11266:19;11276:8;11266:9;:19::i;:::-;11101:192:::0;:::o;13221:39::-;;;;;;;;;;;;;;;;;;;:::o;12421:21::-;;;;;;;;;;;;;:::o;12515:38::-;;;;;;;;;;;;;:::o;689:98::-;742:7;769:10;762:17;;689:98;:::o;9809:380::-;9962:1;9945:19;;:5;:19;;;9937:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10043:1;10024:21;;:7;:21;;;10016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10127:6;10097:11;:18;10109:5;10097:18;;;;;;;;;;;;;;;:27;10116:7;10097:27;;;;;;;;;;;;;;;:36;;;;10165:7;10149:32;;10158:5;10149:32;;;10174:6;10149:32;;;;;;:::i;:::-;;;;;;;;9809:380;;;:::o;15937:2018::-;16087:1;16078:6;:10;16070:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16152:9;:17;16162:6;16152:17;;;;;;;;;;;;;;;;;;;;;;;;;16151:18;:43;;;;;16174:9;:20;16184:9;16174:20;;;;;;;;;;;;;;;;;;;;;;;;;16173:21;16151:43;16147:122;;;16219:14;;;;;;;;;;;16211:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16147:122;16281:15;16307:14;16332:11;16354:25;;:::i;:::-;16392:17;16413:9;:17;16423:6;16413:17;;;;;;;;;;;;;;;;;;;;;;;;;16412:18;:56;;;;;16448:9;:20;16458:9;16448:20;;;;;;;;;;;;;;;;;;;;;;;;;16447:21;16412:56;:112;;;;;16516:8;;16500:13;;:24;;;;:::i;:::-;16485:12;:39;16412:112;16392:132;;16612:10;;;;;;;;;;;:31;;;;16626:9;:17;16636:6;16626:17;;;;;;;;;;;;;;;;;;;;;;;;;16612:31;:55;;;;16647:9;:20;16657:9;16647:20;;;;;;;;;;;;;;;;;;;;;;;;;16612:55;16608:767;;;16688:1;16682:7;;16608:767;;;16753:4;;;;;;;;;;;16740:17;;:9;:17;;;:34;;;;;16762:12;16761:13;16740:34;16736:639;;;16902:9;:13;;;16857:9;:19;;;16818:9;:19;;;:58;;;;:::i;:::-;:97;;;;:::i;:::-;16791:124;;16939:7;16930:16;;16976:9;16961:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16736:639;;;17017:4;;;;;;;;;;;17007:14;;:6;:14;;;:46;;;;;17046:6;;;;;;;;;;;17025:28;;:9;:28;;;;17007:46;:63;;;;;17058:12;17057:13;17007:63;17003:372;;;17184:5;:9;;;17149:5;:15;;;17114:5;:15;;;:50;;;;:::i;:::-;:79;;;;:::i;:::-;17087:106;;17218:7;17209:16;;17255:5;17240:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17003:372;;;17282:12;17278:97;;;17321:9;;17311:19;;17354:9;;17345:18;;17278:97;17003:372;16736:639;16608:767;17413:3;17403:6;17394;:15;;;;:::i;:::-;17393:23;;;;:::i;:::-;17387:29;;17530:18;;;;;;;;;;;:36;;;;;17562:4;;;;;;;;;;;17552:14;;:6;:14;;;;17530:36;17526:72;;;17568:30;17576:7;17585:12;17568:7;:30::i;:::-;17526:72;17640:48;17656:6;17664:9;17684:3;17675:6;:12;;;;:::i;:::-;17640:15;:48::i;:::-;17709:1;17703:3;:7;17699:249;;;17785:1;17775:7;:11;17771:164;;;17807:17;17848:3;17837:7;17828:6;:16;;;;:::i;:::-;17827:24;;;;:::i;:::-;17807:44;;17870:49;17886:6;17902:4;17909:9;17870:15;:49::i;:::-;17788:147;17771:164;17699:249;16059:1896;;;;;15937:2018;;;:::o;11301:173::-;11357:16;11376:6;;;;;;;;;;;11357:25;;11402:8;11393:6;;:17;;;;;;;;;;;;;;;;;;11457:8;11426:40;;11447:8;11426:40;;;;;;;;;;;;11346:128;11301:173;:::o;17963:1603::-;13358:10;;;;;;;;;;;13353:110;;13398:4;13385:10;;:17;;;;;;;;;;;;;;;;;;18068:1:::1;18057:7;:12:::0;18054:49;18085:7:::1;18054:49;18115:23;18141:24;18159:4;18141:9;:24::i;:::-;18115:50;;18199:23;;18180:15;:42;18176:1383;;18269:1;18243:23;;:27;18239:109;;;18309:23;;18291:41;;18239:109;18419:19;18451:1;18441:7;:11;;;;:::i;:::-;18419:33;;18467:32;18561:11;18521:9;:19;;;18503:15;:37;;;;:::i;:::-;18502:70;;;;:::i;:::-;18467:105;;18587:14;18622:24;18604:15;:42;;;;:::i;:::-;18587:59;;18663:22;18688:21;18663:46;;18726:24;18743:6;18726:16;:24::i;:::-;18767:20;18814:14;18790:21;:38;;;;:::i;:::-;18767:61;;18843:19;18895:9;:19;;;18881:11;:33;;;;:::i;:::-;18865:12;:50;;;;:::i;:::-;18843:72;;18930:29;18976:9;:19;;;18962:11;:33;;;;:::i;:::-;18930:65;;19040:1;19016:21;:25;19012:172;;;19107:61;19120:24;19146:21;19107:12;:61::i;:::-;19012:172;19200:20;19241:9;:19;;;19237:1;19223:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;19200:60;;19294:1;19279:12;:16;19275:105;;;19316:48;19351:12;19324:15;;;;;;;;;;;19316:34;;;;:48;;;;:::i;:::-;19275:105;19396:14;19431:9;:13;;;19427:1;19413:11;:15;;;;:::i;:::-;:31;;;;:::i;:::-;19396:48;;19472:1;19463:6;:10;19459:87;;;19494:36;19523:6;19502:9;;;;;;;;;;;19494:28;;;;:36;;;;:::i;:::-;19459:87;18224:1335;;;;;;;;;18176:1383;18041:1525;13417:1;13446:5:::0;13433:10;;:18;;;;;;;;;;;;;;;;;;13353:110;17963:1603;;:::o;8390:578::-;8548:1;8530:20;;:6;:20;;;8522:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8632:1;8611:23;;:9;:23;;;8603:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8687:21;8711:9;:17;8721:6;8711:17;;;;;;;;;;;;;;;;8687:41;;8764:6;8747:13;:23;;8739:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8860:6;8844:13;:22;;;;:::i;:::-;8824:9;:17;8834:6;8824:17;;;;;;;;;;;;;;;:42;;;;8901:6;8877:9;:20;8887:9;8877:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8942:9;8925:35;;8934:6;8925:35;;;8953:6;8925:35;;;;;;:::i;:::-;;;;;;;;8511:457;8390:578;;;:::o;19574:534::-;19700:21;19738:1;19724:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19700:40;;19769:4;19751;19756:1;19751:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19795:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19785:4;19790:1;19785:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19821:53;19838:4;19853:6;;;;;;;;;;;19862:11;19821:8;:53::i;:::-;19913:6;;;;;;;;;;;:57;;;19985:11;20011:1;20027:4;20054;20074:15;19913:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19629:479;19574:534;:::o;20116:500::-;20264:53;20281:4;20296:6;;;;;;;;;;;20305:11;20264:8;:53::i;:::-;20360:6;;;;;;;;;;;:22;;;20391:9;20425:4;20445:11;20471:1;20514;13019:42;20582:15;20360:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20116:500;;:::o;10219:319::-;10334:6;10309:21;:31;;10301:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10388:12;10406:9;:14;;10429:6;10406:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10387:54;;;10460:7;10452:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10290:248;10219:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:117::-;3448:1;3445;3438:12;3462:180;3510:77;3507:1;3500:88;3607:4;3604:1;3597:15;3631:4;3628:1;3621:15;3648:281;3731:27;3753:4;3731:27;:::i;:::-;3723:6;3719:40;3861:6;3849:10;3846:22;3825:18;3813:10;3810:34;3807:62;3804:88;;;3872:18;;:::i;:::-;3804:88;3912:10;3908:2;3901:22;3691:238;3648:281;;:::o;3935:129::-;3969:6;3996:20;;:::i;:::-;3986:30;;4025:33;4053:4;4045:6;4025:33;:::i;:::-;3935:129;;;:::o;4070:311::-;4147:4;4237:18;4229:6;4226:30;4223:56;;;4259:18;;:::i;:::-;4223:56;4309:4;4301:6;4297:17;4289:25;;4369:4;4363;4359:15;4351:23;;4070:311;;;:::o;4387:117::-;4496:1;4493;4486:12;4527:710;4623:5;4648:81;4664:64;4721:6;4664:64;:::i;:::-;4648:81;:::i;:::-;4639:90;;4749:5;4778:6;4771:5;4764:21;4812:4;4805:5;4801:16;4794:23;;4865:4;4857:6;4853:17;4845:6;4841:30;4894:3;4886:6;4883:15;4880:122;;;4913:79;;:::i;:::-;4880:122;5028:6;5011:220;5045:6;5040:3;5037:15;5011:220;;;5120:3;5149:37;5182:3;5170:10;5149:37;:::i;:::-;5144:3;5137:50;5216:4;5211:3;5207:14;5200:21;;5087:144;5071:4;5066:3;5062:14;5055:21;;5011:220;;;5015:21;4629:608;;4527:710;;;;;:::o;5260:370::-;5331:5;5380:3;5373:4;5365:6;5361:17;5357:27;5347:122;;5388:79;;:::i;:::-;5347:122;5505:6;5492:20;5530:94;5620:3;5612:6;5605:4;5597:6;5593:17;5530:94;:::i;:::-;5521:103;;5337:293;5260:370;;;;:::o;5636:116::-;5706:21;5721:5;5706:21;:::i;:::-;5699:5;5696:32;5686:60;;5742:1;5739;5732:12;5686:60;5636:116;:::o;5758:133::-;5801:5;5839:6;5826:20;5817:29;;5855:30;5879:5;5855:30;:::i;:::-;5758:133;;;;:::o;5897:678::-;5987:6;5995;6044:2;6032:9;6023:7;6019:23;6015:32;6012:119;;;6050:79;;:::i;:::-;6012:119;6198:1;6187:9;6183:17;6170:31;6228:18;6220:6;6217:30;6214:117;;;6250:79;;:::i;:::-;6214:117;6355:78;6425:7;6416:6;6405:9;6401:22;6355:78;:::i;:::-;6345:88;;6141:302;6482:2;6508:50;6550:7;6541:6;6530:9;6526:22;6508:50;:::i;:::-;6498:60;;6453:115;5897:678;;;;;:::o;6581:323::-;6637:6;6686:2;6674:9;6665:7;6661:23;6657:32;6654:119;;;6692:79;;:::i;:::-;6654:119;6812:1;6837:50;6879:7;6870:6;6859:9;6855:22;6837:50;:::i;:::-;6827:60;;6783:114;6581:323;;;;:::o;6910:118::-;6997:24;7015:5;6997:24;:::i;:::-;6992:3;6985:37;6910:118;;:::o;7034:222::-;7127:4;7165:2;7154:9;7150:18;7142:26;;7178:71;7246:1;7235:9;7231:17;7222:6;7178:71;:::i;:::-;7034:222;;;;:::o;7262:329::-;7321:6;7370:2;7358:9;7349:7;7345:23;7341:32;7338:119;;;7376:79;;:::i;:::-;7338:119;7496:1;7521:53;7566:7;7557:6;7546:9;7542:22;7521:53;:::i;:::-;7511:63;;7467:117;7262:329;;;;:::o;7597:619::-;7674:6;7682;7690;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:53;7935:7;7926:6;7915:9;7911:22;7890:53;:::i;:::-;7880:63;;7836:117;7992:2;8018:53;8063:7;8054:6;8043:9;8039:22;8018:53;:::i;:::-;8008:63;;7963:118;8120:2;8146:53;8191:7;8182:6;8171:9;8167:22;8146:53;:::i;:::-;8136:63;;8091:118;7597:619;;;;;:::o;8222:86::-;8257:7;8297:4;8290:5;8286:16;8275:27;;8222:86;;;:::o;8314:112::-;8397:22;8413:5;8397:22;:::i;:::-;8392:3;8385:35;8314:112;;:::o;8432:214::-;8521:4;8559:2;8548:9;8544:18;8536:26;;8572:67;8636:1;8625:9;8621:17;8612:6;8572:67;:::i;:::-;8432:214;;;;:::o;8652:468::-;8717:6;8725;8774:2;8762:9;8753:7;8749:23;8745:32;8742:119;;;8780:79;;:::i;:::-;8742:119;8900:1;8925:53;8970:7;8961:6;8950:9;8946:22;8925:53;:::i;:::-;8915:63;;8871:117;9027:2;9053:50;9095:7;9086:6;9075:9;9071:22;9053:50;:::i;:::-;9043:60;;8998:115;8652:468;;;;;:::o;9126:329::-;9185:6;9234:2;9222:9;9213:7;9209:23;9205:32;9202:119;;;9240:79;;:::i;:::-;9202:119;9360:1;9385:53;9430:7;9421:6;9410:9;9406:22;9385:53;:::i;:::-;9375:63;;9331:117;9126:329;;;;:::o;9461:619::-;9538:6;9546;9554;9603:2;9591:9;9582:7;9578:23;9574:32;9571:119;;;9609:79;;:::i;:::-;9571:119;9729:1;9754:53;9799:7;9790:6;9779:9;9775:22;9754:53;:::i;:::-;9744:63;;9700:117;9856:2;9882:53;9927:7;9918:6;9907:9;9903:22;9882:53;:::i;:::-;9872:63;;9827:118;9984:2;10010:53;10055:7;10046:6;10035:9;10031:22;10010:53;:::i;:::-;10000:63;;9955:118;9461:619;;;;;:::o;10086:442::-;10235:4;10273:2;10262:9;10258:18;10250:26;;10286:71;10354:1;10343:9;10339:17;10330:6;10286:71;:::i;:::-;10367:72;10435:2;10424:9;10420:18;10411:6;10367:72;:::i;:::-;10449;10517:2;10506:9;10502:18;10493:6;10449:72;:::i;:::-;10086:442;;;;;;:::o;10534:118::-;10621:24;10639:5;10621:24;:::i;:::-;10616:3;10609:37;10534:118;;:::o;10658:222::-;10751:4;10789:2;10778:9;10774:18;10766:26;;10802:71;10870:1;10859:9;10855:17;10846:6;10802:71;:::i;:::-;10658:222;;;;:::o;10886:474::-;10954:6;10962;11011:2;10999:9;10990:7;10986:23;10982:32;10979:119;;;11017:79;;:::i;:::-;10979:119;11137:1;11162:53;11207:7;11198:6;11187:9;11183:22;11162:53;:::i;:::-;11152:63;;11108:117;11264:2;11290:53;11335:7;11326:6;11315:9;11311:22;11290:53;:::i;:::-;11280:63;;11235:118;10886:474;;;;;:::o;11366:60::-;11394:3;11415:5;11408:12;;11366:60;;;:::o;11432:142::-;11482:9;11515:53;11533:34;11542:24;11560:5;11542:24;:::i;:::-;11533:34;:::i;:::-;11515:53;:::i;:::-;11502:66;;11432:142;;;:::o;11580:126::-;11630:9;11663:37;11694:5;11663:37;:::i;:::-;11650:50;;11580:126;;;:::o;11712:141::-;11777:9;11810:37;11841:5;11810:37;:::i;:::-;11797:50;;11712:141;;;:::o;11859:161::-;11961:52;12007:5;11961:52;:::i;:::-;11956:3;11949:65;11859:161;;:::o;12026:252::-;12134:4;12172:2;12161:9;12157:18;12149:26;;12185:86;12268:1;12257:9;12253:17;12244:6;12185:86;:::i;:::-;12026:252;;;;:::o;12284:180::-;12332:77;12329:1;12322:88;12429:4;12426:1;12419:15;12453:4;12450:1;12443:15;12470:320;12514:6;12551:1;12545:4;12541:12;12531:22;;12598:1;12592:4;12588:12;12619:18;12609:81;;12675:4;12667:6;12663:17;12653:27;;12609:81;12737:2;12729:6;12726:14;12706:18;12703:38;12700:84;;12756:18;;:::i;:::-;12700:84;12521:269;12470:320;;;:::o;12796:182::-;12936:34;12932:1;12924:6;12920:14;12913:58;12796:182;:::o;12984:366::-;13126:3;13147:67;13211:2;13206:3;13147:67;:::i;:::-;13140:74;;13223:93;13312:3;13223:93;:::i;:::-;13341:2;13336:3;13332:12;13325:19;;12984:366;;;:::o;13356:419::-;13522:4;13560:2;13549:9;13545:18;13537:26;;13609:9;13603:4;13599:20;13595:1;13584:9;13580:17;13573:47;13637:131;13763:4;13637:131;:::i;:::-;13629:139;;13356:419;;;:::o;13781:180::-;13829:77;13826:1;13819:88;13926:4;13923:1;13916:15;13950:4;13947:1;13940:15;13967:221;14107:34;14103:1;14095:6;14091:14;14084:58;14176:4;14171:2;14163:6;14159:15;14152:29;13967:221;:::o;14194:366::-;14336:3;14357:67;14421:2;14416:3;14357:67;:::i;:::-;14350:74;;14433:93;14522:3;14433:93;:::i;:::-;14551:2;14546:3;14542:12;14535:19;;14194:366;;;:::o;14566:419::-;14732:4;14770:2;14759:9;14755:18;14747:26;;14819:9;14813:4;14809:20;14805:1;14794:9;14790:17;14783:47;14847:131;14973:4;14847:131;:::i;:::-;14839:139;;14566:419;;;:::o;14991:174::-;15131:26;15127:1;15119:6;15115:14;15108:50;14991:174;:::o;15171:366::-;15313:3;15334:67;15398:2;15393:3;15334:67;:::i;:::-;15327:74;;15410:93;15499:3;15410:93;:::i;:::-;15528:2;15523:3;15519:12;15512:19;;15171:366;;;:::o;15543:419::-;15709:4;15747:2;15736:9;15732:18;15724:26;;15796:9;15790:4;15786:20;15782:1;15771:9;15767:17;15760:47;15824:131;15950:4;15824:131;:::i;:::-;15816:139;;15543:419;;;:::o;15968:227::-;16108:34;16104:1;16096:6;16092:14;16085:58;16177:10;16172:2;16164:6;16160:15;16153:35;15968:227;:::o;16201:366::-;16343:3;16364:67;16428:2;16423:3;16364:67;:::i;:::-;16357:74;;16440:93;16529:3;16440:93;:::i;:::-;16558:2;16553:3;16549:12;16542:19;;16201:366;;;:::o;16573:419::-;16739:4;16777:2;16766:9;16762:18;16754:26;;16826:9;16820:4;16816:20;16812:1;16801:9;16797:17;16790:47;16854:131;16980:4;16854:131;:::i;:::-;16846:139;;16573:419;;;:::o;16998:180::-;17046:77;17043:1;17036:88;17143:4;17140:1;17133:15;17167:4;17164:1;17157:15;17184:194;17224:4;17244:20;17262:1;17244:20;:::i;:::-;17239:25;;17278:20;17296:1;17278:20;:::i;:::-;17273:25;;17322:1;17319;17315:9;17307:17;;17346:1;17340:4;17337:11;17334:37;;;17351:18;;:::i;:::-;17334:37;17184:194;;;;:::o;17384:191::-;17424:3;17443:20;17461:1;17443:20;:::i;:::-;17438:25;;17477:20;17495:1;17477:20;:::i;:::-;17472:25;;17520:1;17517;17513:9;17506:16;;17541:3;17538:1;17535:10;17532:36;;;17548:18;;:::i;:::-;17532:36;17384:191;;;;:::o;17581:249::-;17721:34;17717:1;17709:6;17705:14;17698:58;17790:32;17785:2;17777:6;17773:15;17766:57;17581:249;:::o;17836:366::-;17978:3;17999:67;18063:2;18058:3;17999:67;:::i;:::-;17992:74;;18075:93;18164:3;18075:93;:::i;:::-;18193:2;18188:3;18184:12;18177:19;;17836:366;;;:::o;18208:419::-;18374:4;18412:2;18401:9;18397:18;18389:26;;18461:9;18455:4;18451:20;18447:1;18436:9;18432:17;18425:47;18489:131;18615:4;18489:131;:::i;:::-;18481:139;;18208:419;;;:::o;18633:102::-;18675:8;18722:5;18719:1;18715:13;18694:34;;18633:102;;;:::o;18741:848::-;18802:5;18809:4;18833:6;18824:15;;18857:5;18848:14;;18871:712;18892:1;18882:8;18879:15;18871:712;;;18987:4;18982:3;18978:14;18972:4;18969:24;18966:50;;;18996:18;;:::i;:::-;18966:50;19046:1;19036:8;19032:16;19029:451;;;19461:4;19454:5;19450:16;19441:25;;19029:451;19511:4;19505;19501:15;19493:23;;19541:32;19564:8;19541:32;:::i;:::-;19529:44;;18871:712;;;18741:848;;;;;;;:::o;19595:1073::-;19649:5;19840:8;19830:40;;19861:1;19852:10;;19863:5;;19830:40;19889:4;19879:36;;19906:1;19897:10;;19908:5;;19879:36;19975:4;20023:1;20018:27;;;;20059:1;20054:191;;;;19968:277;;20018:27;20036:1;20027:10;;20038:5;;;20054:191;20099:3;20089:8;20086:17;20083:43;;;20106:18;;:::i;:::-;20083:43;20155:8;20152:1;20148:16;20139:25;;20190:3;20183:5;20180:14;20177:40;;;20197:18;;:::i;:::-;20177:40;20230:5;;;19968:277;;20354:2;20344:8;20341:16;20335:3;20329:4;20326:13;20322:36;20304:2;20294:8;20291:16;20286:2;20280:4;20277:12;20273:35;20257:111;20254:246;;;20410:8;20404:4;20400:19;20391:28;;20445:3;20438:5;20435:14;20432:40;;;20452:18;;:::i;:::-;20432:40;20485:5;;20254:246;20525:42;20563:3;20553:8;20547:4;20544:1;20525:42;:::i;:::-;20510:57;;;;20599:4;20594:3;20590:14;20583:5;20580:25;20577:51;;;20608:18;;:::i;:::-;20577:51;20657:4;20650:5;20646:16;20637:25;;19595:1073;;;;;;:::o;20674:281::-;20732:5;20756:23;20774:4;20756:23;:::i;:::-;20748:31;;20800:25;20816:8;20800:25;:::i;:::-;20788:37;;20844:104;20881:66;20871:8;20865:4;20844:104;:::i;:::-;20835:113;;20674:281;;;;:::o;20961:410::-;21001:7;21024:20;21042:1;21024:20;:::i;:::-;21019:25;;21058:20;21076:1;21058:20;:::i;:::-;21053:25;;21113:1;21110;21106:9;21135:30;21153:11;21135:30;:::i;:::-;21124:41;;21314:1;21305:7;21301:15;21298:1;21295:22;21275:1;21268:9;21248:83;21225:139;;21344:18;;:::i;:::-;21225:139;21009:362;20961:410;;;;:::o;21377:179::-;21517:31;21513:1;21505:6;21501:14;21494:55;21377:179;:::o;21562:366::-;21704:3;21725:67;21789:2;21784:3;21725:67;:::i;:::-;21718:74;;21801:93;21890:3;21801:93;:::i;:::-;21919:2;21914:3;21910:12;21903:19;;21562:366;;;:::o;21934:419::-;22100:4;22138:2;22127:9;22123:18;22115:26;;22187:9;22181:4;22177:20;22173:1;22162:9;22158:17;22151:47;22215:131;22341:4;22215:131;:::i;:::-;22207:139;;21934:419;;;:::o;22359:224::-;22499:34;22495:1;22487:6;22483:14;22476:58;22568:7;22563:2;22555:6;22551:15;22544:32;22359:224;:::o;22589:366::-;22731:3;22752:67;22816:2;22811:3;22752:67;:::i;:::-;22745:74;;22828:93;22917:3;22828:93;:::i;:::-;22946:2;22941:3;22937:12;22930:19;;22589:366;;;:::o;22961:419::-;23127:4;23165:2;23154:9;23150:18;23142:26;;23214:9;23208:4;23204:20;23200:1;23189:9;23185:17;23178:47;23242:131;23368:4;23242:131;:::i;:::-;23234:139;;22961:419;;;:::o;23386:241::-;23526:34;23522:1;23514:6;23510:14;23503:58;23595:24;23590:2;23582:6;23578:15;23571:49;23386:241;:::o;23633:366::-;23775:3;23796:67;23860:2;23855:3;23796:67;:::i;:::-;23789:74;;23872:93;23961:3;23872:93;:::i;:::-;23990:2;23985:3;23981:12;23974:19;;23633:366;;;:::o;24005:419::-;24171:4;24209:2;24198:9;24194:18;24186:26;;24258:9;24252:4;24248:20;24244:1;24233:9;24229:17;24222:47;24286:131;24412:4;24286:131;:::i;:::-;24278:139;;24005:419;;;:::o;24430:332::-;24551:4;24589:2;24578:9;24574:18;24566:26;;24602:71;24670:1;24659:9;24655:17;24646:6;24602:71;:::i;:::-;24683:72;24751:2;24740:9;24736:18;24727:6;24683:72;:::i;:::-;24430:332;;;;;:::o;24768:137::-;24822:5;24853:6;24847:13;24838:22;;24869:30;24893:5;24869:30;:::i;:::-;24768:137;;;;:::o;24911:345::-;24978:6;25027:2;25015:9;25006:7;25002:23;24998:32;24995:119;;;25033:79;;:::i;:::-;24995:119;25153:1;25178:61;25231:7;25222:6;25211:9;25207:22;25178:61;:::i;:::-;25168:71;;25124:125;24911:345;;;;:::o;25262:224::-;25402:34;25398:1;25390:6;25386:14;25379:58;25471:7;25466:2;25458:6;25454:15;25447:32;25262:224;:::o;25492:366::-;25634:3;25655:67;25719:2;25714:3;25655:67;:::i;:::-;25648:74;;25731:93;25820:3;25731:93;:::i;:::-;25849:2;25844:3;25840:12;25833:19;;25492:366;;;:::o;25864:419::-;26030:4;26068:2;26057:9;26053:18;26045:26;;26117:9;26111:4;26107:20;26103:1;26092:9;26088:17;26081:47;26145:131;26271:4;26145:131;:::i;:::-;26137:139;;25864:419;;;:::o;26289:224::-;26429:34;26425:1;26417:6;26413:14;26406:58;26498:7;26493:2;26485:6;26481:15;26474:32;26289:224;:::o;26519:366::-;26661:3;26682:67;26746:2;26741:3;26682:67;:::i;:::-;26675:74;;26758:93;26847:3;26758:93;:::i;:::-;26876:2;26871:3;26867:12;26860:19;;26519:366;;;:::o;26891:419::-;27057:4;27095:2;27084:9;27080:18;27072:26;;27144:9;27138:4;27134:20;27130:1;27119:9;27115:17;27108:47;27172:131;27298:4;27172:131;:::i;:::-;27164:139;;26891:419;;;:::o;27316:225::-;27456:34;27452:1;27444:6;27440:14;27433:58;27525:8;27520:2;27512:6;27508:15;27501:33;27316:225;:::o;27547:366::-;27689:3;27710:67;27774:2;27769:3;27710:67;:::i;:::-;27703:74;;27786:93;27875:3;27786:93;:::i;:::-;27904:2;27899:3;27895:12;27888:19;;27547:366;;;:::o;27919:419::-;28085:4;28123:2;28112:9;28108:18;28100:26;;28172:9;28166:4;28162:20;28158:1;28147:9;28143:17;28136:47;28200:131;28326:4;28200:131;:::i;:::-;28192:139;;27919:419;;;:::o;28344:223::-;28484:34;28480:1;28472:6;28468:14;28461:58;28553:6;28548:2;28540:6;28536:15;28529:31;28344:223;:::o;28573:366::-;28715:3;28736:67;28800:2;28795:3;28736:67;:::i;:::-;28729:74;;28812:93;28901:3;28812:93;:::i;:::-;28930:2;28925:3;28921:12;28914:19;;28573:366;;;:::o;28945:419::-;29111:4;29149:2;29138:9;29134:18;29126:26;;29198:9;29192:4;29188:20;29184:1;29173:9;29169:17;29162:47;29226:131;29352:4;29226:131;:::i;:::-;29218:139;;28945:419;;;:::o;29370:221::-;29510:34;29506:1;29498:6;29494:14;29487:58;29579:4;29574:2;29566:6;29562:15;29555:29;29370:221;:::o;29597:366::-;29739:3;29760:67;29824:2;29819:3;29760:67;:::i;:::-;29753:74;;29836:93;29925:3;29836:93;:::i;:::-;29954:2;29949:3;29945:12;29938:19;;29597:366;;;:::o;29969:419::-;30135:4;30173:2;30162:9;30158:18;30150:26;;30222:9;30216:4;30212:20;30208:1;30197:9;30193:17;30186:47;30250:131;30376:4;30250:131;:::i;:::-;30242:139;;29969:419;;;:::o;30394:228::-;30534:34;30530:1;30522:6;30518:14;30511:58;30603:11;30598:2;30590:6;30586:15;30579:36;30394:228;:::o;30628:366::-;30770:3;30791:67;30855:2;30850:3;30791:67;:::i;:::-;30784:74;;30867:93;30956:3;30867:93;:::i;:::-;30985:2;30980:3;30976:12;30969:19;;30628:366;;;:::o;31000:419::-;31166:4;31204:2;31193:9;31189:18;31181:26;;31253:9;31247:4;31243:20;31239:1;31228:9;31224:17;31217:47;31281:131;31407:4;31281:131;:::i;:::-;31273:139;;31000:419;;;:::o;31425:169::-;31565:21;31561:1;31553:6;31549:14;31542:45;31425:169;:::o;31600:366::-;31742:3;31763:67;31827:2;31822:3;31763:67;:::i;:::-;31756:74;;31839:93;31928:3;31839:93;:::i;:::-;31957:2;31952:3;31948:12;31941:19;;31600:366;;;:::o;31972:419::-;32138:4;32176:2;32165:9;32161:18;32153:26;;32225:9;32219:4;32215:20;32211:1;32200:9;32196:17;32189:47;32253:131;32379:4;32253:131;:::i;:::-;32245:139;;31972:419;;;:::o;32397:180::-;32445:77;32442:1;32435:88;32542:4;32539:1;32532:15;32566:4;32563:1;32556:15;32583:185;32623:1;32640:20;32658:1;32640:20;:::i;:::-;32635:25;;32674:20;32692:1;32674:20;:::i;:::-;32669:25;;32713:1;32703:35;;32718:18;;:::i;:::-;32703:35;32760:1;32757;32753:9;32748:14;;32583:185;;;;:::o;32774:224::-;32914:34;32910:1;32902:6;32898:14;32891:58;32983:7;32978:2;32970:6;32966:15;32959:32;32774:224;:::o;33004:366::-;33146:3;33167:67;33231:2;33226:3;33167:67;:::i;:::-;33160:74;;33243:93;33332:3;33243:93;:::i;:::-;33361:2;33356:3;33352:12;33345:19;;33004:366;;;:::o;33376:419::-;33542:4;33580:2;33569:9;33565:18;33557:26;;33629:9;33623:4;33619:20;33615:1;33604:9;33600:17;33593:47;33657:131;33783:4;33657:131;:::i;:::-;33649:139;;33376:419;;;:::o;33801:222::-;33941:34;33937:1;33929:6;33925:14;33918:58;34010:5;34005:2;33997:6;33993:15;33986:30;33801:222;:::o;34029:366::-;34171:3;34192:67;34256:2;34251:3;34192:67;:::i;:::-;34185:74;;34268:93;34357:3;34268:93;:::i;:::-;34386:2;34381:3;34377:12;34370:19;;34029:366;;;:::o;34401:419::-;34567:4;34605:2;34594:9;34590:18;34582:26;;34654:9;34648:4;34644:20;34640:1;34629:9;34625:17;34618:47;34682:131;34808:4;34682:131;:::i;:::-;34674:139;;34401:419;;;:::o;34826:225::-;34966:34;34962:1;34954:6;34950:14;34943:58;35035:8;35030:2;35022:6;35018:15;35011:33;34826:225;:::o;35057:366::-;35199:3;35220:67;35284:2;35279:3;35220:67;:::i;:::-;35213:74;;35296:93;35385:3;35296:93;:::i;:::-;35414:2;35409:3;35405:12;35398:19;;35057:366;;;:::o;35429:419::-;35595:4;35633:2;35622:9;35618:18;35610:26;;35682:9;35676:4;35672:20;35668:1;35657:9;35653:17;35646:47;35710:131;35836:4;35710:131;:::i;:::-;35702:139;;35429:419;;;:::o;35854:143::-;35911:5;35942:6;35936:13;35927:22;;35958:33;35985:5;35958:33;:::i;:::-;35854:143;;;;:::o;36003:351::-;36073:6;36122:2;36110:9;36101:7;36097:23;36093:32;36090:119;;;36128:79;;:::i;:::-;36090:119;36248:1;36273:64;36329:7;36320:6;36309:9;36305:22;36273:64;:::i;:::-;36263:74;;36219:128;36003:351;;;;:::o;36360:85::-;36405:7;36434:5;36423:16;;36360:85;;;:::o;36451:158::-;36509:9;36542:61;36560:42;36569:32;36595:5;36569:32;:::i;:::-;36560:42;:::i;:::-;36542:61;:::i;:::-;36529:74;;36451:158;;;:::o;36615:147::-;36710:45;36749:5;36710:45;:::i;:::-;36705:3;36698:58;36615:147;;:::o;36768:114::-;36835:6;36869:5;36863:12;36853:22;;36768:114;;;:::o;36888:184::-;36987:11;37021:6;37016:3;37009:19;37061:4;37056:3;37052:14;37037:29;;36888:184;;;;:::o;37078:132::-;37145:4;37168:3;37160:11;;37198:4;37193:3;37189:14;37181:22;;37078:132;;;:::o;37216:108::-;37293:24;37311:5;37293:24;:::i;:::-;37288:3;37281:37;37216:108;;:::o;37330:179::-;37399:10;37420:46;37462:3;37454:6;37420:46;:::i;:::-;37498:4;37493:3;37489:14;37475:28;;37330:179;;;;:::o;37515:113::-;37585:4;37617;37612:3;37608:14;37600:22;;37515:113;;;:::o;37664:732::-;37783:3;37812:54;37860:5;37812:54;:::i;:::-;37882:86;37961:6;37956:3;37882:86;:::i;:::-;37875:93;;37992:56;38042:5;37992:56;:::i;:::-;38071:7;38102:1;38087:284;38112:6;38109:1;38106:13;38087:284;;;38188:6;38182:13;38215:63;38274:3;38259:13;38215:63;:::i;:::-;38208:70;;38301:60;38354:6;38301:60;:::i;:::-;38291:70;;38147:224;38134:1;38131;38127:9;38122:14;;38087:284;;;38091:14;38387:3;38380:10;;37788:608;;;37664:732;;;;:::o;38402:831::-;38665:4;38703:3;38692:9;38688:19;38680:27;;38717:71;38785:1;38774:9;38770:17;38761:6;38717:71;:::i;:::-;38798:80;38874:2;38863:9;38859:18;38850:6;38798:80;:::i;:::-;38925:9;38919:4;38915:20;38910:2;38899:9;38895:18;38888:48;38953:108;39056:4;39047:6;38953:108;:::i;:::-;38945:116;;39071:72;39139:2;39128:9;39124:18;39115:6;39071:72;:::i;:::-;39153:73;39221:3;39210:9;39206:19;39197:6;39153:73;:::i;:::-;38402:831;;;;;;;;:::o;39239:807::-;39488:4;39526:3;39515:9;39511:19;39503:27;;39540:71;39608:1;39597:9;39593:17;39584:6;39540:71;:::i;:::-;39621:72;39689:2;39678:9;39674:18;39665:6;39621:72;:::i;:::-;39703:80;39779:2;39768:9;39764:18;39755:6;39703:80;:::i;:::-;39793;39869:2;39858:9;39854:18;39845:6;39793:80;:::i;:::-;39883:73;39951:3;39940:9;39936:19;39927:6;39883:73;:::i;:::-;39966;40034:3;40023:9;40019:19;40010:6;39966:73;:::i;:::-;39239:807;;;;;;;;;:::o;40052:143::-;40109:5;40140:6;40134:13;40125:22;;40156:33;40183:5;40156:33;:::i;:::-;40052:143;;;;:::o;40201:663::-;40289:6;40297;40305;40354:2;40342:9;40333:7;40329:23;40325:32;40322:119;;;40360:79;;:::i;:::-;40322:119;40480:1;40505:64;40561:7;40552:6;40541:9;40537:22;40505:64;:::i;:::-;40495:74;;40451:128;40618:2;40644:64;40700:7;40691:6;40680:9;40676:22;40644:64;:::i;:::-;40634:74;;40589:129;40757:2;40783:64;40839:7;40830:6;40819:9;40815:22;40783:64;:::i;:::-;40773:74;;40728:129;40201:663;;;;;:::o;40870:179::-;41010:31;41006:1;40998:6;40994:14;40987:55;40870:179;:::o;41055:366::-;41197:3;41218:67;41282:2;41277:3;41218:67;:::i;:::-;41211:74;;41294:93;41383:3;41294:93;:::i;:::-;41412:2;41407:3;41403:12;41396:19;;41055:366;;;:::o;41427:419::-;41593:4;41631:2;41620:9;41616:18;41608:26;;41680:9;41674:4;41670:20;41666:1;41655:9;41651:17;41644:47;41708:131;41834:4;41708:131;:::i;:::-;41700:139;;41427:419;;;:::o;41852:147::-;41953:11;41990:3;41975:18;;41852:147;;;;:::o;42005:114::-;;:::o;42125:398::-;42284:3;42305:83;42386:1;42381:3;42305:83;:::i;:::-;42298:90;;42397:93;42486:3;42397:93;:::i;:::-;42515:1;42510:3;42506:11;42499:18;;42125:398;;;:::o;42529:379::-;42713:3;42735:147;42878:3;42735:147;:::i;:::-;42728:154;;42899:3;42892:10;;42529:379;;;:::o;42914:245::-;43054:34;43050:1;43042:6;43038:14;43031:58;43123:28;43118:2;43110:6;43106:15;43099:53;42914:245;:::o;43165:366::-;43307:3;43328:67;43392:2;43387:3;43328:67;:::i;:::-;43321:74;;43404:93;43493:3;43404:93;:::i;:::-;43522:2;43517:3;43513:12;43506:19;;43165:366;;;:::o;43537:419::-;43703:4;43741:2;43730:9;43726:18;43718:26;;43790:9;43784:4;43780:20;43776:1;43765:9;43761:17;43754:47;43818:131;43944:4;43818:131;:::i;:::-;43810:139;;43537:419;;;:::o

Swarm Source

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