ETH Price: $3,853.14 (-1.50%)

Token

ERC-20: Awakening (WAKEUP)
 

Overview

Max Total Supply

1,000,000,000 WAKEUP

Holders

135

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
7,644,000 WAKEUP

Value
$0.00
0xfc591e55f2e3258c8e882f154415a52df9830121
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:
Awakening

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-10
*/

// SPDX-License-Identifier: MIT

//Awaken


//TO 


//LET


//TREAT


//BURN


pragma solidity 0.8.17;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    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);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

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

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

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

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

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

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

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

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

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    string private _TREAT_CONTRACT_ADRESS;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract Awakening is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  treatBurnFeeOnBuy;
    uint256 public  treatBurnFeeOnSell;

    uint256 public  marketingFeeOnBuy;
    uint256 public  marketingFeeOnSell;

    uint256 private _totalFeesOnBuy;
    uint256 private _totalFeesOnSell;

    uint256 public  walletToWalletTransferFee;

    address public marketingWallet;
    address public constant TREAT_CONTRACT_ADRESS =  0xFbD5fD3f85e9f4c5E8B40EEC9F8B8ab1cAAa146b;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event UpdateBuyFees(uint256 boneBurnFeeOnBuy, uint256 marketingFeeOnBuy);
    event UpdateSellFees(uint256 boneBurnFeeOnSell, uint256 marketingFeeOnSell);
    event UpdateWalletToWalletTransferFee(uint256 walletToWalletTransferFee);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity);
    event SwapAndSendETH(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("Awakening", "WAKEUP") 
    {   
        address router;
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x03f7724180AA6b939894B5Ca4314783B0b36b329; // ETH Shibaswap Mainnet
        } 
        else {
            revert();
        }

       

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        treatBurnFeeOnBuy  = 12;
        treatBurnFeeOnSell = 25;

        marketingFeeOnBuy  = 13;
        marketingFeeOnSell = 20;           

        _totalFeesOnBuy    = treatBurnFeeOnBuy  + marketingFeeOnBuy;
        _totalFeesOnSell   = treatBurnFeeOnSell + marketingFeeOnSell;

        marketingWallet = 0x163140786a75f861e20Bfe0010F92d1521F001b3;

        maxWalletLimitEnabled = true;
        maxTransactionLimitEnabled = true;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[marketingWallet] = true;
        
        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxWalletLimit[marketingWallet] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingWallet] = true;

        _mint(owner(), 1e9 * (10 ** decimals()));
        swapTokensAtAmount = (totalSupply() * 75) / 10000; // 0.75% swap wallet

        maxTransactionAmountBuy     =  (totalSupply() * 100) / 10000; // 1%
        maxTransactionAmountSell    =  (totalSupply() * 100) / 10000; // 1
        maxWalletAmount             =  (totalSupply() * 100) / 10000; // 1%

        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function changeFees(uint256 _treatBurnFeeOnBuy, uint256 _marketingFeeOnBuy, uint256 _treatBurnFeeOnSell, uint256 _marketingFeeOnSell) external onlyOwner {
        //buy fees
        treatBurnFeeOnBuy = _treatBurnFeeOnBuy;
        marketingFeeOnBuy = _marketingFeeOnBuy;
        _totalFeesOnBuy   = treatBurnFeeOnBuy + marketingFeeOnBuy;
        //sell fees
        treatBurnFeeOnSell = _treatBurnFeeOnSell;
        marketingFeeOnSell = _marketingFeeOnSell;
        _totalFeesOnSell   = treatBurnFeeOnSell + marketingFeeOnSell;

        require(_totalFeesOnBuy + _totalFeesOnSell <= 45, "Total Fees cannot exceed the maximum");
        require(_totalFeesOnBuy + _totalFeesOnSell <= 45, "Total Fees cannot exceed the maximum");
        emit UpdateBuyFees(treatBurnFeeOnBuy, marketingFeeOnBuy);
        emit UpdateSellFees(treatBurnFeeOnSell, marketingFeeOnSell);
    }

   

    function updateMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }

    bool public tradingEnabled;

    function enableTrading(bool wake, bool up, bool to, bool Reality) external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        
        if(
            wake == true &&
            up == true &&
            to == true &&
            Reality == true
        ){

            tradingEnabled = true;
            swapEnabled = true;

        }
       
    }


    function wakeUpToReality(bool wake, bool up, bool to, bool Reality) external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        
        if(
            wake == true &&
            up == true &&
            to == true &&
            Reality == true
        ){

            tradingEnabled = true;
            swapEnabled = true;

        }
       
    }



    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                !_isExcludedFromMaxTxLimit[from] && 
                !_isExcludedFromMaxTxLimit[to]
            ) {
                if (from == uniswapV2Pair) {
                    require(
                        amount <= maxTransactionAmountBuy,  
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                } else {
                    require(
                        amount <= maxTransactionAmountSell, 
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0 &&
            swapEnabled
        ) {
            swapping = true;

            swapAndSendETH(swapTokensAtAmount);

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = _totalFeesOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = _totalFeesOnSell;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) 
        {
            if (!_isExcludedFromMaxWalletLimit[from] && 
                !_isExcludedFromMaxWalletLimit[to] &&
                to != uniswapV2Pair
            ) {
                uint256 balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "MaxWallet: Recipient exceeds the maxWalletAmount"
                );
            }
        }

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

    /////////////////////////////////////// SWAP SYSTEM

    function updateContractSell(bool _enabled) external onlyOwner{
        
        swapEnabled = _enabled;
    }

    function changeSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
       
        swapTokensAtAmount = (totalSupply() * newAmount) / 10000; // 10 = 0.1%; 100 = 1%;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendETH(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;
        uint256 marketingBalance = newBalance * (marketingFeeOnBuy + marketingFeeOnSell) / (_totalFeesOnBuy + _totalFeesOnSell);
        uint256 treatBalance = newBalance - marketingBalance;

        if (marketingBalance > 0){
            payable(marketingWallet).sendValue(marketingBalance);
        }

        if (treatBalance > 0){
            address[] memory pathTwo = new address[](2);
            pathTwo[0] = uniswapV2Router.WETH();
            pathTwo[1] = address(0xFbD5fD3f85e9f4c5E8B40EEC9F8B8ab1cAAa146b);

            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: treatBalance}( 
                0,
                pathTwo,
                address(0xdead),
                block.timestamp + 300
            );
        }

        emit SwapAndSendETH(tokenAmount, newBalance);
    }

    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool    public maxWalletLimitEnabled;
    uint256 public maxWalletAmount;

    event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded);
    event MaxWalletLimitStateChanged(bool maxWalletLimit);
    event MaxWalletLimitAmountChanged(uint256 maxWalletAmount);

    function setEnableMaxWalletLimit(bool enable) external onlyOwner {
        require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state");
        maxWalletLimitEnabled = enable;

        emit MaxWalletLimitStateChanged(maxWalletLimitEnabled);
    }

    
    function excludeFromMaxWallet(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state");
        _isExcludedFromMaxWalletLimit[account] = exclude;

        emit ExcludedFromMaxWalletLimit(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }


    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public  maxTransactionLimitEnabled;
    uint256 public  maxTransactionAmountBuy;
    uint256 public  maxTransactionAmountSell;

    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
    event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell);

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state");
        maxTransactionLimitEnabled = enable;

        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function changeLimits(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell, uint256 _maxWalletAmount) external onlyOwner {
        
        
        require(
            _maxTransactionAmountBuy  >= (totalSupply() / (10 ** decimals())) / 1_000 && 
            _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, 
            "Max Transaction limis cannot be lower than 0.1% of total supply"
        ); 
        maxTransactionAmountBuy  = _maxTransactionAmountBuy  * (10 ** decimals());
        maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());
        
        require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%");
        maxWalletAmount = _maxWalletAmount * (10 ** decimals());

        emit MaxWalletLimitAmountChanged(maxWalletAmount);
        emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
    }

    function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxTxLimit[account] = exclude;

        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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":false,"internalType":"uint256","name":"boneBurnFeeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnBuy","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"boneBurnFeeOnSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingFeeOnSell","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"walletToWalletTransferFee","type":"uint256"}],"name":"UpdateWalletToWalletTransferFee","type":"event"},{"inputs":[],"name":"TREAT_CONTRACT_ADRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treatBurnFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_treatBurnFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"},{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"changeSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"wake","type":"bool"},{"internalType":"bool","name":"up","type":"bool"},{"internalType":"bool","name":"to","type":"bool"},{"internalType":"bool","name":"Reality","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treatBurnFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treatBurnFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateContractSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wake","type":"bool"},{"internalType":"bool","name":"up","type":"bool"},{"internalType":"bool","name":"to","type":"bool"},{"internalType":"bool","name":"Reality","type":"bool"}],"name":"wakeUpToReality","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4177616b656e696e6700000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f57414b455550000000000000000000000000000000000000000000000000000081525081600390816200008f919062001122565b508060049081620000a1919062001122565b5050506000620000b662000b1060201b60201c565b905080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000603846036200017d577310ed43c718714eb63d5aa57b78b54704e256024e9050620001dd565b60614603620001a35773d99d1c33f9fc3444f8101754abc46c52416550d19050620001dc565b6001461480620001b35750600546145b15620001d6577303f7724180aa6b939894b5ca4314783b0b36b3299050620001db565b600080fd5b5b5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000256919062001273565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e4919062001273565b6040518363ffffffff1660e01b815260040162000303929190620012b6565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000349919062001273565b905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200042230600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b1860201b60201c565b600c600a819055506019600b81905550600d600c819055506014600d81905550600c54600a5462000454919062001312565b600e81905550600d54600b546200046c919062001312565b600f8190555073163140786a75f861e20bfe0010f92d1521f001b3601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560006101000a81548160ff0219169083151502179055506001601860006101000a81548160ff0219169083151502179055506001601760006200051362000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016017600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000620006a662000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960006200083962000ce960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a05620009ca62000ce960201b60201c565b620009da62000d1360201b60201c565b600a620009e89190620014ae565b633b9aca00620009f99190620014ff565b62000d1c60201b60201c565b612710604b62000a1a62000e9460201b60201c565b62000a269190620014ff565b62000a32919062001579565b601281905550612710606462000a4d62000e9460201b60201c565b62000a599190620014ff565b62000a65919062001579565b601981905550612710606462000a8062000e9460201b60201c565b62000a8c9190620014ff565b62000a98919062001579565b601a81905550612710606462000ab362000e9460201b60201c565b62000abf9190620014ff565b62000acb919062001579565b6016819055506000601360026101000a81548160ff0219169083151502179055506000601360016101000a81548160ff02191690831515021790555050505062001792565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000b8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b819062001638565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bf390620016d0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000cdc919062001703565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000d8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d859062001770565b60405180910390fd5b62000da26000838362000e9e60201b60201c565b806002600082825462000db6919062001312565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000e0d919062001312565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e74919062001703565b60405180910390a362000e906000838362000ea360201b60201c565b5050565b6000600254905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f2a57607f821691505b60208210810362000f405762000f3f62000ee2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000faa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f6b565b62000fb6868362000f6b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200100362000ffd62000ff78462000fce565b62000fd8565b62000fce565b9050919050565b6000819050919050565b6200101f8362000fe2565b620010376200102e826200100a565b84845462000f78565b825550505050565b600090565b6200104e6200103f565b6200105b81848462001014565b505050565b5b8181101562001083576200107760008262001044565b60018101905062001061565b5050565b601f821115620010d2576200109c8162000f46565b620010a78462000f5b565b81016020851015620010b7578190505b620010cf620010c68562000f5b565b83018262001060565b50505b505050565b600082821c905092915050565b6000620010f760001984600802620010d7565b1980831691505092915050565b6000620011128383620010e4565b9150826002028217905092915050565b6200112d8262000ea8565b67ffffffffffffffff81111562001149576200114862000eb3565b5b62001155825462000f11565b6200116282828562001087565b600060209050601f8311600181146200119a576000841562001185578287015190505b62001191858262001104565b86555062001201565b601f198416620011aa8662000f46565b60005b82811015620011d457848901518255600182019150602085019450602081019050620011ad565b86831015620011f45784890151620011f0601f891682620010e4565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200123b826200120e565b9050919050565b6200124d816200122e565b81146200125957600080fd5b50565b6000815190506200126d8162001242565b92915050565b6000602082840312156200128c576200128b62001209565b5b60006200129c848285016200125c565b91505092915050565b620012b0816200122e565b82525050565b6000604082019050620012cd6000830185620012a5565b620012dc6020830184620012a5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200131f8262000fce565b91506200132c8362000fce565b9250828201905080821115620013475762001346620012e3565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115620013ac57808604811115620013845762001383620012e3565b5b6001851615620013945780820291505b8081029050620013a4856200134d565b945062001364565b94509492505050565b600082620013c757600190506200149a565b81620013d757600090506200149a565b8160018114620013f05760028114620013fb5762001431565b60019150506200149a565b60ff84111562001410576200140f620012e3565b5b8360020a9150848211156200142a5762001429620012e3565b5b506200149a565b5060208310610133831016604e8410600b84101617156200146b5782820a905083811115620014655762001464620012e3565b5b6200149a565b6200147a84848460016200135a565b92509050818404811115620014945762001493620012e3565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014bb8262000fce565b9150620014c883620014a1565b9250620014f77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b5565b905092915050565b60006200150c8262000fce565b9150620015198362000fce565b9250828202620015298162000fce565b91508282048414831517620015435762001542620012e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015868262000fce565b9150620015938362000fce565b925082620015a657620015a56200154a565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062001620602483620015b1565b91506200162d82620015c2565b604082019050919050565b60006020820190508181036000830152620016538162001611565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016b8602283620015b1565b9150620016c5826200165a565b604082019050919050565b60006020820190508181036000830152620016eb81620016a9565b9050919050565b620016fd8162000fce565b82525050565b60006020820190506200171a6000830184620016f2565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001758601f83620015b1565b9150620017658262001720565b602082019050919050565b600060208201905081810360008301526200178b8162001749565b9050919050565b61581480620017a26000396000f3fe60806040526004361061028c5760003560e01c8063702509fd1161015a578063a9059cbb116100c1578063dc4c7dbc1161007a578063dc4c7dbc146109f3578063dd62ed3e14610a1e578063e2f4560514610a5b578063ebb19bd914610a86578063f2fde38b14610aaf578063f9d0831a14610ad857610293565b8063a9059cbb146108e7578063aa4bde2814610924578063aacebbe31461094f578063c024666814610978578063d2fcc001146109a1578063d581155c146109ca57610293565b80638d3f2fc0116101135780638d3f2fc0146107c35780638da5cb5b146107ee57806395d89b41146108195780639f7a797d14610844578063a457c2d71461086d578063a8a69b9d146108aa57610293565b8063702509fd146106c557806370a08231146106f0578063715018a61461072d57806375f0a8741461074457806386a4050d1461076f578063880bcbc11461079a57610293565b8063313ce567116101fe578063547981bf116101b7578063547981bf146105c757806356a6cabf146105f257806359136fa51461061b5780635fc2e59614610646578063650c4226146106715780636ddd17131461069a57610293565b8063313ce567146104a357806339509351146104ce57806349bd5a5e1461050b5780634ada218b146105365780634d808802146105615780634fbee1931461058a57610293565b806318160ddd1161025057806318160ddd1461037f57806318d9ceae146103aa57806321a9d82a146103e757806323b872dd146104125780632a6c7dba1461044f5780632ba86bf21461047857610293565b80630105d0fd1461029857806306fdde03146102c3578063095ea7b3146102ee57806309d6bf0a1461032b5780631694505e1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b01565b6040516102ba9190613e6e565b60405180910390f35b3480156102cf57600080fd5b506102d8610b07565b6040516102e59190613f19565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613fca565b610b99565b6040516103229190614025565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190614040565b610bb7565b005b34801561036057600080fd5b50610369610cb0565b60405161037691906140cc565b60405180910390f35b34801561038b57600080fd5b50610394610cd6565b6040516103a19190613e6e565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906140e7565b610ce0565b6040516103de9190614025565b60405180910390f35b3480156103f357600080fd5b506103fc610d36565b6040516104099190614025565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190614114565b610d49565b6040516104469190614025565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190614193565b610e68565b005b34801561048457600080fd5b5061048d610fb7565b60405161049a9190614025565b60405180910390f35b3480156104af57600080fd5b506104b8610fca565b6040516104c591906141dc565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613fca565b610fd3565b6040516105029190614025565b60405180910390f35b34801561051757600080fd5b5061052061107f565b60405161052d9190614206565b60405180910390f35b34801561054257600080fd5b5061054b6110a5565b6040516105589190614025565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614221565b6110b8565b005b34801561059657600080fd5b506105b160048036038101906105ac91906140e7565b611360565b6040516105be9190614025565b60405180910390f35b3480156105d357600080fd5b506105dc6113b6565b6040516105e99190613e6e565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190614193565b6113bc565b005b34801561062757600080fd5b5061063061150b565b60405161063d9190613e6e565b60405180910390f35b34801561065257600080fd5b5061065b611511565b6040516106689190613e6e565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190614274565b611517565b005b3480156106a657600080fd5b506106af61171c565b6040516106bc9190614025565b60405180910390f35b3480156106d157600080fd5b506106da61172f565b6040516106e79190613e6e565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906140e7565b611735565b6040516107249190613e6e565b60405180910390f35b34801561073957600080fd5b5061074261177d565b005b34801561075057600080fd5b506107596118d5565b6040516107669190614206565b60405180910390f35b34801561077b57600080fd5b506107846118fb565b6040516107919190614206565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc91906142db565b611913565b005b3480156107cf57600080fd5b506107d8611ae5565b6040516107e59190613e6e565b60405180910390f35b3480156107fa57600080fd5b50610803611aeb565b6040516108109190614206565b60405180910390f35b34801561082557600080fd5b5061082e611b15565b60405161083b9190613f19565b60405180910390f35b34801561085057600080fd5b5061086b6004803603810190610866919061431b565b611ba7565b005b34801561087957600080fd5b50610894600480360381019061088f9190613fca565b611d08565b6040516108a19190614025565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc91906140e7565b611df3565b6040516108de9190614025565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613fca565b611e49565b60405161091b9190614025565b60405180910390f35b34801561093057600080fd5b50610939611e67565b6040516109469190613e6e565b60405180910390f35b34801561095b57600080fd5b50610976600480360381019061097191906140e7565b611e6d565b005b34801561098457600080fd5b5061099f600480360381019061099a91906142db565b6120a0565b005b3480156109ad57600080fd5b506109c860048036038101906109c391906142db565b612272565b005b3480156109d657600080fd5b506109f160048036038101906109ec9190614193565b612444565b005b3480156109ff57600080fd5b50610a086124f8565b604051610a159190613e6e565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614382565b6124fe565b604051610a529190613e6e565b60405180910390f35b348015610a6757600080fd5b50610a70612585565b604051610a7d9190613e6e565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa8919061431b565b61258b565b005b348015610abb57600080fd5b50610ad66004803603810190610ad191906140e7565b6126ec565b005b348015610ae457600080fd5b50610aff6004803603810190610afa91906140e7565b6128b2565b005b60195481565b606060038054610b16906143f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b42906143f1565b8015610b8f5780601f10610b6457610100808354040283529160200191610b8f565b820191906000526020600020905b815481529060010190602001808311610b7257829003601f168201915b5050505050905090565b6000610bad610ba6612b21565b8484612b29565b6001905092915050565b610bbf612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061446e565b60405180910390fd5b61271081610c5a610cd6565b610c6491906144bd565b610c6e919061452e565b6012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601254604051610ca59190613e6e565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d95612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e515782811015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906145d1565b60405180910390fd5b610e5085610e48612b21565b858403612b29565b5b610e5c858585612cf2565b60019150509392505050565b610e70612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061446e565b60405180910390fd5b601560009054906101000a900460ff16151581151503610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90614663565b60405180910390fd5b80601560006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601560009054906101000a900460ff16604051610fac9190614025565b60405180910390a150565b601860009054906101000a900460ff1681565b60006012905090565b6000611075610fe0612b21565b848460016000610fee612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110709190614683565b612b29565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360029054906101000a900460ff1681565b6110c0612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111469061446e565b60405180910390fd5b6103e861115a610fca565b600a61116691906147ea565b61116e610cd6565b611178919061452e565b611182919061452e565b83101580156111c357506103e8611197610fca565b600a6111a391906147ea565b6111ab610cd6565b6111b5919061452e565b6111bf919061452e565b8210155b611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906148a7565b60405180910390fd5b61120a610fca565b600a61121691906147ea565b8361122191906144bd565b60198190555061122f610fca565b600a61123b91906147ea565b8261124691906144bd565b601a819055506064611256610fca565b600a61126291906147ea565b61126a610cd6565b611274919061452e565b61127e919061452e565b8110156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790614939565b60405180910390fd5b6112c8610fca565b600a6112d491906147ea565b816112df91906144bd565b6016819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426016546040516113169190613e6e565b60405180910390a17f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601954601a54604051611353929190614959565b60405180910390a1505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b6113c4612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061446e565b60405180910390fd5b601860009054906101000a900460ff161515811515036114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906149f4565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601860009054906101000a900460ff166040516115009190614025565b60405180910390a150565b601a5481565b600c5481565b61151f612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a59061446e565b60405180910390fd5b83600a8190555082600c81905550600c54600a546115cc9190614683565b600e8190555081600b8190555080600d81905550600d54600b546115f09190614683565b600f81905550602d600f54600e546116089190614683565b1115611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090614a86565b60405180910390fd5b602d600f54600e5461165b9190614683565b111561169c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169390614a86565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600a54600c546040516116d1929190614959565b60405180910390a17f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600b54600d5460405161170e929190614959565b60405180910390a150505050565b601360019054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611785612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b9061446e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73fbd5fd3f85e9f4c5e8b40eec9f8b8ab1caaa146b81565b61191b612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a19061446e565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390614b18565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611ad99190614025565b60405180910390a25050565b600a5481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b24906143f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611b50906143f1565b8015611b9d5780601f10611b7257610100808354040283529160200191611b9d565b820191906000526020600020905b815481529060010190602001808311611b8057829003601f168201915b5050505050905090565b611baf612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c359061446e565b60405180910390fd5b601360029054906101000a900460ff1615611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590614b84565b60405180910390fd5b60011515841515148015611ca6575060011515831515145b8015611cb6575060011515821515145b8015611cc6575060011515811515145b15611d02576001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055505b50505050565b60008060016000611d17612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb90614c16565b60405180910390fd5b611de8611ddf612b21565b85858403612b29565b600191505092915050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611e5d611e56612b21565b8484612cf2565b6001905092915050565b60165481565b611e75612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb9061446e565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90614ca8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90614d3a565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120959190614206565b60405180910390a150565b6120a8612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e9061446e565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c090614dcc565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122669190614025565b60405180910390a25050565b61227a612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123009061446e565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239290614b18565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516124389190614025565b60405180910390a25050565b61244c612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d29061446e565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b612593612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126199061446e565b60405180910390fd5b601360029054906101000a900460ff1615612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614b84565b60405180910390fd5b6001151584151514801561268a575060011515831515145b801561269a575060011515821515145b80156126aa575060011515811515145b156126e6576001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055505b50505050565b6126f4612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a9061446e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990614e5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128ba612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129409061446e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90614ef0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a1957612a14473373ffffffffffffffffffffffffffffffffffffffff1661359390919063ffffffff16565b612b1e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a599190614206565b602060405180830381865afa158015612a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9a9190614f25565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612ad7929190614f52565b6020604051808303816000875af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a9190614f90565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8f9061502f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfe906150c1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ce59190613e6e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5890615153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc7906151e5565b60405180910390fd5b601360029054906101000a900460ff1680612e345750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612e885750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebe90615251565b60405180910390fd5b60008103612ee057612edb83836000613687565b61358e565b601860009054906101000a900460ff161561313657600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f9e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612ff45750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561304a5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313557600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130ee576019548111156130e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e0906152e3565b60405180910390fd5b613134565b601a54811115613133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312a906152e3565b60405180910390fd5b5b5b5b600061314130611735565b9050600060125482101590508080156131675750601360009054906101000a900460ff16155b80156131c05750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156131db57506000600f54600e546131d99190614683565b115b80156131f35750601360019054906101000a900460ff165b1561323a576001601360006101000a81548160ff02191690831515021790555061321e601254613906565b6000601360006101000a81548160ff0219169083151502179055505b6000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132dd5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132f45750601360009054906101000a900460ff165b1561330257600090506133c7565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361336157600e5490506133c6565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036133c057600f5490506133c5565b600090505b5b5b6000811115613407576000606482866133e091906144bd565b6133ea919061452e565b905080856133f89190615303565b9450613405873083613687565b505b601560009054906101000a900460ff161561357f57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c05750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561351a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561357e57600061352a86611735565b9050601654858261353b9190614683565b111561357c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613573906153a9565b60405180910390fd5b505b5b61358a868686613687565b5050505b505050565b804710156135d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135cd90615415565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516135fc90615466565b60006040518083038185875af1925050503d8060008114613639576040519150601f19603f3d011682016040523d82523d6000602084013e61363e565b606091505b5050905080613682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613679906154ed565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ed90615153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375c906151e5565b60405180910390fd5b613770838383613e4b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ed9061557f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138899190614683565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138ed9190613e6e565b60405180910390a3613900848484613e50565b50505050565b60004790506000600267ffffffffffffffff8111156139285761392761559f565b5b6040519080825280602002602001820160405280156139565781602001602082028036833780820191505090505b509050308160008151811061396e5761396d6155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a399190615612565b81600181518110613a4d57613a4c6155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401613aeb959493929190615738565b600060405180830381600087803b158015613b0557600080fd5b505af1158015613b19573d6000803e3d6000fd5b5050505060008247613b2b9190615303565b90506000600f54600e54613b3f9190614683565b600d54600c54613b4f9190614683565b83613b5a91906144bd565b613b64919061452e565b905060008183613b749190615303565b90506000821115613bcb57613bca82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661359390919063ffffffff16565b5b6000811115613e0a576000600267ffffffffffffffff811115613bf157613bf061559f565b5b604051908082528060200260200182016040528015613c1f5781602001602082028036833780820191505090505b509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb39190615612565b81600081518110613cc757613cc66155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fbd5fd3f85e9f4c5e8b40eec9f8b8ab1caaa146b81600181518110613d2a57613d296155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead61012c42613db79190614683565b6040518663ffffffff1660e01b8152600401613dd69493929190615792565b6000604051808303818588803b158015613def57600080fd5b505af1158015613e03573d6000803e3d6000fd5b5050505050505b7f94b0d5a5b2879507b25bbfd8a3bfed636aeb5ef2386d2c5368585e22e60d3d188684604051613e3b929190614959565b60405180910390a1505050505050565b505050565b505050565b6000819050919050565b613e6881613e55565b82525050565b6000602082019050613e836000830184613e5f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ec3578082015181840152602081019050613ea8565b60008484015250505050565b6000601f19601f8301169050919050565b6000613eeb82613e89565b613ef58185613e94565b9350613f05818560208601613ea5565b613f0e81613ecf565b840191505092915050565b60006020820190508181036000830152613f338184613ee0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6b82613f40565b9050919050565b613f7b81613f60565b8114613f8657600080fd5b50565b600081359050613f9881613f72565b92915050565b613fa781613e55565b8114613fb257600080fd5b50565b600081359050613fc481613f9e565b92915050565b60008060408385031215613fe157613fe0613f3b565b5b6000613fef85828601613f89565b925050602061400085828601613fb5565b9150509250929050565b60008115159050919050565b61401f8161400a565b82525050565b600060208201905061403a6000830184614016565b92915050565b60006020828403121561405657614055613f3b565b5b600061406484828501613fb5565b91505092915050565b6000819050919050565b600061409261408d61408884613f40565b61406d565b613f40565b9050919050565b60006140a482614077565b9050919050565b60006140b682614099565b9050919050565b6140c6816140ab565b82525050565b60006020820190506140e160008301846140bd565b92915050565b6000602082840312156140fd576140fc613f3b565b5b600061410b84828501613f89565b91505092915050565b60008060006060848603121561412d5761412c613f3b565b5b600061413b86828701613f89565b935050602061414c86828701613f89565b925050604061415d86828701613fb5565b9150509250925092565b6141708161400a565b811461417b57600080fd5b50565b60008135905061418d81614167565b92915050565b6000602082840312156141a9576141a8613f3b565b5b60006141b78482850161417e565b91505092915050565b600060ff82169050919050565b6141d6816141c0565b82525050565b60006020820190506141f160008301846141cd565b92915050565b61420081613f60565b82525050565b600060208201905061421b60008301846141f7565b92915050565b60008060006060848603121561423a57614239613f3b565b5b600061424886828701613fb5565b935050602061425986828701613fb5565b925050604061426a86828701613fb5565b9150509250925092565b6000806000806080858703121561428e5761428d613f3b565b5b600061429c87828801613fb5565b94505060206142ad87828801613fb5565b93505060406142be87828801613fb5565b92505060606142cf87828801613fb5565b91505092959194509250565b600080604083850312156142f2576142f1613f3b565b5b600061430085828601613f89565b92505060206143118582860161417e565b9150509250929050565b6000806000806080858703121561433557614334613f3b565b5b60006143438782880161417e565b94505060206143548782880161417e565b93505060406143658782880161417e565b92505060606143768782880161417e565b91505092959194509250565b6000806040838503121561439957614398613f3b565b5b60006143a785828601613f89565b92505060206143b885828601613f89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061440957607f821691505b60208210810361441c5761441b6143c2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614458602083613e94565b915061446382614422565b602082019050919050565b600060208201905081810360008301526144878161444b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c882613e55565b91506144d383613e55565b92508282026144e181613e55565b915082820484148315176144f8576144f761448e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061453982613e55565b915061454483613e55565b925082614554576145536144ff565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145bb602883613e94565b91506145c68261455f565b604082019050919050565b600060208201905081810360008301526145ea816145ae565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b600061464d602d83613e94565b9150614658826145f1565b604082019050919050565b6000602082019050818103600083015261467c81614640565b9050919050565b600061468e82613e55565b915061469983613e55565b92508282019050808211156146b1576146b061448e565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561470e578086048111156146ea576146e961448e565b5b60018516156146f95780820291505b8081029050614707856146b7565b94506146ce565b94509492505050565b60008261472757600190506147e3565b8161473557600090506147e3565b816001811461474b576002811461475557614784565b60019150506147e3565b60ff8411156147675761476661448e565b5b8360020a91508482111561477e5761477d61448e565b5b506147e3565b5060208310610133831016604e8410600b84101617156147b95782820a9050838111156147b4576147b361448e565b5b6147e3565b6147c684848460016146c4565b925090508184048111156147dd576147dc61448e565b5b81810290505b9392505050565b60006147f582613e55565b9150614800836141c0565b925061482d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614717565b905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614891603f83613e94565b915061489c82614835565b604082019050919050565b600060208201905081810360008301526148c081614884565b9050919050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614923602d83613e94565b915061492e826148c7565b604082019050919050565b6000602082019050818103600083015261495281614916565b9050919050565b600060408201905061496e6000830185613e5f565b61497b6020830184613e5f565b9392505050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006149de603283613e94565b91506149e982614982565b604082019050919050565b60006020820190508181036000830152614a0d816149d1565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a70602483613e94565b9150614a7b82614a14565b604082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614b02602483613e94565b9150614b0d82614aa6565b604082019050919050565b60006020820190508181036000830152614b3181614af5565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614b6e601883613e94565b9150614b7982614b38565b602082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c00602583613e94565b9150614c0b82614ba4565b604082019050919050565b60006020820190508181036000830152614c2f81614bf3565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000614c92602883613e94565b9150614c9d82614c36565b604082019050919050565b60006020820190508181036000830152614cc181614c85565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614d24602b83613e94565b9150614d2f82614cc8565b604082019050919050565b60006020820190508181036000830152614d5381614d17565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614db6602a83613e94565b9150614dc182614d5a565b604082019050919050565b60006020820190508181036000830152614de581614da9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e48602683613e94565b9150614e5382614dec565b604082019050919050565b60006020820190508181036000830152614e7781614e3b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614eda603783613e94565b9150614ee582614e7e565b604082019050919050565b60006020820190508181036000830152614f0981614ecd565b9050919050565b600081519050614f1f81613f9e565b92915050565b600060208284031215614f3b57614f3a613f3b565b5b6000614f4984828501614f10565b91505092915050565b6000604082019050614f6760008301856141f7565b614f746020830184613e5f565b9392505050565b600081519050614f8a81614167565b92915050565b600060208284031215614fa657614fa5613f3b565b5b6000614fb484828501614f7b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615019602483613e94565b915061502482614fbd565b604082019050919050565b600060208201905081810360008301526150488161500c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150ab602283613e94565b91506150b68261504f565b604082019050919050565b600060208201905081810360008301526150da8161509e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061513d602583613e94565b9150615148826150e1565b604082019050919050565b6000602082019050818103600083015261516c81615130565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151cf602383613e94565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061523b601883613e94565b915061524682615205565b602082019050919050565b6000602082019050818103600083015261526a8161522e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006152cd603b83613e94565b91506152d882615271565b604082019050919050565b600060208201905081810360008301526152fc816152c0565b9050919050565b600061530e82613e55565b915061531983613e55565b92508282039050818111156153315761533061448e565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615393603083613e94565b915061539e82615337565b604082019050919050565b600060208201905081810360008301526153c281615386565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006153ff601d83613e94565b915061540a826153c9565b602082019050919050565b6000602082019050818103600083015261542e816153f2565b9050919050565b600081905092915050565b50565b6000615450600083615435565b915061545b82615440565b600082019050919050565b600061547182615443565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006154d7603a83613e94565b91506154e28261547b565b604082019050919050565b60006020820190508181036000830152615506816154ca565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615569602683613e94565b91506155748261550d565b604082019050919050565b600060208201905081810360008301526155988161555c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061560c81613f72565b92915050565b60006020828403121561562857615627613f3b565b5b6000615636848285016155fd565b91505092915050565b6000819050919050565b600061566461565f61565a8461563f565b61406d565b613e55565b9050919050565b61567481615649565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156af81613f60565b82525050565b60006156c183836156a6565b60208301905092915050565b6000602082019050919050565b60006156e58261567a565b6156ef8185615685565b93506156fa83615696565b8060005b8381101561572b57815161571288826156b5565b975061571d836156cd565b9250506001810190506156fe565b5085935050505092915050565b600060a08201905061574d6000830188613e5f565b61575a602083018761566b565b818103604083015261576c81866156da565b905061577b60608301856141f7565b6157886080830184613e5f565b9695505050505050565b60006080820190506157a7600083018761566b565b81810360208301526157b981866156da565b90506157c860408301856141f7565b6157d56060830184613e5f565b9594505050505056fea264697066735822122018fd54a5d92eda14b936e7b1cbaff4e21206ee661ad1b1e90860c4ffd6d59b4e64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063702509fd1161015a578063a9059cbb116100c1578063dc4c7dbc1161007a578063dc4c7dbc146109f3578063dd62ed3e14610a1e578063e2f4560514610a5b578063ebb19bd914610a86578063f2fde38b14610aaf578063f9d0831a14610ad857610293565b8063a9059cbb146108e7578063aa4bde2814610924578063aacebbe31461094f578063c024666814610978578063d2fcc001146109a1578063d581155c146109ca57610293565b80638d3f2fc0116101135780638d3f2fc0146107c35780638da5cb5b146107ee57806395d89b41146108195780639f7a797d14610844578063a457c2d71461086d578063a8a69b9d146108aa57610293565b8063702509fd146106c557806370a08231146106f0578063715018a61461072d57806375f0a8741461074457806386a4050d1461076f578063880bcbc11461079a57610293565b8063313ce567116101fe578063547981bf116101b7578063547981bf146105c757806356a6cabf146105f257806359136fa51461061b5780635fc2e59614610646578063650c4226146106715780636ddd17131461069a57610293565b8063313ce567146104a357806339509351146104ce57806349bd5a5e1461050b5780634ada218b146105365780634d808802146105615780634fbee1931461058a57610293565b806318160ddd1161025057806318160ddd1461037f57806318d9ceae146103aa57806321a9d82a146103e757806323b872dd146104125780632a6c7dba1461044f5780632ba86bf21461047857610293565b80630105d0fd1461029857806306fdde03146102c3578063095ea7b3146102ee57806309d6bf0a1461032b5780631694505e1461035457610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b01565b6040516102ba9190613e6e565b60405180910390f35b3480156102cf57600080fd5b506102d8610b07565b6040516102e59190613f19565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190613fca565b610b99565b6040516103229190614025565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190614040565b610bb7565b005b34801561036057600080fd5b50610369610cb0565b60405161037691906140cc565b60405180910390f35b34801561038b57600080fd5b50610394610cd6565b6040516103a19190613e6e565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc91906140e7565b610ce0565b6040516103de9190614025565b60405180910390f35b3480156103f357600080fd5b506103fc610d36565b6040516104099190614025565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190614114565b610d49565b6040516104469190614025565b60405180910390f35b34801561045b57600080fd5b5061047660048036038101906104719190614193565b610e68565b005b34801561048457600080fd5b5061048d610fb7565b60405161049a9190614025565b60405180910390f35b3480156104af57600080fd5b506104b8610fca565b6040516104c591906141dc565b60405180910390f35b3480156104da57600080fd5b506104f560048036038101906104f09190613fca565b610fd3565b6040516105029190614025565b60405180910390f35b34801561051757600080fd5b5061052061107f565b60405161052d9190614206565b60405180910390f35b34801561054257600080fd5b5061054b6110a5565b6040516105589190614025565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614221565b6110b8565b005b34801561059657600080fd5b506105b160048036038101906105ac91906140e7565b611360565b6040516105be9190614025565b60405180910390f35b3480156105d357600080fd5b506105dc6113b6565b6040516105e99190613e6e565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190614193565b6113bc565b005b34801561062757600080fd5b5061063061150b565b60405161063d9190613e6e565b60405180910390f35b34801561065257600080fd5b5061065b611511565b6040516106689190613e6e565b60405180910390f35b34801561067d57600080fd5b5061069860048036038101906106939190614274565b611517565b005b3480156106a657600080fd5b506106af61171c565b6040516106bc9190614025565b60405180910390f35b3480156106d157600080fd5b506106da61172f565b6040516106e79190613e6e565b60405180910390f35b3480156106fc57600080fd5b50610717600480360381019061071291906140e7565b611735565b6040516107249190613e6e565b60405180910390f35b34801561073957600080fd5b5061074261177d565b005b34801561075057600080fd5b506107596118d5565b6040516107669190614206565b60405180910390f35b34801561077b57600080fd5b506107846118fb565b6040516107919190614206565b60405180910390f35b3480156107a657600080fd5b506107c160048036038101906107bc91906142db565b611913565b005b3480156107cf57600080fd5b506107d8611ae5565b6040516107e59190613e6e565b60405180910390f35b3480156107fa57600080fd5b50610803611aeb565b6040516108109190614206565b60405180910390f35b34801561082557600080fd5b5061082e611b15565b60405161083b9190613f19565b60405180910390f35b34801561085057600080fd5b5061086b6004803603810190610866919061431b565b611ba7565b005b34801561087957600080fd5b50610894600480360381019061088f9190613fca565b611d08565b6040516108a19190614025565b60405180910390f35b3480156108b657600080fd5b506108d160048036038101906108cc91906140e7565b611df3565b6040516108de9190614025565b60405180910390f35b3480156108f357600080fd5b5061090e60048036038101906109099190613fca565b611e49565b60405161091b9190614025565b60405180910390f35b34801561093057600080fd5b50610939611e67565b6040516109469190613e6e565b60405180910390f35b34801561095b57600080fd5b50610976600480360381019061097191906140e7565b611e6d565b005b34801561098457600080fd5b5061099f600480360381019061099a91906142db565b6120a0565b005b3480156109ad57600080fd5b506109c860048036038101906109c391906142db565b612272565b005b3480156109d657600080fd5b506109f160048036038101906109ec9190614193565b612444565b005b3480156109ff57600080fd5b50610a086124f8565b604051610a159190613e6e565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190614382565b6124fe565b604051610a529190613e6e565b60405180910390f35b348015610a6757600080fd5b50610a70612585565b604051610a7d9190613e6e565b60405180910390f35b348015610a9257600080fd5b50610aad6004803603810190610aa8919061431b565b61258b565b005b348015610abb57600080fd5b50610ad66004803603810190610ad191906140e7565b6126ec565b005b348015610ae457600080fd5b50610aff6004803603810190610afa91906140e7565b6128b2565b005b60195481565b606060038054610b16906143f1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b42906143f1565b8015610b8f5780601f10610b6457610100808354040283529160200191610b8f565b820191906000526020600020905b815481529060010190602001808311610b7257829003601f168201915b5050505050905090565b6000610bad610ba6612b21565b8484612b29565b6001905092915050565b610bbf612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061446e565b60405180910390fd5b61271081610c5a610cd6565b610c6491906144bd565b610c6e919061452e565b6012819055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145601254604051610ca59190613e6e565b60405180910390a150565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601560009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d95612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e515782811015610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906145d1565b60405180910390fd5b610e5085610e48612b21565b858403612b29565b5b610e5c858585612cf2565b60019150509392505050565b610e70612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061446e565b60405180910390fd5b601560009054906101000a900460ff16151581151503610f54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4b90614663565b60405180910390fd5b80601560006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1601560009054906101000a900460ff16604051610fac9190614025565b60405180910390a150565b601860009054906101000a900460ff1681565b60006012905090565b6000611075610fe0612b21565b848460016000610fee612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110709190614683565b612b29565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360029054906101000a900460ff1681565b6110c0612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111469061446e565b60405180910390fd5b6103e861115a610fca565b600a61116691906147ea565b61116e610cd6565b611178919061452e565b611182919061452e565b83101580156111c357506103e8611197610fca565b600a6111a391906147ea565b6111ab610cd6565b6111b5919061452e565b6111bf919061452e565b8210155b611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906148a7565b60405180910390fd5b61120a610fca565b600a61121691906147ea565b8361122191906144bd565b60198190555061122f610fca565b600a61123b91906147ea565b8261124691906144bd565b601a819055506064611256610fca565b600a61126291906147ea565b61126a610cd6565b611274919061452e565b61127e919061452e565b8110156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790614939565b60405180910390fd5b6112c8610fca565b600a6112d491906147ea565b816112df91906144bd565b6016819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb59426016546040516113169190613e6e565b60405180910390a17f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601954601a54604051611353929190614959565b60405180910390a1505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b6113c4612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061446e565b60405180910390fd5b601860009054906101000a900460ff161515811515036114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906149f4565b60405180910390fd5b80601860006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601860009054906101000a900460ff166040516115009190614025565b60405180910390a150565b601a5481565b600c5481565b61151f612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a59061446e565b60405180910390fd5b83600a8190555082600c81905550600c54600a546115cc9190614683565b600e8190555081600b8190555080600d81905550600d54600b546115f09190614683565b600f81905550602d600f54600e546116089190614683565b1115611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090614a86565b60405180910390fd5b602d600f54600e5461165b9190614683565b111561169c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169390614a86565b60405180910390fd5b7fccd61cb5df2cb048d1a7af40a431d6f247af01b6cf048f7a3f2aa9d313e2bc50600a54600c546040516116d1929190614959565b60405180910390a17f12dd4f8337f0c236c7994706854cca8cd53921c0032cb0fba8cdb797e73f67c6600b54600d5460405161170e929190614959565b60405180910390a150505050565b601360019054906101000a900460ff1681565b60105481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611785612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b9061446e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73fbd5fd3f85e9f4c5e8b40eec9f8b8ab1caaa146b81565b61191b612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a19061446e565b60405180910390fd5b801515601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3390614b18565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1082604051611ad99190614025565b60405180910390a25050565b600a5481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b24906143f1565b80601f0160208091040260200160405190810160405280929190818152602001828054611b50906143f1565b8015611b9d5780601f10611b7257610100808354040283529160200191611b9d565b820191906000526020600020905b815481529060010190602001808311611b8057829003601f168201915b5050505050905090565b611baf612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c359061446e565b60405180910390fd5b601360029054906101000a900460ff1615611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590614b84565b60405180910390fd5b60011515841515148015611ca6575060011515831515145b8015611cb6575060011515821515145b8015611cc6575060011515811515145b15611d02576001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055505b50505050565b60008060016000611d17612b21565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb90614c16565b60405180910390fd5b611de8611ddf612b21565b85858403612b29565b600191505092915050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611e5d611e56612b21565b8484612cf2565b6001905092915050565b60165481565b611e75612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efb9061446e565b60405180910390fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b90614ca8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90614d3a565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120959190614206565b60405180910390a150565b6120a8612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e9061446e565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c090614dcc565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122669190614025565b60405180910390a25050565b61227a612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612309576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123009061446e565b60405180910390fd5b801515601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361239b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239290614b18565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c826040516124389190614025565b60405180910390a25050565b61244c612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d29061446e565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60125481565b612593612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126199061446e565b60405180910390fd5b601360029054906101000a900460ff1615612672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266990614b84565b60405180910390fd5b6001151584151514801561268a575060011515831515145b801561269a575060011515821515145b80156126aa575060011515811515145b156126e6576001601360026101000a81548160ff0219169083151502179055506001601360016101000a81548160ff0219169083151502179055505b50505050565b6126f4612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a9061446e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e990614e5e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6128ba612b21565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612949576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129409061446e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90614ef0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a1957612a14473373ffffffffffffffffffffffffffffffffffffffff1661359390919063ffffffff16565b612b1e565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612a599190614206565b602060405180830381865afa158015612a76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9a9190614f25565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612ad7929190614f52565b6020604051808303816000875af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a9190614f90565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8f9061502f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfe906150c1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ce59190613e6e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5890615153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc7906151e5565b60405180910390fd5b601360029054906101000a900460ff1680612e345750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612e885750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ebe90615251565b60405180910390fd5b60008103612ee057612edb83836000613687565b61358e565b601860009054906101000a900460ff161561313657600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612f9e5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612ff45750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561304a5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561313557600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130ee576019548111156130e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e0906152e3565b60405180910390fd5b613134565b601a54811115613133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312a906152e3565b60405180910390fd5b5b5b5b600061314130611735565b9050600060125482101590508080156131675750601360009054906101000a900460ff16155b80156131c05750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156131db57506000600f54600e546131d99190614683565b115b80156131f35750601360019054906101000a900460ff165b1561323a576001601360006101000a81548160ff02191690831515021790555061321e601254613906565b6000601360006101000a81548160ff0219169083151502179055505b6000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132dd5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132f45750601360009054906101000a900460ff165b1561330257600090506133c7565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361336157600e5490506133c6565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036133c057600f5490506133c5565b600090505b5b5b6000811115613407576000606482866133e091906144bd565b6133ea919061452e565b905080856133f89190615303565b9450613405873083613687565b505b601560009054906101000a900460ff161561357f57601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156134c05750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561351a5750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561357e57600061352a86611735565b9050601654858261353b9190614683565b111561357c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613573906153a9565b60405180910390fd5b505b5b61358a868686613687565b5050505b505050565b804710156135d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135cd90615415565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516135fc90615466565b60006040518083038185875af1925050503d8060008114613639576040519150601f19603f3d011682016040523d82523d6000602084013e61363e565b606091505b5050905080613682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613679906154ed565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ed90615153565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613765576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375c906151e5565b60405180910390fd5b613770838383613e4b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ed9061557f565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138899190614683565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138ed9190613e6e565b60405180910390a3613900848484613e50565b50505050565b60004790506000600267ffffffffffffffff8111156139285761392761559f565b5b6040519080825280602002602001820160405280156139565781602001602082028036833780820191505090505b509050308160008151811061396e5761396d6155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a399190615612565b81600181518110613a4d57613a4c6155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401613aeb959493929190615738565b600060405180830381600087803b158015613b0557600080fd5b505af1158015613b19573d6000803e3d6000fd5b5050505060008247613b2b9190615303565b90506000600f54600e54613b3f9190614683565b600d54600c54613b4f9190614683565b83613b5a91906144bd565b613b64919061452e565b905060008183613b749190615303565b90506000821115613bcb57613bca82601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661359390919063ffffffff16565b5b6000811115613e0a576000600267ffffffffffffffff811115613bf157613bf061559f565b5b604051908082528060200260200182016040528015613c1f5781602001602082028036833780820191505090505b509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cb39190615612565b81600081518110613cc757613cc66155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fbd5fd3f85e9f4c5e8b40eec9f8b8ab1caaa146b81600181518110613d2a57613d296155ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958360008461dead61012c42613db79190614683565b6040518663ffffffff1660e01b8152600401613dd69493929190615792565b6000604051808303818588803b158015613def57600080fd5b505af1158015613e03573d6000803e3d6000fd5b5050505050505b7f94b0d5a5b2879507b25bbfd8a3bfed636aeb5ef2386d2c5368585e22e60d3d188684604051613e3b929190614959565b60405180910390a1505050505050565b505050565b505050565b6000819050919050565b613e6881613e55565b82525050565b6000602082019050613e836000830184613e5f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ec3578082015181840152602081019050613ea8565b60008484015250505050565b6000601f19601f8301169050919050565b6000613eeb82613e89565b613ef58185613e94565b9350613f05818560208601613ea5565b613f0e81613ecf565b840191505092915050565b60006020820190508181036000830152613f338184613ee0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f6b82613f40565b9050919050565b613f7b81613f60565b8114613f8657600080fd5b50565b600081359050613f9881613f72565b92915050565b613fa781613e55565b8114613fb257600080fd5b50565b600081359050613fc481613f9e565b92915050565b60008060408385031215613fe157613fe0613f3b565b5b6000613fef85828601613f89565b925050602061400085828601613fb5565b9150509250929050565b60008115159050919050565b61401f8161400a565b82525050565b600060208201905061403a6000830184614016565b92915050565b60006020828403121561405657614055613f3b565b5b600061406484828501613fb5565b91505092915050565b6000819050919050565b600061409261408d61408884613f40565b61406d565b613f40565b9050919050565b60006140a482614077565b9050919050565b60006140b682614099565b9050919050565b6140c6816140ab565b82525050565b60006020820190506140e160008301846140bd565b92915050565b6000602082840312156140fd576140fc613f3b565b5b600061410b84828501613f89565b91505092915050565b60008060006060848603121561412d5761412c613f3b565b5b600061413b86828701613f89565b935050602061414c86828701613f89565b925050604061415d86828701613fb5565b9150509250925092565b6141708161400a565b811461417b57600080fd5b50565b60008135905061418d81614167565b92915050565b6000602082840312156141a9576141a8613f3b565b5b60006141b78482850161417e565b91505092915050565b600060ff82169050919050565b6141d6816141c0565b82525050565b60006020820190506141f160008301846141cd565b92915050565b61420081613f60565b82525050565b600060208201905061421b60008301846141f7565b92915050565b60008060006060848603121561423a57614239613f3b565b5b600061424886828701613fb5565b935050602061425986828701613fb5565b925050604061426a86828701613fb5565b9150509250925092565b6000806000806080858703121561428e5761428d613f3b565b5b600061429c87828801613fb5565b94505060206142ad87828801613fb5565b93505060406142be87828801613fb5565b92505060606142cf87828801613fb5565b91505092959194509250565b600080604083850312156142f2576142f1613f3b565b5b600061430085828601613f89565b92505060206143118582860161417e565b9150509250929050565b6000806000806080858703121561433557614334613f3b565b5b60006143438782880161417e565b94505060206143548782880161417e565b93505060406143658782880161417e565b92505060606143768782880161417e565b91505092959194509250565b6000806040838503121561439957614398613f3b565b5b60006143a785828601613f89565b92505060206143b885828601613f89565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061440957607f821691505b60208210810361441c5761441b6143c2565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614458602083613e94565b915061446382614422565b602082019050919050565b600060208201905081810360008301526144878161444b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006144c882613e55565b91506144d383613e55565b92508282026144e181613e55565b915082820484148315176144f8576144f761448e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061453982613e55565b915061454483613e55565b925082614554576145536144ff565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006145bb602883613e94565b91506145c68261455f565b604082019050919050565b600060208201905081810360008301526145ea816145ae565b9050919050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b600061464d602d83613e94565b9150614658826145f1565b604082019050919050565b6000602082019050818103600083015261467c81614640565b9050919050565b600061468e82613e55565b915061469983613e55565b92508282019050808211156146b1576146b061448e565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111561470e578086048111156146ea576146e961448e565b5b60018516156146f95780820291505b8081029050614707856146b7565b94506146ce565b94509492505050565b60008261472757600190506147e3565b8161473557600090506147e3565b816001811461474b576002811461475557614784565b60019150506147e3565b60ff8411156147675761476661448e565b5b8360020a91508482111561477e5761477d61448e565b5b506147e3565b5060208310610133831016604e8410600b84101617156147b95782820a9050838111156147b4576147b361448e565b5b6147e3565b6147c684848460016146c4565b925090508184048111156147dd576147dc61448e565b5b81810290505b9392505050565b60006147f582613e55565b9150614800836141c0565b925061482d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614717565b905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b6000614891603f83613e94565b915061489c82614835565b604082019050919050565b600060208201905081810360008301526148c081614884565b9050919050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b6000614923602d83613e94565b915061492e826148c7565b604082019050919050565b6000602082019050818103600083015261495281614916565b9050919050565b600060408201905061496e6000830185613e5f565b61497b6020830184613e5f565b9392505050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006149de603283613e94565b91506149e982614982565b604082019050919050565b60006020820190508181036000830152614a0d816149d1565b9050919050565b7f546f74616c20466565732063616e6e6f742065786365656420746865206d617860008201527f696d756d00000000000000000000000000000000000000000000000000000000602082015250565b6000614a70602483613e94565b9150614a7b82614a14565b604082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b6000614b02602483613e94565b9150614b0d82614aa6565b604082019050919050565b60006020820190508181036000830152614b3181614af5565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000614b6e601883613e94565b9150614b7982614b38565b602082019050919050565b60006020820190508181036000830152614b9d81614b61565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c00602583613e94565b9150614c0b82614ba4565b604082019050919050565b60006020820190508181036000830152614c2f81614bf3565b9050919050565b7f4d61726b6574696e672077616c6c657420697320616c7265616479207468617460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b6000614c92602883613e94565b9150614c9d82614c36565b604082019050919050565b60006020820190508181036000830152614cc181614c85565b9050919050565b7f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b6000614d24602b83613e94565b9150614d2f82614cc8565b604082019050919050565b60006020820190508181036000830152614d5381614d17565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614db6602a83613e94565b9150614dc182614d5a565b604082019050919050565b60006020820190508181036000830152614de581614da9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e48602683613e94565b9150614e5382614dec565b604082019050919050565b60006020820190508181036000830152614e7781614e3b565b9050919050565b7f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008201527f6c616e6365206f6620697473206f776e20746f6b656e73000000000000000000602082015250565b6000614eda603783613e94565b9150614ee582614e7e565b604082019050919050565b60006020820190508181036000830152614f0981614ecd565b9050919050565b600081519050614f1f81613f9e565b92915050565b600060208284031215614f3b57614f3a613f3b565b5b6000614f4984828501614f10565b91505092915050565b6000604082019050614f6760008301856141f7565b614f746020830184613e5f565b9392505050565b600081519050614f8a81614167565b92915050565b600060208284031215614fa657614fa5613f3b565b5b6000614fb484828501614f7b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615019602483613e94565b915061502482614fbd565b604082019050919050565b600060208201905081810360008301526150488161500c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150ab602283613e94565b91506150b68261504f565b604082019050919050565b600060208201905081810360008301526150da8161509e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061513d602583613e94565b9150615148826150e1565b604082019050919050565b6000602082019050818103600083015261516c81615130565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151cf602383613e94565b91506151da82615173565b604082019050919050565b600060208201905081810360008301526151fe816151c2565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b600061523b601883613e94565b915061524682615205565b602082019050919050565b6000602082019050818103600083015261526a8161522e565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b60006152cd603b83613e94565b91506152d882615271565b604082019050919050565b600060208201905081810360008301526152fc816152c0565b9050919050565b600061530e82613e55565b915061531983613e55565b92508282039050818111156153315761533061448e565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000615393603083613e94565b915061539e82615337565b604082019050919050565b600060208201905081810360008301526153c281615386565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006153ff601d83613e94565b915061540a826153c9565b602082019050919050565b6000602082019050818103600083015261542e816153f2565b9050919050565b600081905092915050565b50565b6000615450600083615435565b915061545b82615440565b600082019050919050565b600061547182615443565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006154d7603a83613e94565b91506154e28261547b565b604082019050919050565b60006020820190508181036000830152615506816154ca565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615569602683613e94565b91506155748261550d565b604082019050919050565b600060208201905081810360008301526155988161555c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061560c81613f72565b92915050565b60006020828403121561562857615627613f3b565b5b6000615636848285016155fd565b91505092915050565b6000819050919050565b600061566461565f61565a8461563f565b61406d565b613e55565b9050919050565b61567481615649565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156af81613f60565b82525050565b60006156c183836156a6565b60208301905092915050565b6000602082019050919050565b60006156e58261567a565b6156ef8185615685565b93506156fa83615696565b8060005b8381101561572b57815161571288826156b5565b975061571d836156cd565b9250506001810190506156fe565b5085935050505092915050565b600060a08201905061574d6000830188613e5f565b61575a602083018761566b565b818103604083015261576c81866156da565b905061577b60608301856141f7565b6157886080830184613e5f565b9695505050505050565b60006080820190506157a7600083018761566b565b81810360208301526157b981866156da565b90506157c860408301856141f7565b6157d56060830184613e5f565b9594505050505056fea264697066735822122018fd54a5d92eda14b936e7b1cbaff4e21206ee661ad1b1e90860c4ffd6d59b4e64736f6c63430008110033

Deployed Bytecode Sourcemap

19767:14990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32597:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15052:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15966:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29734:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19853:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15373:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34613:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31418:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16143:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31708:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32548:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15272:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16724:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19901:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25940:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33281:990;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24525:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20041:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32962:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32643:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20084:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24658:880;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20507:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20246:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15489:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14195:148;;;;;;;;;;;;;:::i;:::-;;20296:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20333:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34279:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20001:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13981:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15160:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25975:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16947:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32328:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15624:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31461:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25553:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24227:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32002:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29614:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20124:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15807:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20433:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26380:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14351:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23754:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32597:39;;;;:::o;15052:100::-;15106:13;15139:5;15132:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15052:100;:::o;15966:169::-;16049:4;16066:39;16075:12;:10;:12::i;:::-;16089:7;16098:6;16066:8;:39::i;:::-;16123:4;16116:11;;15966:169;;;;:::o;29734:242::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29876:5:::1;29863:9;29847:13;:11;:13::i;:::-;:25;;;;:::i;:::-;29846:35;;;;:::i;:::-;29825:18;:56;;;;29923:45;29949:18;;29923:45;;;;;;:::i;:::-;;;;;;;;29734:242:::0;:::o;19853:41::-;;;;;;;;;;;;;:::o;15373:108::-;15434:7;15461:12;;15454:19;;15373:108;:::o;34613:141::-;34688:4;34712:25;:34;34738:7;34712:34;;;;;;;;;;;;;;;;;;;;;;;;;34705:41;;34613:141;;;:::o;31418:36::-;;;;;;;;;;;;;:::o;16143:573::-;16283:4;16300:24;16327:11;:19;16339:6;16327:19;;;;;;;;;;;;;;;:33;16347:12;:10;:12::i;:::-;16327:33;;;;;;;;;;;;;;;;16300:60;;16395:17;16375:16;:37;16371:265;;16457:6;16437:16;:26;;16429:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16552:57;16561:6;16569:12;:10;:12::i;:::-;16602:6;16583:16;:25;16552:8;:57::i;:::-;16371:265;16648:36;16658:6;16666:9;16677:6;16648:9;:36::i;:::-;16704:4;16697:11;;;16143:573;;;;;:::o;31708:280::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31802:21:::1;;;;;;;;;;;31792:31;;:6;:31;;::::0;31784:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31907:6;31883:21;;:30;;;;;;;;;;;;;;;;;;31931:49;31958:21;;;;;;;;;;;31931:49;;;;;;:::i;:::-;;;;;;;;31708:280:::0;:::o;32548:42::-;;;;;;;;;;;;;:::o;15272:93::-;15330:5;15355:2;15348:9;;15272:93;:::o;16724:215::-;16812:4;16829:80;16838:12;:10;:12::i;:::-;16852:7;16898:10;16861:11;:25;16873:12;:10;:12::i;:::-;16861:25;;;;;;;;;;;;;;;:34;16887:7;16861:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16829:8;:80::i;:::-;16927:4;16920:11;;16724:215;;;;:::o;19901:29::-;;;;;;;;;;;;;:::o;25940:26::-;;;;;;;;;;;;;:::o;33281:990::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33538:5:::1;33523:10;:8;:10::i;:::-;33517:2;:16;;;;:::i;:::-;33500:13;:11;:13::i;:::-;:34;;;;:::i;:::-;33499:44;;;;:::i;:::-;33470:24;:73;;:164;;;;;33629:5;33614:10;:8;:10::i;:::-;33608:2;:16;;;;:::i;:::-;33591:13;:11;:13::i;:::-;:34;;;;:::i;:::-;33590:44;;;;:::i;:::-;33561:25;:73;;33470:164;33448:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;33800:10;:8;:10::i;:::-;33794:2;:16;;;;:::i;:::-;33765:24;:46;;;;:::i;:::-;33738:23;:73;;;;33884:10;:8;:10::i;:::-;33878:2;:16;;;;:::i;:::-;33849:25;:46;;;;:::i;:::-;33822:24;:73;;;;33983:3;33968:10;:8;:10::i;:::-;33962:2;:16;;;;:::i;:::-;33945:13;:11;:13::i;:::-;:34;;;;:::i;:::-;33944:42;;;;:::i;:::-;33924:16;:62;;33916:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;34091:10;:8;:10::i;:::-;34085:2;:16;;;;:::i;:::-;34065;:37;;;;:::i;:::-;34047:15;:55;;;;34120:44;34148:15;;34120:44;;;;;;:::i;:::-;;;;;;;;34180:83;34213:23;;34238:24;;34180:83;;;;;;;:::i;:::-;;;;;;;;33281:990:::0;;;:::o;24525:125::-;24590:4;24614:19;:28;24634:7;24614:28;;;;;;;;;;;;;;;;;;;;;;;;;24607:35;;24525:125;;;:::o;20041:34::-;;;;:::o;32962:311::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33061:26:::1;;;;;;;;;;;33051:36;;:6;:36;;::::0;33043:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;33182:6;33153:26;;:35;;;;;;;;;;;;;;;;;;33206:59;33238:26;;;;;;;;;;;33206:59;;;;;;:::i;:::-;;;;;;;;32962:311:::0;:::o;32643:40::-;;;;:::o;20084:33::-;;;;:::o;24658:880::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24862:18:::1;24842:17;:38;;;;24911:18;24891:17;:38;;;;24980:17;;24960;;:37;;;;:::i;:::-;24940:15;:57;;;;25050:19;25029:18;:40;;;;25101:19;25080:18;:40;;;;25173:18;;25152;;:39;;;;:::i;:::-;25131:16;:60;;;;25250:2;25230:16;;25212:15;;:34;;;;:::i;:::-;:40;;25204:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;25350:2;25330:16;;25312:15;;:34;;;;:::i;:::-;:40;;25304:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;25409:51;25423:17;;25442;;25409:51;;;;;;;:::i;:::-;;;;;;;;25476:54;25491:18;;25511;;25476:54;;;;;;;:::i;:::-;;;;;;;;24658:880:::0;;;;:::o;20507:26::-;;;;;;;;;;;;;:::o;20246:41::-;;;;:::o;15489:127::-;15563:7;15590:9;:18;15600:7;15590:18;;;;;;;;;;;;;;;;15583:25;;15489:127;;;:::o;14195:148::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14302:1:::1;14265:40;;14286:6;;;;;;;;;;;14265:40;;;;;;;;;;;;14333:1;14316:6;;:19;;;;;;;;;;;;;;;;;;14195:148::o:0;20296:30::-;;;;;;;;;;;;;:::o;20333:91::-;20382:42;20333:91;:::o;34279:326::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34427:7:::1;34389:45;;:25;:34;34415:7;34389:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;34380:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;34523:7;34486:25;:34;34512:7;34486:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;34580:7;34548:49;;;34589:7;34548:49;;;;;;:::i;:::-;;;;;;;;34279:326:::0;;:::o;20001:33::-;;;;:::o;13981:79::-;14019:7;14046:6;;;;;;;;;;;14039:13;;13981:79;:::o;15160:104::-;15216:13;15249:7;15242:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:104;:::o;25975:395::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26079:14:::1;;;;;;;;;;;26078:15;26070:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26168:4;26160:12;;:4;:12;;;:39;;;;;26195:4;26189:10;;:2;:10;;;26160:39;:66;;;;;26222:4;26216:10;;:2;:10;;;26160:66;:98;;;;;26254:4;26243:15;;:7;:15;;;26160:98;26143:211;;;26303:4;26286:14;;:21;;;;;;;;;;;;;;;;;;26336:4;26322:11;;:18;;;;;;;;;;;;;;;;;;26143:211;25975:395:::0;;;;:::o;16947:413::-;17040:4;17057:24;17084:11;:25;17096:12;:10;:12::i;:::-;17084:25;;;;;;;;;;;;;;;:34;17110:7;17084:34;;;;;;;;;;;;;;;;17057:61;;17157:15;17137:16;:35;;17129:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17250:67;17259:12;:10;:12::i;:::-;17273:7;17301:15;17282:16;:34;17250:8;:67::i;:::-;17348:4;17341:11;;;16947:413;;;;:::o;32328:145::-;32403:4;32427:29;:38;32457:7;32427:38;;;;;;;;;;;;;;;;;;;;;;;;;32420:45;;32328:145;;;:::o;15624:175::-;15710:4;15727:42;15737:12;:10;:12::i;:::-;15751:9;15762:6;15727:9;:42::i;:::-;15787:4;15780:11;;15624:175;;;;:::o;31461:30::-;;;;:::o;25553:379::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25667:15:::1;;;;;;;;;;;25647:35;;:16;:35;;::::0;25639:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25773:1;25745:30;;:16;:30;;::::0;25737:85:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25851:16;25833:15;;:34;;;;;;;;;;;;;;;;;;25885:39;25908:15;;;;;;;;;;;25885:39;;;;;;:::i;:::-;;;;;;;;25553:379:::0;:::o;24227:290::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24353:8:::1;24321:40;;:19;:28;24341:7;24321:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;24313:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24449:8;24418:19;:28;24438:7;24418:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24491:7;24475:34;;;24500:8;24475:34;;;;;;:::i;:::-;;;;;;;;24227:290:::0;;:::o;32002:318::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32144:7:::1;32102:49;;:29;:38;32132:7;32102:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;32093:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;32243:7;32202:29;:38;32232:7;32202:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;32295:7;32268:44;;;32304:7;32268:44;;;;;;:::i;:::-;;;;;;;;32002:318:::0;;:::o;29614:112::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29710:8:::1;29696:11;;:22;;;;;;;;;;;;;;;;;;29614:112:::0;:::o;20124:34::-;;;;:::o;15807:151::-;15896:7;15923:11;:18;15935:5;15923:18;;;;;;;;;;;;;;;:27;15942:7;15923:27;;;;;;;;;;;;;;;;15916:34;;15807:151;;;;:::o;20433:34::-;;;;:::o;26380:397::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26486:14:::1;;;;;;;;;;;26485:15;26477:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;26575:4;26567:12;;:4;:12;;;:39;;;;;26602:4;26596:10;;:2;:10;;;26567:39;:66;;;;;26629:4;26623:10;;:2;:10;;;26567:66;:98;;;;;26661:4;26650:15;;:7;:15;;;26567:98;26550:211;;;26710:4;26693:14;;:21;;;;;;;;;;;;;;;;;;26743:4;26729:11;;:18;;;;;;;;;;;;;;;;;;26550:211;26380:397:::0;;;;:::o;14351:244::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14460:1:::1;14440:22;;:8;:22;;::::0;14432:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14550:8;14521:38;;14542:6;;;;;;;;;;;14521:38;;;;;;;;;;;;14579:8;14570:6;;:17;;;;;;;;;;;;;;;;;;14351:244:::0;:::o;23754:465::-;14118:12;:10;:12::i;:::-;14108:22;;:6;;;;;;;;;;;:22;;;14100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23850:4:::1;23833:22;;:5;:22;;::::0;23825:90:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23947:3;23930:21;;:5;:21;;::::0;23926:127:::1;;23968:52;23998:21;23976:10;23968:29;;;;:52;;;;:::i;:::-;24035:7;;23926:127;24063:17;24090:5;24063:33;;24107:15;24125:10;:20;;;24154:4;24125:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24107:53;;24171:10;:19;;;24191:10;24203:7;24171:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23814:405;;14178:1;23754:465:::0;:::o;13304:98::-;13357:7;13384:10;13377:17;;13304:98;:::o;19115:380::-;19268:1;19251:19;;:5;:19;;;19243:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19349:1;19330:21;;:7;:21;;;19322:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19433:6;19403:11;:18;19415:5;19403:18;;;;;;;;;;;;;;;:27;19422:7;19403:27;;;;;;;;;;;;;;;:36;;;;19471:7;19455:32;;19464:5;19455:32;;;19480:6;19455:32;;;;;;:::i;:::-;;;;;;;;19115:380;;;:::o;26789:2758::-;26902:1;26886:18;;:4;:18;;;26878:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26979:1;26965:16;;:2;:16;;;26957:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27040:14;;;;;;;;;;;:43;;;;27058:19;:25;27078:4;27058:25;;;;;;;;;;;;;;;;;;;;;;;;;27040:43;:70;;;;27087:19;:23;27107:2;27087:23;;;;;;;;;;;;;;;;;;;;;;;;;27040:70;27032:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;27173:1;27163:6;:11;27159:93;;27191:28;27207:4;27213:2;27217:1;27191:15;:28::i;:::-;27234:7;;27159:93;27268:26;;;;;;;;;;;27264:752;;;27334:13;;;;;;;;;;;27326:21;;:4;:21;;;:44;;;;27357:13;;;;;;;;;;;27351:19;;:2;:19;;;27326:44;27325:99;;;;;27393:25;:31;27419:4;27393:31;;;;;;;;;;;;;;;;;;;;;;;;;27392:32;27325:99;:151;;;;;27447:25;:29;27473:2;27447:29;;;;;;;;;;;;;;;;;;;;;;;;;27446:30;27325:151;27321:684;;;27523:13;;;;;;;;;;;27515:21;;:4;:21;;;27511:479;;27605:23;;27595:6;:33;;27561:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;27511:479;;;27834:24;;27824:6;:34;;27790:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;27511:479;27321:684;27264:752;28022:28;28053:24;28071:4;28053:9;:24::i;:::-;28022:55;;28090:12;28129:18;;28105:20;:42;;28090:57;;28164:7;:33;;;;;28189:8;;;;;;;;;;;28188:9;28164:33;:69;;;;;28220:13;;;;;;;;;;;28214:19;;:2;:19;;;28164:69;:124;;;;;28287:1;28268:16;;28250:15;;:34;;;;:::i;:::-;:38;28164:124;:152;;;;;28305:11;;;;;;;;;;;28164:152;28160:294;;;28354:4;28343:8;;:15;;;;;;;;;;;;;;;;;;28375:34;28390:18;;28375:14;:34::i;:::-;28437:5;28426:8;;:16;;;;;;;;;;;;;;;;;;28160:294;28466:18;28499:19;:25;28519:4;28499:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28528:19;:23;28548:2;28528:23;;;;;;;;;;;;;;;;;;;;;;;;;28499:52;:64;;;;28555:8;;;;;;;;;;;28499:64;28495:333;;;28593:1;28580:14;;28495:333;;;28624:13;;;;;;;;;;;28616:21;;:4;:21;;;28612:216;;28667:15;;28654:28;;28612:216;;;28710:13;;;;;;;;;;;28704:19;;:2;:19;;;28700:128;;28753:16;;28740:29;;28700:128;;;28815:1;28802:14;;28700:128;28612:216;28495:333;28857:1;28844:10;:14;28840:183;;;28875:12;28914:3;28900:10;28891:6;:19;;;;:::i;:::-;28890:27;;;;:::i;:::-;28875:42;;28950:4;28941:6;:13;;;;:::i;:::-;28932:22;;28969:42;28985:4;28999;29006;28969:15;:42::i;:::-;28860:163;28840:183;29039:21;;;;;;;;;;;29035:459;;;29092:29;:35;29122:4;29092:35;;;;;;;;;;;;;;;;;;;;;;;;;29091:36;:92;;;;;29150:29;:33;29180:2;29150:33;;;;;;;;;;;;;;;;;;;;;;;;;29149:34;29091:92;:132;;;;;29210:13;;;;;;;;;;;29204:19;;:2;:19;;;;29091:132;29087:396;;;29258:15;29277:13;29287:2;29277:9;:13::i;:::-;29258:32;;29359:15;;29349:6;29339:7;:16;;;;:::i;:::-;:35;;29309:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;29239:244;29087:396;29035:459;29506:33;29522:4;29528:2;29532:6;29506:15;:33::i;:::-;26867:2680;;;26789:2758;;;;:::o;9163:317::-;9278:6;9253:21;:31;;9245:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9332:12;9350:9;:14;;9372:6;9350:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9331:52;;;9402:7;9394:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9234:246;9163:317;;:::o;17368:733::-;17526:1;17508:20;;:6;:20;;;17500:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17610:1;17589:23;;:9;:23;;;17581:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17665:47;17686:6;17694:9;17705:6;17665:20;:47::i;:::-;17725:21;17749:9;:17;17759:6;17749:17;;;;;;;;;;;;;;;;17725:41;;17802:6;17785:13;:23;;17777:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17923:6;17907:13;:22;17887:9;:17;17897:6;17887:17;;;;;;;;;;;;;;;:42;;;;17975:6;17951:9;:20;17961:9;17951:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;18016:9;17999:35;;18008:6;17999:35;;;18027:6;17999:35;;;;;;:::i;:::-;;;;;;;;18047:46;18067:6;18075:9;18086:6;18047:19;:46::i;:::-;17489:612;17368:733;;;:::o;29984:1357::-;30048:22;30073:21;30048:46;;30107:21;30145:1;30131:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30107:40;;30176:4;30158;30163:1;30158:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30202:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30192:4;30197:1;30192:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30237:15;;;;;;;;;;;:66;;;30318:11;30344:1;30360:4;30387;30407:15;30237:186;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30436:18;30481:14;30457:21;:38;;;;:::i;:::-;30436:59;;30506:24;30608:16;;30590:15;;:34;;;;:::i;:::-;30567:18;;30547:17;;:38;;;;:::i;:::-;30533:10;:53;;;;:::i;:::-;:92;;;;:::i;:::-;30506:119;;30636:20;30672:16;30659:10;:29;;;;:::i;:::-;30636:52;;30724:1;30705:16;:20;30701:104;;;30741:52;30776:16;30749:15;;;;;;;;;;;30741:34;;;;:52;;;;:::i;:::-;30701:104;30836:1;30821:12;:16;30817:460;;;30853:24;30894:1;30880:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30853:43;;30924:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30911:7;30919:1;30911:10;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;30982:42;30961:7;30969:1;30961:10;;;;;;;;:::i;:::-;;;;;;;:64;;;;;;;;;;;31042:15;;;;;;;;;;;:66;;;31116:12;31149:1;31169:7;31203:6;31247:3;31229:15;:21;;;;:::i;:::-;31042:223;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30838:439;30817:460;31294:39;31309:11;31322:10;31294:39;;;;;;;:::i;:::-;;;;;;;;30037:1304;;;;;29984:1357;:::o;19503:125::-;;;;:::o;19636:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:60::-;4161:3;4182:5;4175:12;;4133:60;;;:::o;4199:142::-;4249:9;4282:53;4300:34;4309:24;4327:5;4309:24;:::i;:::-;4300:34;:::i;:::-;4282:53;:::i;:::-;4269:66;;4199:142;;;:::o;4347:126::-;4397:9;4430:37;4461:5;4430:37;:::i;:::-;4417:50;;4347:126;;;:::o;4479:152::-;4555:9;4588:37;4619:5;4588:37;:::i;:::-;4575:50;;4479:152;;;:::o;4637:183::-;4750:63;4807:5;4750:63;:::i;:::-;4745:3;4738:76;4637:183;;:::o;4826:274::-;4945:4;4983:2;4972:9;4968:18;4960:26;;4996:97;5090:1;5079:9;5075:17;5066:6;4996:97;:::i;:::-;4826:274;;;;:::o;5106:329::-;5165:6;5214:2;5202:9;5193:7;5189:23;5185:32;5182:119;;;5220:79;;:::i;:::-;5182:119;5340:1;5365:53;5410:7;5401:6;5390:9;5386:22;5365:53;:::i;:::-;5355:63;;5311:117;5106:329;;;;:::o;5441:619::-;5518:6;5526;5534;5583:2;5571:9;5562:7;5558:23;5554:32;5551:119;;;5589:79;;:::i;:::-;5551:119;5709:1;5734:53;5779:7;5770:6;5759:9;5755:22;5734:53;:::i;:::-;5724:63;;5680:117;5836:2;5862:53;5907:7;5898:6;5887:9;5883:22;5862:53;:::i;:::-;5852:63;;5807:118;5964:2;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5935:118;5441:619;;;;;:::o;6066:116::-;6136:21;6151:5;6136:21;:::i;:::-;6129:5;6126:32;6116:60;;6172:1;6169;6162:12;6116:60;6066:116;:::o;6188:133::-;6231:5;6269:6;6256:20;6247:29;;6285:30;6309:5;6285:30;:::i;:::-;6188:133;;;;:::o;6327:323::-;6383:6;6432:2;6420:9;6411:7;6407:23;6403:32;6400:119;;;6438:79;;:::i;:::-;6400:119;6558:1;6583:50;6625:7;6616:6;6605:9;6601:22;6583:50;:::i;:::-;6573:60;;6529:114;6327:323;;;;:::o;6656:86::-;6691:7;6731:4;6724:5;6720:16;6709:27;;6656:86;;;:::o;6748:112::-;6831:22;6847:5;6831:22;:::i;:::-;6826:3;6819:35;6748:112;;:::o;6866:214::-;6955:4;6993:2;6982:9;6978:18;6970:26;;7006:67;7070:1;7059:9;7055:17;7046:6;7006:67;:::i;:::-;6866:214;;;;:::o;7086:118::-;7173:24;7191:5;7173:24;:::i;:::-;7168:3;7161:37;7086:118;;:::o;7210:222::-;7303:4;7341:2;7330:9;7326:18;7318:26;;7354:71;7422:1;7411:9;7407:17;7398:6;7354:71;:::i;:::-;7210:222;;;;:::o;7438:619::-;7515:6;7523;7531;7580:2;7568:9;7559:7;7555:23;7551:32;7548:119;;;7586:79;;:::i;:::-;7548:119;7706:1;7731:53;7776:7;7767:6;7756:9;7752:22;7731:53;:::i;:::-;7721:63;;7677:117;7833:2;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7804:118;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7438:619;;;;;:::o;8063:765::-;8149:6;8157;8165;8173;8222:3;8210:9;8201:7;8197:23;8193:33;8190:120;;;8229:79;;:::i;:::-;8190:120;8349:1;8374:53;8419:7;8410:6;8399:9;8395:22;8374:53;:::i;:::-;8364:63;;8320:117;8476:2;8502:53;8547:7;8538:6;8527:9;8523:22;8502:53;:::i;:::-;8492:63;;8447:118;8604:2;8630:53;8675:7;8666:6;8655:9;8651:22;8630:53;:::i;:::-;8620:63;;8575:118;8732:2;8758:53;8803:7;8794:6;8783:9;8779:22;8758:53;:::i;:::-;8748:63;;8703:118;8063:765;;;;;;;:::o;8834:468::-;8899:6;8907;8956:2;8944:9;8935:7;8931:23;8927:32;8924:119;;;8962:79;;:::i;:::-;8924:119;9082:1;9107:53;9152:7;9143:6;9132:9;9128:22;9107:53;:::i;:::-;9097:63;;9053:117;9209:2;9235:50;9277:7;9268:6;9257:9;9253:22;9235:50;:::i;:::-;9225:60;;9180:115;8834:468;;;;;:::o;9308:741::-;9382:6;9390;9398;9406;9455:3;9443:9;9434:7;9430:23;9426:33;9423:120;;;9462:79;;:::i;:::-;9423:120;9582:1;9607:50;9649:7;9640:6;9629:9;9625:22;9607:50;:::i;:::-;9597:60;;9553:114;9706:2;9732:50;9774:7;9765:6;9754:9;9750:22;9732:50;:::i;:::-;9722:60;;9677:115;9831:2;9857:50;9899:7;9890:6;9879:9;9875:22;9857:50;:::i;:::-;9847:60;;9802:115;9956:2;9982:50;10024:7;10015:6;10004:9;10000:22;9982:50;:::i;:::-;9972:60;;9927:115;9308:741;;;;;;;:::o;10055:474::-;10123:6;10131;10180:2;10168:9;10159:7;10155:23;10151:32;10148:119;;;10186:79;;:::i;:::-;10148:119;10306:1;10331:53;10376:7;10367:6;10356:9;10352:22;10331:53;:::i;:::-;10321:63;;10277:117;10433:2;10459:53;10504:7;10495:6;10484:9;10480:22;10459:53;:::i;:::-;10449:63;;10404:118;10055:474;;;;;:::o;10535:180::-;10583:77;10580:1;10573:88;10680:4;10677:1;10670:15;10704:4;10701:1;10694:15;10721:320;10765:6;10802:1;10796:4;10792:12;10782:22;;10849:1;10843:4;10839:12;10870:18;10860:81;;10926:4;10918:6;10914:17;10904:27;;10860:81;10988:2;10980:6;10977:14;10957:18;10954:38;10951:84;;11007:18;;:::i;:::-;10951:84;10772:269;10721:320;;;:::o;11047:182::-;11187:34;11183:1;11175:6;11171:14;11164:58;11047:182;:::o;11235:366::-;11377:3;11398:67;11462:2;11457:3;11398:67;:::i;:::-;11391:74;;11474:93;11563:3;11474:93;:::i;:::-;11592:2;11587:3;11583:12;11576:19;;11235:366;;;:::o;11607:419::-;11773:4;11811:2;11800:9;11796:18;11788:26;;11860:9;11854:4;11850:20;11846:1;11835:9;11831:17;11824:47;11888:131;12014:4;11888:131;:::i;:::-;11880:139;;11607:419;;;:::o;12032:180::-;12080:77;12077:1;12070:88;12177:4;12174:1;12167:15;12201:4;12198:1;12191:15;12218:410;12258:7;12281:20;12299:1;12281:20;:::i;:::-;12276:25;;12315:20;12333:1;12315:20;:::i;:::-;12310:25;;12370:1;12367;12363:9;12392:30;12410:11;12392:30;:::i;:::-;12381:41;;12571:1;12562:7;12558:15;12555:1;12552:22;12532:1;12525:9;12505:83;12482:139;;12601:18;;:::i;:::-;12482:139;12266:362;12218:410;;;;:::o;12634:180::-;12682:77;12679:1;12672:88;12779:4;12776:1;12769:15;12803:4;12800:1;12793:15;12820:185;12860:1;12877:20;12895:1;12877:20;:::i;:::-;12872:25;;12911:20;12929:1;12911:20;:::i;:::-;12906:25;;12950:1;12940:35;;12955:18;;:::i;:::-;12940:35;12997:1;12994;12990:9;12985:14;;12820:185;;;;:::o;13011:227::-;13151:34;13147:1;13139:6;13135:14;13128:58;13220:10;13215:2;13207:6;13203:15;13196:35;13011:227;:::o;13244:366::-;13386:3;13407:67;13471:2;13466:3;13407:67;:::i;:::-;13400:74;;13483:93;13572:3;13483:93;:::i;:::-;13601:2;13596:3;13592:12;13585:19;;13244:366;;;:::o;13616:419::-;13782:4;13820:2;13809:9;13805:18;13797:26;;13869:9;13863:4;13859:20;13855:1;13844:9;13840:17;13833:47;13897:131;14023:4;13897:131;:::i;:::-;13889:139;;13616:419;;;:::o;14041:232::-;14181:34;14177:1;14169:6;14165:14;14158:58;14250:15;14245:2;14237:6;14233:15;14226:40;14041:232;:::o;14279:366::-;14421:3;14442:67;14506:2;14501:3;14442:67;:::i;:::-;14435:74;;14518:93;14607:3;14518:93;:::i;:::-;14636:2;14631:3;14627:12;14620:19;;14279:366;;;:::o;14651:419::-;14817:4;14855:2;14844:9;14840:18;14832:26;;14904:9;14898:4;14894:20;14890:1;14879:9;14875:17;14868:47;14932:131;15058:4;14932:131;:::i;:::-;14924:139;;14651:419;;;:::o;15076:191::-;15116:3;15135:20;15153:1;15135:20;:::i;:::-;15130:25;;15169:20;15187:1;15169:20;:::i;:::-;15164:25;;15212:1;15209;15205:9;15198:16;;15233:3;15230:1;15227:10;15224:36;;;15240:18;;:::i;:::-;15224:36;15076:191;;;;:::o;15273:102::-;15315:8;15362:5;15359:1;15355:13;15334:34;;15273:102;;;:::o;15381:848::-;15442:5;15449:4;15473:6;15464:15;;15497:5;15488:14;;15511:712;15532:1;15522:8;15519:15;15511:712;;;15627:4;15622:3;15618:14;15612:4;15609:24;15606:50;;;15636:18;;:::i;:::-;15606:50;15686:1;15676:8;15672:16;15669:451;;;16101:4;16094:5;16090:16;16081:25;;15669:451;16151:4;16145;16141:15;16133:23;;16181:32;16204:8;16181:32;:::i;:::-;16169:44;;15511:712;;;15381:848;;;;;;;:::o;16235:1073::-;16289:5;16480:8;16470:40;;16501:1;16492:10;;16503:5;;16470:40;16529:4;16519:36;;16546:1;16537:10;;16548:5;;16519:36;16615:4;16663:1;16658:27;;;;16699:1;16694:191;;;;16608:277;;16658:27;16676:1;16667:10;;16678:5;;;16694:191;16739:3;16729:8;16726:17;16723:43;;;16746:18;;:::i;:::-;16723:43;16795:8;16792:1;16788:16;16779:25;;16830:3;16823:5;16820:14;16817:40;;;16837:18;;:::i;:::-;16817:40;16870:5;;;16608:277;;16994:2;16984:8;16981:16;16975:3;16969:4;16966:13;16962:36;16944:2;16934:8;16931:16;16926:2;16920:4;16917:12;16913:35;16897:111;16894:246;;;17050:8;17044:4;17040:19;17031:28;;17085:3;17078:5;17075:14;17072:40;;;17092:18;;:::i;:::-;17072:40;17125:5;;16894:246;17165:42;17203:3;17193:8;17187:4;17184:1;17165:42;:::i;:::-;17150:57;;;;17239:4;17234:3;17230:14;17223:5;17220:25;17217:51;;;17248:18;;:::i;:::-;17217:51;17297:4;17290:5;17286:16;17277:25;;16235:1073;;;;;;:::o;17314:281::-;17372:5;17396:23;17414:4;17396:23;:::i;:::-;17388:31;;17440:25;17456:8;17440:25;:::i;:::-;17428:37;;17484:104;17521:66;17511:8;17505:4;17484:104;:::i;:::-;17475:113;;17314:281;;;;:::o;17601:250::-;17741:34;17737:1;17729:6;17725:14;17718:58;17810:33;17805:2;17797:6;17793:15;17786:58;17601:250;:::o;17857:366::-;17999:3;18020:67;18084:2;18079:3;18020:67;:::i;:::-;18013:74;;18096:93;18185:3;18096:93;:::i;:::-;18214:2;18209:3;18205:12;18198:19;;17857:366;;;:::o;18229:419::-;18395:4;18433:2;18422:9;18418:18;18410:26;;18482:9;18476:4;18472:20;18468:1;18457:9;18453:17;18446:47;18510:131;18636:4;18510:131;:::i;:::-;18502:139;;18229:419;;;:::o;18654:232::-;18794:34;18790:1;18782:6;18778:14;18771:58;18863:15;18858:2;18850:6;18846:15;18839:40;18654:232;:::o;18892:366::-;19034:3;19055:67;19119:2;19114:3;19055:67;:::i;:::-;19048:74;;19131:93;19220:3;19131:93;:::i;:::-;19249:2;19244:3;19240:12;19233:19;;18892:366;;;:::o;19264:419::-;19430:4;19468:2;19457:9;19453:18;19445:26;;19517:9;19511:4;19507:20;19503:1;19492:9;19488:17;19481:47;19545:131;19671:4;19545:131;:::i;:::-;19537:139;;19264:419;;;:::o;19689:332::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19861:71;19929:1;19918:9;19914:17;19905:6;19861:71;:::i;:::-;19942:72;20010:2;19999:9;19995:18;19986:6;19942:72;:::i;:::-;19689:332;;;;;:::o;20027:237::-;20167:34;20163:1;20155:6;20151:14;20144:58;20236:20;20231:2;20223:6;20219:15;20212:45;20027:237;:::o;20270:366::-;20412:3;20433:67;20497:2;20492:3;20433:67;:::i;:::-;20426:74;;20509:93;20598:3;20509:93;:::i;:::-;20627:2;20622:3;20618:12;20611:19;;20270:366;;;:::o;20642:419::-;20808:4;20846:2;20835:9;20831:18;20823:26;;20895:9;20889:4;20885:20;20881:1;20870:9;20866:17;20859:47;20923:131;21049:4;20923:131;:::i;:::-;20915:139;;20642:419;;;:::o;21067:223::-;21207:34;21203:1;21195:6;21191:14;21184:58;21276:6;21271:2;21263:6;21259:15;21252:31;21067:223;:::o;21296:366::-;21438:3;21459:67;21523:2;21518:3;21459:67;:::i;:::-;21452:74;;21535:93;21624:3;21535:93;:::i;:::-;21653:2;21648:3;21644:12;21637:19;;21296:366;;;:::o;21668:419::-;21834:4;21872:2;21861:9;21857:18;21849:26;;21921:9;21915:4;21911:20;21907:1;21896:9;21892:17;21885:47;21949:131;22075:4;21949:131;:::i;:::-;21941:139;;21668:419;;;:::o;22093:223::-;22233:34;22229:1;22221:6;22217:14;22210:58;22302:6;22297:2;22289:6;22285:15;22278:31;22093:223;:::o;22322:366::-;22464:3;22485:67;22549:2;22544:3;22485:67;:::i;:::-;22478:74;;22561:93;22650:3;22561:93;:::i;:::-;22679:2;22674:3;22670:12;22663:19;;22322:366;;;:::o;22694:419::-;22860:4;22898:2;22887:9;22883:18;22875:26;;22947:9;22941:4;22937:20;22933:1;22922:9;22918:17;22911:47;22975:131;23101:4;22975:131;:::i;:::-;22967:139;;22694:419;;;:::o;23119:174::-;23259:26;23255:1;23247:6;23243:14;23236:50;23119:174;:::o;23299:366::-;23441:3;23462:67;23526:2;23521:3;23462:67;:::i;:::-;23455:74;;23538:93;23627:3;23538:93;:::i;:::-;23656:2;23651:3;23647:12;23640:19;;23299:366;;;:::o;23671:419::-;23837:4;23875:2;23864:9;23860:18;23852:26;;23924:9;23918:4;23914:20;23910:1;23899:9;23895:17;23888:47;23952:131;24078:4;23952:131;:::i;:::-;23944:139;;23671:419;;;:::o;24096:224::-;24236:34;24232:1;24224:6;24220:14;24213:58;24305:7;24300:2;24292:6;24288:15;24281:32;24096:224;:::o;24326:366::-;24468:3;24489:67;24553:2;24548:3;24489:67;:::i;:::-;24482:74;;24565:93;24654:3;24565:93;:::i;:::-;24683:2;24678:3;24674:12;24667:19;;24326:366;;;:::o;24698:419::-;24864:4;24902:2;24891:9;24887:18;24879:26;;24951:9;24945:4;24941:20;24937:1;24926:9;24922:17;24915:47;24979:131;25105:4;24979:131;:::i;:::-;24971:139;;24698:419;;;:::o;25123:227::-;25263:34;25259:1;25251:6;25247:14;25240:58;25332:10;25327:2;25319:6;25315:15;25308:35;25123:227;:::o;25356:366::-;25498:3;25519:67;25583:2;25578:3;25519:67;:::i;:::-;25512:74;;25595:93;25684:3;25595:93;:::i;:::-;25713:2;25708:3;25704:12;25697:19;;25356:366;;;:::o;25728:419::-;25894:4;25932:2;25921:9;25917:18;25909:26;;25981:9;25975:4;25971:20;25967:1;25956:9;25952:17;25945:47;26009:131;26135:4;26009:131;:::i;:::-;26001:139;;25728:419;;;:::o;26153:230::-;26293:34;26289:1;26281:6;26277:14;26270:58;26362:13;26357:2;26349:6;26345:15;26338:38;26153:230;:::o;26389:366::-;26531:3;26552:67;26616:2;26611:3;26552:67;:::i;:::-;26545:74;;26628:93;26717:3;26628:93;:::i;:::-;26746:2;26741:3;26737:12;26730:19;;26389:366;;;:::o;26761:419::-;26927:4;26965:2;26954:9;26950:18;26942:26;;27014:9;27008:4;27004:20;27000:1;26989:9;26985:17;26978:47;27042:131;27168:4;27042:131;:::i;:::-;27034:139;;26761:419;;;:::o;27186:229::-;27326:34;27322:1;27314:6;27310:14;27303:58;27395:12;27390:2;27382:6;27378:15;27371:37;27186:229;:::o;27421:366::-;27563:3;27584:67;27648:2;27643:3;27584:67;:::i;:::-;27577:74;;27660:93;27749:3;27660:93;:::i;:::-;27778:2;27773:3;27769:12;27762:19;;27421:366;;;:::o;27793:419::-;27959:4;27997:2;27986:9;27982:18;27974:26;;28046:9;28040:4;28036:20;28032:1;28021:9;28017:17;28010:47;28074:131;28200:4;28074:131;:::i;:::-;28066:139;;27793:419;;;:::o;28218:225::-;28358:34;28354:1;28346:6;28342:14;28335:58;28427:8;28422:2;28414:6;28410:15;28403:33;28218:225;:::o;28449:366::-;28591:3;28612:67;28676:2;28671:3;28612:67;:::i;:::-;28605:74;;28688:93;28777:3;28688:93;:::i;:::-;28806:2;28801:3;28797:12;28790:19;;28449:366;;;:::o;28821:419::-;28987:4;29025:2;29014:9;29010:18;29002:26;;29074:9;29068:4;29064:20;29060:1;29049:9;29045:17;29038:47;29102:131;29228:4;29102:131;:::i;:::-;29094:139;;28821:419;;;:::o;29246:242::-;29386:34;29382:1;29374:6;29370:14;29363:58;29455:25;29450:2;29442:6;29438:15;29431:50;29246:242;:::o;29494:366::-;29636:3;29657:67;29721:2;29716:3;29657:67;:::i;:::-;29650:74;;29733:93;29822:3;29733:93;:::i;:::-;29851:2;29846:3;29842:12;29835:19;;29494:366;;;:::o;29866:419::-;30032:4;30070:2;30059:9;30055:18;30047:26;;30119:9;30113:4;30109:20;30105:1;30094:9;30090:17;30083:47;30147:131;30273:4;30147:131;:::i;:::-;30139:139;;29866:419;;;:::o;30291:143::-;30348:5;30379:6;30373:13;30364:22;;30395:33;30422:5;30395:33;:::i;:::-;30291:143;;;;:::o;30440:351::-;30510:6;30559:2;30547:9;30538:7;30534:23;30530:32;30527:119;;;30565:79;;:::i;:::-;30527:119;30685:1;30710:64;30766:7;30757:6;30746:9;30742:22;30710:64;:::i;:::-;30700:74;;30656:128;30440:351;;;;:::o;30797:332::-;30918:4;30956:2;30945:9;30941:18;30933:26;;30969:71;31037:1;31026:9;31022:17;31013:6;30969:71;:::i;:::-;31050:72;31118:2;31107:9;31103:18;31094:6;31050:72;:::i;:::-;30797:332;;;;;:::o;31135:137::-;31189:5;31220:6;31214:13;31205:22;;31236:30;31260:5;31236:30;:::i;:::-;31135:137;;;;:::o;31278:345::-;31345:6;31394:2;31382:9;31373:7;31369:23;31365:32;31362:119;;;31400:79;;:::i;:::-;31362:119;31520:1;31545:61;31598:7;31589:6;31578:9;31574:22;31545:61;:::i;:::-;31535:71;;31491:125;31278:345;;;;:::o;31629:223::-;31769:34;31765:1;31757:6;31753:14;31746:58;31838:6;31833:2;31825:6;31821:15;31814:31;31629:223;:::o;31858:366::-;32000:3;32021:67;32085:2;32080:3;32021:67;:::i;:::-;32014:74;;32097:93;32186:3;32097:93;:::i;:::-;32215:2;32210:3;32206:12;32199:19;;31858:366;;;:::o;32230:419::-;32396:4;32434:2;32423:9;32419:18;32411:26;;32483:9;32477:4;32473:20;32469:1;32458:9;32454:17;32447:47;32511:131;32637:4;32511:131;:::i;:::-;32503:139;;32230:419;;;:::o;32655:221::-;32795:34;32791:1;32783:6;32779:14;32772:58;32864:4;32859:2;32851:6;32847:15;32840:29;32655:221;:::o;32882:366::-;33024:3;33045:67;33109:2;33104:3;33045:67;:::i;:::-;33038:74;;33121:93;33210:3;33121:93;:::i;:::-;33239:2;33234:3;33230:12;33223:19;;32882:366;;;:::o;33254:419::-;33420:4;33458:2;33447:9;33443:18;33435:26;;33507:9;33501:4;33497:20;33493:1;33482:9;33478:17;33471:47;33535:131;33661:4;33535:131;:::i;:::-;33527:139;;33254:419;;;:::o;33679:224::-;33819:34;33815:1;33807:6;33803:14;33796:58;33888:7;33883:2;33875:6;33871:15;33864:32;33679:224;:::o;33909:366::-;34051:3;34072:67;34136:2;34131:3;34072:67;:::i;:::-;34065:74;;34148:93;34237:3;34148:93;:::i;:::-;34266:2;34261:3;34257:12;34250:19;;33909:366;;;:::o;34281:419::-;34447:4;34485:2;34474:9;34470:18;34462:26;;34534:9;34528:4;34524:20;34520:1;34509:9;34505:17;34498:47;34562:131;34688:4;34562:131;:::i;:::-;34554:139;;34281:419;;;:::o;34706:222::-;34846:34;34842:1;34834:6;34830:14;34823:58;34915:5;34910:2;34902:6;34898:15;34891:30;34706:222;:::o;34934:366::-;35076:3;35097:67;35161:2;35156:3;35097:67;:::i;:::-;35090:74;;35173:93;35262:3;35173:93;:::i;:::-;35291:2;35286:3;35282:12;35275:19;;34934:366;;;:::o;35306:419::-;35472:4;35510:2;35499:9;35495:18;35487:26;;35559:9;35553:4;35549:20;35545:1;35534:9;35530:17;35523:47;35587:131;35713:4;35587:131;:::i;:::-;35579:139;;35306:419;;;:::o;35731:174::-;35871:26;35867:1;35859:6;35855:14;35848:50;35731:174;:::o;35911:366::-;36053:3;36074:67;36138:2;36133:3;36074:67;:::i;:::-;36067:74;;36150:93;36239:3;36150:93;:::i;:::-;36268:2;36263:3;36259:12;36252:19;;35911:366;;;:::o;36283:419::-;36449:4;36487:2;36476:9;36472:18;36464:26;;36536:9;36530:4;36526:20;36522:1;36511:9;36507:17;36500:47;36564:131;36690:4;36564:131;:::i;:::-;36556:139;;36283:419;;;:::o;36708:246::-;36848:34;36844:1;36836:6;36832:14;36825:58;36917:29;36912:2;36904:6;36900:15;36893:54;36708:246;:::o;36960:366::-;37102:3;37123:67;37187:2;37182:3;37123:67;:::i;:::-;37116:74;;37199:93;37288:3;37199:93;:::i;:::-;37317:2;37312:3;37308:12;37301:19;;36960:366;;;:::o;37332:419::-;37498:4;37536:2;37525:9;37521:18;37513:26;;37585:9;37579:4;37575:20;37571:1;37560:9;37556:17;37549:47;37613:131;37739:4;37613:131;:::i;:::-;37605:139;;37332:419;;;:::o;37757:194::-;37797:4;37817:20;37835:1;37817:20;:::i;:::-;37812:25;;37851:20;37869:1;37851:20;:::i;:::-;37846:25;;37895:1;37892;37888:9;37880:17;;37919:1;37913:4;37910:11;37907:37;;;37924:18;;:::i;:::-;37907:37;37757:194;;;;:::o;37957:235::-;38097:34;38093:1;38085:6;38081:14;38074:58;38166:18;38161:2;38153:6;38149:15;38142:43;37957:235;:::o;38198:366::-;38340:3;38361:67;38425:2;38420:3;38361:67;:::i;:::-;38354:74;;38437:93;38526:3;38437:93;:::i;:::-;38555:2;38550:3;38546:12;38539:19;;38198:366;;;:::o;38570:419::-;38736:4;38774:2;38763:9;38759:18;38751:26;;38823:9;38817:4;38813:20;38809:1;38798:9;38794:17;38787:47;38851:131;38977:4;38851:131;:::i;:::-;38843:139;;38570:419;;;:::o;38995:179::-;39135:31;39131:1;39123:6;39119:14;39112:55;38995:179;:::o;39180:366::-;39322:3;39343:67;39407:2;39402:3;39343:67;:::i;:::-;39336:74;;39419:93;39508:3;39419:93;:::i;:::-;39537:2;39532:3;39528:12;39521:19;;39180:366;;;:::o;39552:419::-;39718:4;39756:2;39745:9;39741:18;39733:26;;39805:9;39799:4;39795:20;39791:1;39780:9;39776:17;39769:47;39833:131;39959:4;39833:131;:::i;:::-;39825:139;;39552:419;;;:::o;39977:147::-;40078:11;40115:3;40100:18;;39977:147;;;;:::o;40130:114::-;;:::o;40250:398::-;40409:3;40430:83;40511:1;40506:3;40430:83;:::i;:::-;40423:90;;40522:93;40611:3;40522:93;:::i;:::-;40640:1;40635:3;40631:11;40624:18;;40250:398;;;:::o;40654:379::-;40838:3;40860:147;41003:3;40860:147;:::i;:::-;40853:154;;41024:3;41017:10;;40654:379;;;:::o;41039:245::-;41179:34;41175:1;41167:6;41163:14;41156:58;41248:28;41243:2;41235:6;41231:15;41224:53;41039:245;:::o;41290:366::-;41432:3;41453:67;41517:2;41512:3;41453:67;:::i;:::-;41446:74;;41529:93;41618:3;41529:93;:::i;:::-;41647:2;41642:3;41638:12;41631:19;;41290:366;;;:::o;41662:419::-;41828:4;41866:2;41855:9;41851:18;41843:26;;41915:9;41909:4;41905:20;41901:1;41890:9;41886:17;41879:47;41943:131;42069:4;41943:131;:::i;:::-;41935:139;;41662:419;;;:::o;42087:225::-;42227:34;42223:1;42215:6;42211:14;42204:58;42296:8;42291:2;42283:6;42279:15;42272:33;42087:225;:::o;42318:366::-;42460:3;42481:67;42545:2;42540:3;42481:67;:::i;:::-;42474:74;;42557:93;42646:3;42557:93;:::i;:::-;42675:2;42670:3;42666:12;42659:19;;42318:366;;;:::o;42690:419::-;42856:4;42894:2;42883:9;42879:18;42871:26;;42943:9;42937:4;42933:20;42929:1;42918:9;42914:17;42907:47;42971:131;43097:4;42971:131;:::i;:::-;42963:139;;42690:419;;;:::o;43115:180::-;43163:77;43160:1;43153:88;43260:4;43257:1;43250:15;43284:4;43281:1;43274:15;43301:180;43349:77;43346:1;43339:88;43446:4;43443:1;43436:15;43470:4;43467:1;43460:15;43487:143;43544:5;43575:6;43569:13;43560:22;;43591:33;43618:5;43591:33;:::i;:::-;43487:143;;;;:::o;43636:351::-;43706:6;43755:2;43743:9;43734:7;43730:23;43726:32;43723:119;;;43761:79;;:::i;:::-;43723:119;43881:1;43906:64;43962:7;43953:6;43942:9;43938:22;43906:64;:::i;:::-;43896:74;;43852:128;43636:351;;;;:::o;43993:85::-;44038:7;44067:5;44056:16;;43993:85;;;:::o;44084:158::-;44142:9;44175:61;44193:42;44202:32;44228:5;44202:32;:::i;:::-;44193:42;:::i;:::-;44175:61;:::i;:::-;44162:74;;44084:158;;;:::o;44248:147::-;44343:45;44382:5;44343:45;:::i;:::-;44338:3;44331:58;44248:147;;:::o;44401:114::-;44468:6;44502:5;44496:12;44486:22;;44401:114;;;:::o;44521:184::-;44620:11;44654:6;44649:3;44642:19;44694:4;44689:3;44685:14;44670:29;;44521:184;;;;:::o;44711:132::-;44778:4;44801:3;44793:11;;44831:4;44826:3;44822:14;44814:22;;44711:132;;;:::o;44849:108::-;44926:24;44944:5;44926:24;:::i;:::-;44921:3;44914:37;44849:108;;:::o;44963:179::-;45032:10;45053:46;45095:3;45087:6;45053:46;:::i;:::-;45131:4;45126:3;45122:14;45108:28;;44963:179;;;;:::o;45148:113::-;45218:4;45250;45245:3;45241:14;45233:22;;45148:113;;;:::o;45297:732::-;45416:3;45445:54;45493:5;45445:54;:::i;:::-;45515:86;45594:6;45589:3;45515:86;:::i;:::-;45508:93;;45625:56;45675:5;45625:56;:::i;:::-;45704:7;45735:1;45720:284;45745:6;45742:1;45739:13;45720:284;;;45821:6;45815:13;45848:63;45907:3;45892:13;45848:63;:::i;:::-;45841:70;;45934:60;45987:6;45934:60;:::i;:::-;45924:70;;45780:224;45767:1;45764;45760:9;45755:14;;45720:284;;;45724:14;46020:3;46013:10;;45421:608;;;45297:732;;;;:::o;46035:831::-;46298:4;46336:3;46325:9;46321:19;46313:27;;46350:71;46418:1;46407:9;46403:17;46394:6;46350:71;:::i;:::-;46431:80;46507:2;46496:9;46492:18;46483:6;46431:80;:::i;:::-;46558:9;46552:4;46548:20;46543:2;46532:9;46528:18;46521:48;46586:108;46689:4;46680:6;46586:108;:::i;:::-;46578:116;;46704:72;46772:2;46761:9;46757:18;46748:6;46704:72;:::i;:::-;46786:73;46854:3;46843:9;46839:19;46830:6;46786:73;:::i;:::-;46035:831;;;;;;;;:::o;46872:720::-;47107:4;47145:3;47134:9;47130:19;47122:27;;47159:79;47235:1;47224:9;47220:17;47211:6;47159:79;:::i;:::-;47285:9;47279:4;47275:20;47270:2;47259:9;47255:18;47248:48;47313:108;47416:4;47407:6;47313:108;:::i;:::-;47305:116;;47431:72;47499:2;47488:9;47484:18;47475:6;47431:72;:::i;:::-;47513;47581:2;47570:9;47566:18;47557:6;47513:72;:::i;:::-;46872:720;;;;;;;:::o

Swarm Source

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