ETH Price: $3,589.83 (-0.78%)

Token

ERC-20: Sandren (SNDRN)
 

Overview

Max Total Supply

964,035,510.889438375 SNDRN

Holders

262

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

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 2022-09-13
*/

/********************************************************************

49206B6E6F7720796F752C2062757420796F7520646F6E2774206B6E6F
77206D652E2020492068617665206265656E206C697374656E696E6720
746F206D7920666F6C6C6F7765727320616E642049206861766520616E7
377657265642E2020436F6E7374616E74206275726E2066726F6D20756E
6973776170206C697175696469747920706F6F6C2069732068657265206
96E2053616E6472656E2E20204C65742074686520626C75652064726167
6F6E20666C616D65207475726E20746F6B656E7320696E746F2061736865732E

*********************************************************************/
pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
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);
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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 functionCall(target, data, "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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    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 WETH() external pure returns (address);
}

contract Sandren is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event TokensBurned(uint256, uint256);
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair = address(0);
    address private dargonFlames = 0x040981E82D0ca51E9978078f21Af15264Ee8e0bd;
    address private tokensToAshes = 0x92092EA924e26739F24a9d1C4959F7057934ceAa;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "Sandren";
    string private _symbol = "SNDRN";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 1000000000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    bool public swapEnabled = false;
    uint256 public ethPriceToSwap = 200000000000000000; //.2 ETH
    uint256 public _maxWalletAmount = 20000001 * 10 ** _decimals;
    uint256 public tokensBurnedSinceLaunch;
    uint public tradingStartDate;
    uint256 public burnFrequencynMinutes = 60;  //starting off every 60 minutes to do liquidity burn
    uint256 public burnRateInBasePoints = 100;  //100 = 1%
    uint public nextLiquidityBurnTimeStamp;
    uint public liquidityUnlockDate;

    TokenBurner public tokenBurner = new TokenBurner(address(this));

    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(tokenBurner)] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

    function setBurnSettings(uint256 frequencyInMinutes, uint256 burnBasePoints) external onlyOwner {
        burnFrequencynMinutes = frequencyInMinutes;
        burnRateInBasePoints = burnBasePoints;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _tTotal = _tTotal.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }
    
    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function lockLiquidity(uint256 newLockDate) external onlyOwner {
        require(newLockDate > liquidityUnlockDate, "New lock date must be greater than existing lock date");
        liquidityUnlockDate = newLockDate;
    }

    function isTradingOpen() public view returns(bool) {
        return block.timestamp >= tradingStartDate;
    }

    function openTrading(uint256 openTradingInMinutes) external onlyOwner() {
        require(uniswapV2Pair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            address(this),
            block.timestamp);
        swapEnabled = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingStartDate = block.timestamp.add(openTradingInMinutes.mul(60));
        nextLiquidityBurnTimeStamp = tradingStartDate;
        liquidityUnlockDate = block.timestamp.add(3 days); //lock the liquidity for 3 days
    }
 
    //This is only for protection at launch in case of any issues.  Liquidity cannot be pulled if 
    //liquidityUnlockDate has not been reached or contract is renounced
    function removeLiqudityPool() external onlyOwner {
        require(liquidityUnlockDate < block.timestamp, "Liquidity is currently locked");
        uint liquidity = IERC20(uniswapV2Pair).balanceOf(address(this));
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), liquidity);
        uniswapV2Router.removeLiquidity(
            uniswapV2Router.WETH(),
            address(this),
            liquidity,
            1,
            1,
            owner(),
            block.timestamp
        );
    }

    function burnTokens() external {
        require(block.timestamp >= nextLiquidityBurnTimeStamp, "Next burn time is not due yet, be patient");
         burnTokensFromLiquidityPool();
    }

    function burnTokensFromLiquidityPool() private lockTheSwap {
        uint liquidity = IERC20(uniswapV2Pair).balanceOf(address(this));
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), liquidity);
        uint tokensToBurn = liquidity.div(burnRateInBasePoints);
        uniswapV2Router.removeLiquidity(
            uniswapV2Router.WETH(),
            address(this),
            tokensToBurn,
            1,
            1,
            address(tokenBurner),
            block.timestamp
        );
         //this puts ETH back in the liquidity pool
        tokenBurner.buyBack(); 
        //burn all of the tokens that were removed from the liquidity pool and tokens from the buy back
        uint256 tokenBurnAmount = balanceOf(address(tokenBurner)); 
        if(tokenBurnAmount > 0) {
            //burn the tokens we removed from LP and what was bought
            _burn(address(tokenBurner), tokenBurnAmount);
            tokensBurnedSinceLaunch = tokensBurnedSinceLaunch.add(tokenBurnAmount);
            nextLiquidityBurnTimeStamp = block.timestamp.add(burnFrequencynMinutes.mul(60));
            emit TokensBurned(tokenBurnAmount, nextLiquidityBurnTimeStamp);
        }
    }

    function enableDisableSwapTokens(bool _enabled) public onlyOwner {
        swapEnabled = _enabled;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != owner() && to != owner() && from != address(this) &&
           from != address(tokenBurner) && to != address(tokenBurner)) {
            uint256 holderBalance = balanceOf(to).add(amount);
            if (from == uniswapV2Pair) {
                require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
            }
            if (from != uniswapV2Pair && to != uniswapV2Pair) {
                require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
            }
            if (from != uniswapV2Pair && to == uniswapV2Pair) {
                if(block.timestamp >= nextLiquidityBurnTimeStamp) {
                    burnTokensFromLiquidityPool();
                } else {
                    sellTokens();
                }
            }  
        }
        
        if(isTradingOpen()) {    
            taxAmount = takeFees ? amount.mul(5).div(100) : 0;  //5% taxation
        } else {
            taxAmount = takeFees ? amount.mul(98).div(100) : 0;  //98% taxation at launch to catch bots before trading is open
        }
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, amount);
    }

    function claimTokens() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function sellTokens() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            uint256 tokenAmount = getTokenAmountByEthPrice();
            if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify && swapEnabled) {
                swapTokensForEth(tokenAmount);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(dargonFlames).transfer(halfShare);
        payable(tokensToAshes).transfer(halfShare); 
    }

    function getTokenAmountByEthPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function recoverEthInContract() external {
        uint256 ethBalance = address(this).balance;
        payable(dargonFlames).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(dargonFlames, balance);
    }
}

contract TokenBurner is Ownable {

    IUniswapV2Router02 private uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IERC20 private wethToken = IERC20(uniswapV2Router.WETH());
    IERC20 public tokenContractAddress;
    
    constructor(address tokenAddr) {
        tokenContractAddress = IERC20(tokenAddr);
    }
    function buyBack() external {
        address[] memory path;
        path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(tokenContractAddress);
        
        uint256 wethAmount = wethToken.balanceOf(address(this));
        wethToken.approve(address(uniswapV2Router), wethAmount);
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            wethAmount,
            0,
            path,
            address(this),
            block.timestamp);    
    }
    
    receive() external payable {}

    function recoverEth() external {
        uint256 ethBalance = address(this).balance;
        payable(owner()).transfer(ethBalance);
    }

    function recoverERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(owner(), balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"burnFrequencynMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRateInBasePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTokens","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":"_enabled","type":"bool"}],"name":"enableDisableSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenAmountByEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityUnlockDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockDate","type":"uint256"}],"name":"lockLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLiquidityBurnTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"openTradingInMinutes","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"recoverERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEthInContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLiqudityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"frequencyInMinutes","type":"uint256"},{"internalType":"uint256","name":"burnBasePoints","type":"uint256"}],"name":"setBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenBurner","outputs":[{"internalType":"contract TokenBurner","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensBurnedSinceLaunch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStartDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073040981e82d0ca51e9978078f21af15264ee8e0bd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507392092ea924e26739f24a9d1c4959f7057934ceaa600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f53616e6472656e00000000000000000000000000000000000000000000000000815250600890816200018b919062000863565b506040518060400160405280600581526020017f534e44524e00000000000000000000000000000000000000000000000000000081525060099081620001d2919062000863565b506009600a60006101000a81548160ff021916908360ff160217905550600a60009054906101000a900460ff16600a6200020d919062000ada565b633b9aca006200021e919062000b2b565b600b556000600c60016101000a81548160ff0219169083151502179055506702c68af0bb140000600d55600a60009054906101000a900460ff16600a62000266919062000ada565b6301312d0162000277919062000b2b565b600e55603c6011556064601255306040516200029390620005db565b6200029f919062000bbb565b604051809103906000f080158015620002bc573d6000803e3d6000fd5b50601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200030a57600080fd5b5060006200031d620005aa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016007600062000417620005b260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200059c919062000be9565b60405180910390a362000c06565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61124f8062005d2183390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066b57607f821691505b60208210810362000681576200068062000623565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006eb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ac565b620006f78683620006ac565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007446200073e62000738846200070f565b62000719565b6200070f565b9050919050565b6000819050919050565b620007608362000723565b620007786200076f826200074b565b848454620006b9565b825550505050565b600090565b6200078f62000780565b6200079c81848462000755565b505050565b5b81811015620007c457620007b860008262000785565b600181019050620007a2565b5050565b601f8211156200081357620007dd8162000687565b620007e8846200069c565b81016020851015620007f8578190505b6200081062000807856200069c565b830182620007a1565b50505b505050565b600082821c905092915050565b6000620008386000198460080262000818565b1980831691505092915050565b600062000853838362000825565b9150826002028217905092915050565b6200086e82620005e9565b67ffffffffffffffff8111156200088a5762000889620005f4565b5b62000896825462000652565b620008a3828285620007c8565b600060209050601f831160018114620008db5760008415620008c6578287015190505b620008d2858262000845565b86555062000942565b601f198416620008eb8662000687565b60005b828110156200091557848901518255600182019150602085019450602081019050620008ee565b8683101562000935578489015162000931601f89168262000825565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009d857808604811115620009b057620009af6200094a565b5b6001851615620009c05780820291505b8081029050620009d08562000979565b945062000990565b94509492505050565b600082620009f3576001905062000ac6565b8162000a03576000905062000ac6565b816001811462000a1c576002811462000a275762000a5d565b600191505062000ac6565b60ff84111562000a3c5762000a3b6200094a565b5b8360020a91508482111562000a565762000a556200094a565b5b5062000ac6565b5060208310610133831016604e8410600b841016171562000a975782820a90508381111562000a915762000a906200094a565b5b62000ac6565b62000aa6848484600162000986565b9250905081840481111562000ac05762000abf6200094a565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ae7826200070f565b915062000af48362000acd565b925062000b237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009e1565b905092915050565b600062000b38826200070f565b915062000b45836200070f565b925082820262000b55816200070f565b9150828204841483151762000b6f5762000b6e6200094a565b5b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ba38262000b76565b9050919050565b62000bb58162000b96565b82525050565b600060208201905062000bd2600083018462000baa565b92915050565b62000be3816200070f565b82525050565b600060208201905062000c00600083018462000bd8565b92915050565b61510b8062000c166000396000f3fe60806040526004361061024a5760003560e01c8063564c2950116101395780639f261980116100b6578063d6acac221161007a578063d6acac2214610857578063d9058bd514610882578063dc13b31c146108ab578063dd62ed3e146108d6578063e9ac0e5914610913578063f2fde38b1461092a57610251565b80639f26198014610760578063a457c2d71461078b578063a9059cbb146107c8578063b2abbbc414610805578063d16336491461082e57610251565b8063715018a6116100fd578063715018a61461069f57806384afff9b146106b65780638da5cb5b146106df57806395d89b411461070a578063979957061461073557610251565b8063564c2950146105b857806356a060a2146105e15780636c0a24eb1461060c5780636ddd17131461063757806370a082311461066257610251565b80632bfbd9cf116101c757806348c54b9d1161018b57806348c54b9d146104e357806348fad638146104fa57806349bd5a5e146105255780635342acb41461055057806354a5df1f1461058d57610251565b80632bfbd9cf146103fe578063313ce567146104275780633950935114610452578063441d801f1461048f578063482e53ff146104b857610251565b80631f61fd5a1161020e5780631f61fd5a1461032b57806323b872dd146103565780632743b3cb1461039357806327a14fc2146103aa5780632996f972146103d357610251565b806306fdde031461025657806308003f7814610281578063095ea7b3146102985780631694505e146102d557806318160ddd1461030057610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610953565b6040516102789190613b95565b60405180910390f35b34801561028d57600080fd5b506102966109e5565b005b3480156102a457600080fd5b506102bf60048036038101906102ba9190613c5f565b610a34565b6040516102cc9190613cba565b60405180910390f35b3480156102e157600080fd5b506102ea610a52565b6040516102f79190613d34565b60405180910390f35b34801561030c57600080fd5b50610315610a78565b6040516103229190613d5e565b60405180910390f35b34801561033757600080fd5b50610340610a82565b60405161034d9190613d5e565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190613d79565b610a88565b60405161038a9190613cba565b60405180910390f35b34801561039f57600080fd5b506103a8610b61565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613dcc565b610ee3565b005b3480156103df57600080fd5b506103e8610f91565b6040516103f59190613e2c565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613dcc565b610fb7565b005b34801561043357600080fd5b5061043c61109a565b6040516104499190613e63565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190613c5f565b6110b1565b6040516104869190613cba565b60405180910390f35b34801561049b57600080fd5b506104b660048036038101906104b19190613f0f565b611164565b005b3480156104c457600080fd5b506104cd611209565b6040516104da9190613d5e565b60405180910390f35b3480156104ef57600080fd5b506104f861120f565b005b34801561050657600080fd5b5061050f611261565b60405161051c9190613d5e565b60405180910390f35b34801561053157600080fd5b5061053a611267565b6040516105479190613f7e565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190613f99565b61128d565b6040516105849190613cba565b60405180910390f35b34801561059957600080fd5b506105a26112e3565b6040516105af9190613d5e565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190613fc6565b6112e9565b005b3480156105ed57600080fd5b506105f661139b565b6040516106039190613cba565b60405180910390f35b34801561061857600080fd5b506106216113a8565b60405161062e9190613d5e565b60405180910390f35b34801561064357600080fd5b5061064c6113ae565b6040516106599190613cba565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190613f99565b6113c1565b6040516106969190613d5e565b60405180910390f35b3480156106ab57600080fd5b506106b461140a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190613f99565b61155d565b005b3480156106eb57600080fd5b506106f4611686565b6040516107019190613f7e565b60405180910390f35b34801561071657600080fd5b5061071f6116af565b60405161072c9190613b95565b60405180910390f35b34801561074157600080fd5b5061074a611741565b6040516107579190613d5e565b60405180910390f35b34801561076c57600080fd5b50610775611984565b6040516107829190613d5e565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad9190613c5f565b61198a565b6040516107bf9190613cba565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea9190613c5f565b611a57565b6040516107fc9190613cba565b60405180910390f35b34801561081157600080fd5b5061082c60048036038101906108279190613dcc565b611a75565b005b34801561083a57600080fd5b5061085560048036038101906108509190613dcc565b611b14565b005b34801561086357600080fd5b5061086c61204e565b6040516108799190613d5e565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a49190613ff3565b612054565b005b3480156108b757600080fd5b506108c06120fb565b6040516108cd9190613d5e565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614033565b612101565b60405161090a9190613d5e565b60405180910390f35b34801561091f57600080fd5b50610928612188565b005b34801561093657600080fd5b50610951600480360381019061094c9190613f99565b6121f9565b005b606060088054610962906140a2565b80601f016020809104026020016040519081016040528092919081815260200182805461098e906140a2565b80156109db5780601f106109b0576101008083540402835291602001916109db565b820191906000526020600020905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b601354421015610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190614145565b60405180910390fd5b610a326123ba565b565b6000610a48610a4161283a565b8484612842565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60115481565b6000610a95848484612a0b565b610b5684610aa161283a565b610b518560405180606001604052806028815260200161508960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0761283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ff9092919063ffffffff16565b612842565b600190509392505050565b610b6961283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed906141b1565b60405180910390fd5b4260145410610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c319061421d565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c979190613f7e565b602060405180830381865afa158015610cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd89190614252565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d5992919061427f565b6020604051808303816000875af1158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c91906142bd565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c91906142ff565b3084600180610e79611686565b426040518863ffffffff1660e01b8152600401610e9c9796959493929190614367565b60408051808303816000875af1158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede91906143d6565b505050565b610eeb61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f906141b1565b60405180910390fd5b633b9aca0081610f889190614445565b600e8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fbf61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611043906141b1565b60405180910390fd5b6014548111611090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611087906144f9565b60405180910390fd5b8060148190555050565b6000600a60009054906101000a900460ff16905090565b600061115a6110be61283a565b8461115585600660006110cf61283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b612842565b6001905092915050565b61116c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906141b1565b60405180910390fd5b6112048383836133c1565b505050565b60125481565b600061121a306113c1565b9050600081111561125e57600c60009054906101000a900460ff1615801561124e5750600c60019054906101000a900460ff165b1561125d5761125c8161346c565b5b5b50565b60135481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b6112f161283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906141b1565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b6000601054421015905090565b600e5481565b600c60019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141261283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161159d9190613f7e565b602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190614252565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161163d92919061427f565b6020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906142bd565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546116be906140a2565b80601f01602080910402602001604051908101604052809291908181526020018280546116ea906140a2565b80156117375780601f1061170c57610100808354040283529160200191611737565b820191906000526020600020905b81548152906001019060200180831161171a57829003601f168201915b5050505050905090565b600080600267ffffffffffffffff81111561175f5761175e614519565b5b60405190808252806020026020018201604052801561178d5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182191906142ff565b8160008151811061183557611834614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061188457611883614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b815260040161191d929190614635565b600060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119639190614774565b60018151811061197657611975614548565b5b602002602001015191505090565b60145481565b6000611a4d61199761283a565b84611a48856040518060600160405280602581526020016150b160259139600660006119c161283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ff9092919063ffffffff16565b612842565b6001905092915050565b6000611a6b611a6461283a565b8484612a0b565b6001905092915050565b611a7d61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b01906141b1565b60405180910390fd5b80600d8190555050565b611b1c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c319061482f565b60405180910390fd5b611c6930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612842565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa91906142ff565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da791906142ff565b6040518363ffffffff1660e01b8152600401611dc492919061484f565b6020604051808303816000875af1158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0791906142ff565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e90306113c1565b60008030426040518863ffffffff1660e01b8152600401611eb6969594939291906148b3565b60606040518083038185885af1158015611ed4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ef99190614914565b5050506001600c60016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611fb692919061427f565b6020604051808303816000875af1158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff991906142bd565b50612020612011603c836137a090919063ffffffff16565b4261336390919063ffffffff16565b6010819055506010546013819055506120456203f4804261336390919063ffffffff16565b60148190555050565b60105481565b61205c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e0906141b1565b60405180910390fd5b81601181905550806012819055505050565b600f5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121f5573d6000803e3d6000fd5b5050565b61220161283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612285906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f4906149d9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c60006101000a81548160ff0219169083151502179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124329190613f7e565b602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190614252565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016124f492919061427f565b6020604051808303816000875af1158015612513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253791906142bd565b50600061254f6012548361381a90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262091906142ff565b3084600180601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161266b9796959493929190614367565b60408051808303816000875af1158015612689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ad91906143d6565b5050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acdf4f186040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b50505050600061275e601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c1565b9050600081111561281a57612795601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613864565b6127aa81600f5461336390919063ffffffff16565b600f819055506127d86127c9603c6011546137a090919063ffffffff16565b4261336390919063ffffffff16565b6013819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d816013546040516128119291906149f9565b60405180910390a15b5050506000600c60006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a890614a94565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291790614b26565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129fe9190613d5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7190614bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae090614c4a565b60405180910390fd5b60008111612b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2390614cdc565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bd35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c125750612be2611686565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c515750612c21611686565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050612c5b611686565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612cc95750612c99611686565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0157503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561303d576000612dd784612dc9876113c1565b61336390919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e7457600e54811115612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614d6e565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612f205750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612f6b57600e54811115612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190614d6e565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156130165750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561303b5760135442106130315761302c6123ba565b61303a565b6130396139ed565b5b5b505b61304561139b565b15613085578061305657600061307e565b61307d606461306f6005866137a090919063ffffffff16565b61381a90919063ffffffff16565b5b91506130bc565b806130915760006130b9565b6130b860646130aa6062866137a090919063ffffffff16565b61381a90919063ffffffff16565b5b91505b60006130d18385613a5890919063ffffffff16565b905061312584600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131ba81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324f83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132ef9190613d5e565b60405180910390a3505050505050565b6000838311158290613347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333e9190613b95565b60405180910390fd5b50600083856133569190614d8e565b9050809150509392505050565b60008082846133729190614dc2565b9050838110156133b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ae90614e42565b60405180910390fd5b8091505092915050565b60005b838390508110156134665760008484838181106133e4576133e3614548565b5b90506020020160208101906133f99190613f99565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061345e90614e62565b9150506133c4565b50505050565b6000600267ffffffffffffffff81111561348957613488614519565b5b6040519080825280602002602001820160405280156134b75781602001602082028036833780820191505090505b50905030816000815181106134cf576134ce614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359a91906142ff565b816001815181106135ae576135ad614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061361530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612842565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613679959493929190614eaa565b600060405180830381600087803b15801561369357600080fd5b505af11580156136a7573d6000803e3d6000fd5b50505050600047905060006136c660028361381a90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613730573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613799573d6000803e3d6000fd5b5050505050565b60008083036137b25760009050613814565b600082846137c09190614445565b90508284826137cf9190614f33565b1461380f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380690614fd6565b60405180910390fd5b809150505b92915050565b600061385c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138ca90615068565b60405180910390fd5b6138e881600b54613a5890919063ffffffff16565b600b8190555061394081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139e19190613d5e565b60405180910390a35050565b60006139f8306113c1565b90506000811115613a55576000613a0d611741565b9050808210158015613a2c5750600c60009054906101000a900460ff16155b8015613a445750600c60019054906101000a900460ff165b15613a5357613a528161346c565b5b505b50565b6000613a9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ff565b905092915050565b60008083118290613ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae09190613b95565b60405180910390fd5b5060008385613af89190614f33565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b3f578082015181840152602081019050613b24565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b6782613b05565b613b718185613b10565b9350613b81818560208601613b21565b613b8a81613b4b565b840191505092915050565b60006020820190508181036000830152613baf8184613b5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bf682613bcb565b9050919050565b613c0681613beb565b8114613c1157600080fd5b50565b600081359050613c2381613bfd565b92915050565b6000819050919050565b613c3c81613c29565b8114613c4757600080fd5b50565b600081359050613c5981613c33565b92915050565b60008060408385031215613c7657613c75613bc1565b5b6000613c8485828601613c14565b9250506020613c9585828601613c4a565b9150509250929050565b60008115159050919050565b613cb481613c9f565b82525050565b6000602082019050613ccf6000830184613cab565b92915050565b6000819050919050565b6000613cfa613cf5613cf084613bcb565b613cd5565b613bcb565b9050919050565b6000613d0c82613cdf565b9050919050565b6000613d1e82613d01565b9050919050565b613d2e81613d13565b82525050565b6000602082019050613d496000830184613d25565b92915050565b613d5881613c29565b82525050565b6000602082019050613d736000830184613d4f565b92915050565b600080600060608486031215613d9257613d91613bc1565b5b6000613da086828701613c14565b9350506020613db186828701613c14565b9250506040613dc286828701613c4a565b9150509250925092565b600060208284031215613de257613de1613bc1565b5b6000613df084828501613c4a565b91505092915050565b6000613e0482613cdf565b9050919050565b6000613e1682613df9565b9050919050565b613e2681613e0b565b82525050565b6000602082019050613e416000830184613e1d565b92915050565b600060ff82169050919050565b613e5d81613e47565b82525050565b6000602082019050613e786000830184613e54565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ea357613ea2613e7e565b5b8235905067ffffffffffffffff811115613ec057613ebf613e83565b5b602083019150836020820283011115613edc57613edb613e88565b5b9250929050565b613eec81613c9f565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600080600060408486031215613f2857613f27613bc1565b5b600084013567ffffffffffffffff811115613f4657613f45613bc6565b5b613f5286828701613e8d565b93509350506020613f6586828701613efa565b9150509250925092565b613f7881613beb565b82525050565b6000602082019050613f936000830184613f6f565b92915050565b600060208284031215613faf57613fae613bc1565b5b6000613fbd84828501613c14565b91505092915050565b600060208284031215613fdc57613fdb613bc1565b5b6000613fea84828501613efa565b91505092915050565b6000806040838503121561400a57614009613bc1565b5b600061401885828601613c4a565b925050602061402985828601613c4a565b9150509250929050565b6000806040838503121561404a57614049613bc1565b5b600061405885828601613c14565b925050602061406985828601613c14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140ba57607f821691505b6020821081036140cd576140cc614073565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b600061412f602983613b10565b915061413a826140d3565b604082019050919050565b6000602082019050818103600083015261415e81614122565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061419b602083613b10565b91506141a682614165565b602082019050919050565b600060208201905081810360008301526141ca8161418e565b9050919050565b7f4c69717569646974792069732063757272656e746c79206c6f636b6564000000600082015250565b6000614207601d83613b10565b9150614212826141d1565b602082019050919050565b60006020820190508181036000830152614236816141fa565b9050919050565b60008151905061424c81613c33565b92915050565b60006020828403121561426857614267613bc1565b5b60006142768482850161423d565b91505092915050565b60006040820190506142946000830185613f6f565b6142a16020830184613d4f565b9392505050565b6000815190506142b781613ee3565b92915050565b6000602082840312156142d3576142d2613bc1565b5b60006142e1848285016142a8565b91505092915050565b6000815190506142f981613bfd565b92915050565b60006020828403121561431557614314613bc1565b5b6000614323848285016142ea565b91505092915050565b6000819050919050565b600061435161434c6143478461432c565b613cd5565b613c29565b9050919050565b61436181614336565b82525050565b600060e08201905061437c600083018a613f6f565b6143896020830189613f6f565b6143966040830188613d4f565b6143a36060830187614358565b6143b06080830186614358565b6143bd60a0830185613f6f565b6143ca60c0830184613d4f565b98975050505050505050565b600080604083850312156143ed576143ec613bc1565b5b60006143fb8582860161423d565b925050602061440c8582860161423d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445082613c29565b915061445b83613c29565b925082820261446981613c29565b915082820484148315176144805761447f614416565b5b5092915050565b7f4e6577206c6f636b2064617465206d757374206265206772656174657220746860008201527f616e206578697374696e67206c6f636b20646174650000000000000000000000602082015250565b60006144e3603583613b10565b91506144ee82614487565b604082019050919050565b60006020820190508181036000830152614512816144d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ac81613beb565b82525050565b60006145be83836145a3565b60208301905092915050565b6000602082019050919050565b60006145e282614577565b6145ec8185614582565b93506145f783614593565b8060005b8381101561462857815161460f88826145b2565b975061461a836145ca565b9250506001810190506145fb565b5085935050505092915050565b600060408201905061464a6000830185613d4f565b818103602083015261465c81846145d7565b90509392505050565b61466e82613b4b565b810181811067ffffffffffffffff8211171561468d5761468c614519565b5b80604052505050565b60006146a0613bb7565b90506146ac8282614665565b919050565b600067ffffffffffffffff8211156146cc576146cb614519565b5b602082029050602081019050919050565b60006146f06146eb846146b1565b614696565b9050808382526020820190506020840283018581111561471357614712613e88565b5b835b8181101561473c5780614728888261423d565b845260208401935050602081019050614715565b5050509392505050565b600082601f83011261475b5761475a613e7e565b5b815161476b8482602086016146dd565b91505092915050565b60006020828403121561478a57614789613bc1565b5b600082015167ffffffffffffffff8111156147a8576147a7613bc6565b5b6147b484828501614746565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614819602283613b10565b9150614824826147bd565b604082019050919050565b600060208201905081810360008301526148488161480c565b9050919050565b60006040820190506148646000830185613f6f565b6148716020830184613f6f565b9392505050565b6000819050919050565b600061489d61489861489384614878565b613cd5565b613c29565b9050919050565b6148ad81614882565b82525050565b600060c0820190506148c86000830189613f6f565b6148d56020830188613d4f565b6148e260408301876148a4565b6148ef60608301866148a4565b6148fc6080830185613f6f565b61490960a0830184613d4f565b979650505050505050565b60008060006060848603121561492d5761492c613bc1565b5b600061493b8682870161423d565b935050602061494c8682870161423d565b925050604061495d8682870161423d565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149c3602683613b10565b91506149ce82614967565b604082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b6000604082019050614a0e6000830185613d4f565b614a1b6020830184613d4f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a7e602483613b10565b9150614a8982614a22565b604082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b10602283613b10565b9150614b1b82614ab4565b604082019050919050565b60006020820190508181036000830152614b3f81614b03565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ba2602583613b10565b9150614bad82614b46565b604082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c34602383613b10565b9150614c3f82614bd8565b604082019050919050565b60006020820190508181036000830152614c6381614c27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614cc6602983613b10565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000614d58602583613b10565b9150614d6382614cfc565b604082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b6000614d9982613c29565b9150614da483613c29565b9250828203905081811115614dbc57614dbb614416565b5b92915050565b6000614dcd82613c29565b9150614dd883613c29565b9250828201905080821115614df057614def614416565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e2c601b83613b10565b9150614e3782614df6565b602082019050919050565b60006020820190508181036000830152614e5b81614e1f565b9050919050565b6000614e6d82613c29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e9f57614e9e614416565b5b600182019050919050565b600060a082019050614ebf6000830188613d4f565b614ecc60208301876148a4565b8181036040830152614ede81866145d7565b9050614eed6060830185613f6f565b614efa6080830184613d4f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f3e82613c29565b9150614f4983613c29565b925082614f5957614f58614f04565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc0602183613b10565b9150614fcb82614f64565b604082019050919050565b60006020820190508181036000830152614fef81614fb3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615052602183613b10565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ad91f4cdaf94beca32e9b08caec133d37803bc9bf67f233cfc61c655aaa312bf64736f6c634300081100336080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ed9190620002ca565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013a57600080fd5b506040516200124f3803806200124f8339818101604052810190620001609190620002ca565b6000620001726200025860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002fc565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002928262000265565b9050919050565b620002a48162000285565b8114620002b057600080fd5b50565b600081519050620002c48162000299565b92915050565b600060208284031215620002e357620002e262000260565b5b6000620002f384828501620002b3565b91505092915050565b610f43806200030c6000396000f3fe6080604052600436106100745760003560e01c80638da5cb5b1161004e5780638da5cb5b146100eb578063acdf4f1814610116578063bcdb446b1461012d578063f2fde38b146101445761007b565b8063715018a61461008057806382edaf941461009757806384afff9b146100c25761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b5061009561016d565b005b3480156100a357600080fd5b506100ac6102c0565b6040516100b99190610a56565b60405180910390f35b3480156100ce57600080fd5b506100e960048036038101906100e49190610ab4565b6102e6565b005b3480156100f757600080fd5b506101006103f4565b60405161010d9190610af0565b60405180910390f35b34801561012257600080fd5b5061012b61041d565b005b34801561013957600080fd5b506101426107b8565b005b34801561015057600080fd5b5061016b60048036038101906101669190610ab4565b61080e565b005b6101756109cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f990610b68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103269190610af0565b602060405180830381865afa158015610343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103679190610bbe565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61038d6103f4565b836040518363ffffffff1660e01b81526004016103ab929190610bfa565b6020604051808303816000875af11580156103ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ee9190610c5b565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600267ffffffffffffffff81111561043a57610439610c88565b5b6040519080825280602002602001820160405280156104685781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fc9190610ccc565b816000815181106105105761050f610cf9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061058157610580610cf9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106189190610af0565b602060405180830381865afa158015610635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106599190610bbe565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016106da929190610bfa565b6020604051808303816000875af11580156106f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071d9190610c5b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958260008530426040518663ffffffff1660e01b8152600401610782959493929190610e21565b600060405180830381600087803b15801561079c57600080fd5b505af11580156107b0573d6000803e3d6000fd5b505050505050565b60004790506107c56103f4565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561080a573d6000803e3d6000fd5b5050565b6108166109cf565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90610b68565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090990610eed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610a1c610a17610a12846109d7565b6109f7565b6109d7565b9050919050565b6000610a2e82610a01565b9050919050565b6000610a4082610a23565b9050919050565b610a5081610a35565b82525050565b6000602082019050610a6b6000830184610a47565b92915050565b600080fd5b6000610a81826109d7565b9050919050565b610a9181610a76565b8114610a9c57600080fd5b50565b600081359050610aae81610a88565b92915050565b600060208284031215610aca57610ac9610a71565b5b6000610ad884828501610a9f565b91505092915050565b610aea81610a76565b82525050565b6000602082019050610b056000830184610ae1565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610b52602083610b0b565b9150610b5d82610b1c565b602082019050919050565b60006020820190508181036000830152610b8181610b45565b9050919050565b6000819050919050565b610b9b81610b88565b8114610ba657600080fd5b50565b600081519050610bb881610b92565b92915050565b600060208284031215610bd457610bd3610a71565b5b6000610be284828501610ba9565b91505092915050565b610bf481610b88565b82525050565b6000604082019050610c0f6000830185610ae1565b610c1c6020830184610beb565b9392505050565b60008115159050919050565b610c3881610c23565b8114610c4357600080fd5b50565b600081519050610c5581610c2f565b92915050565b600060208284031215610c7157610c70610a71565b5b6000610c7f84828501610c46565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050610cc681610a88565b92915050565b600060208284031215610ce257610ce1610a71565b5b6000610cf084828501610cb7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000610d4d610d48610d4384610d28565b6109f7565b610b88565b9050919050565b610d5d81610d32565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610d9881610a76565b82525050565b6000610daa8383610d8f565b60208301905092915050565b6000602082019050919050565b6000610dce82610d63565b610dd88185610d6e565b9350610de383610d7f565b8060005b83811015610e14578151610dfb8882610d9e565b9750610e0683610db6565b925050600181019050610de7565b5085935050505092915050565b600060a082019050610e366000830188610beb565b610e436020830187610d54565b8181036040830152610e558186610dc3565b9050610e646060830185610ae1565b610e716080830184610beb565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610ed7602683610b0b565b9150610ee282610e7b565b604082019050919050565b60006020820190508181036000830152610f0681610eca565b905091905056fea264697066735822122059f8b8193f5d1ea9ea003db34ec4290669281d653a4ef28414109c2a14b03d9d64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063564c2950116101395780639f261980116100b6578063d6acac221161007a578063d6acac2214610857578063d9058bd514610882578063dc13b31c146108ab578063dd62ed3e146108d6578063e9ac0e5914610913578063f2fde38b1461092a57610251565b80639f26198014610760578063a457c2d71461078b578063a9059cbb146107c8578063b2abbbc414610805578063d16336491461082e57610251565b8063715018a6116100fd578063715018a61461069f57806384afff9b146106b65780638da5cb5b146106df57806395d89b411461070a578063979957061461073557610251565b8063564c2950146105b857806356a060a2146105e15780636c0a24eb1461060c5780636ddd17131461063757806370a082311461066257610251565b80632bfbd9cf116101c757806348c54b9d1161018b57806348c54b9d146104e357806348fad638146104fa57806349bd5a5e146105255780635342acb41461055057806354a5df1f1461058d57610251565b80632bfbd9cf146103fe578063313ce567146104275780633950935114610452578063441d801f1461048f578063482e53ff146104b857610251565b80631f61fd5a1161020e5780631f61fd5a1461032b57806323b872dd146103565780632743b3cb1461039357806327a14fc2146103aa5780632996f972146103d357610251565b806306fdde031461025657806308003f7814610281578063095ea7b3146102985780631694505e146102d557806318160ddd1461030057610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b610953565b6040516102789190613b95565b60405180910390f35b34801561028d57600080fd5b506102966109e5565b005b3480156102a457600080fd5b506102bf60048036038101906102ba9190613c5f565b610a34565b6040516102cc9190613cba565b60405180910390f35b3480156102e157600080fd5b506102ea610a52565b6040516102f79190613d34565b60405180910390f35b34801561030c57600080fd5b50610315610a78565b6040516103229190613d5e565b60405180910390f35b34801561033757600080fd5b50610340610a82565b60405161034d9190613d5e565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190613d79565b610a88565b60405161038a9190613cba565b60405180910390f35b34801561039f57600080fd5b506103a8610b61565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613dcc565b610ee3565b005b3480156103df57600080fd5b506103e8610f91565b6040516103f59190613e2c565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190613dcc565b610fb7565b005b34801561043357600080fd5b5061043c61109a565b6040516104499190613e63565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190613c5f565b6110b1565b6040516104869190613cba565b60405180910390f35b34801561049b57600080fd5b506104b660048036038101906104b19190613f0f565b611164565b005b3480156104c457600080fd5b506104cd611209565b6040516104da9190613d5e565b60405180910390f35b3480156104ef57600080fd5b506104f861120f565b005b34801561050657600080fd5b5061050f611261565b60405161051c9190613d5e565b60405180910390f35b34801561053157600080fd5b5061053a611267565b6040516105479190613f7e565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190613f99565b61128d565b6040516105849190613cba565b60405180910390f35b34801561059957600080fd5b506105a26112e3565b6040516105af9190613d5e565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190613fc6565b6112e9565b005b3480156105ed57600080fd5b506105f661139b565b6040516106039190613cba565b60405180910390f35b34801561061857600080fd5b506106216113a8565b60405161062e9190613d5e565b60405180910390f35b34801561064357600080fd5b5061064c6113ae565b6040516106599190613cba565b60405180910390f35b34801561066e57600080fd5b5061068960048036038101906106849190613f99565b6113c1565b6040516106969190613d5e565b60405180910390f35b3480156106ab57600080fd5b506106b461140a565b005b3480156106c257600080fd5b506106dd60048036038101906106d89190613f99565b61155d565b005b3480156106eb57600080fd5b506106f4611686565b6040516107019190613f7e565b60405180910390f35b34801561071657600080fd5b5061071f6116af565b60405161072c9190613b95565b60405180910390f35b34801561074157600080fd5b5061074a611741565b6040516107579190613d5e565b60405180910390f35b34801561076c57600080fd5b50610775611984565b6040516107829190613d5e565b60405180910390f35b34801561079757600080fd5b506107b260048036038101906107ad9190613c5f565b61198a565b6040516107bf9190613cba565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea9190613c5f565b611a57565b6040516107fc9190613cba565b60405180910390f35b34801561081157600080fd5b5061082c60048036038101906108279190613dcc565b611a75565b005b34801561083a57600080fd5b5061085560048036038101906108509190613dcc565b611b14565b005b34801561086357600080fd5b5061086c61204e565b6040516108799190613d5e565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a49190613ff3565b612054565b005b3480156108b757600080fd5b506108c06120fb565b6040516108cd9190613d5e565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614033565b612101565b60405161090a9190613d5e565b60405180910390f35b34801561091f57600080fd5b50610928612188565b005b34801561093657600080fd5b50610951600480360381019061094c9190613f99565b6121f9565b005b606060088054610962906140a2565b80601f016020809104026020016040519081016040528092919081815260200182805461098e906140a2565b80156109db5780601f106109b0576101008083540402835291602001916109db565b820191906000526020600020905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b601354421015610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190614145565b60405180910390fd5b610a326123ba565b565b6000610a48610a4161283a565b8484612842565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60115481565b6000610a95848484612a0b565b610b5684610aa161283a565b610b518560405180606001604052806028815260200161508960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b0761283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ff9092919063ffffffff16565b612842565b600190509392505050565b610b6961283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed906141b1565b60405180910390fd5b4260145410610c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c319061421d565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c979190613f7e565b602060405180830381865afa158015610cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd89190614252565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d5992919061427f565b6020604051808303816000875af1158015610d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9c91906142bd565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6c91906142ff565b3084600180610e79611686565b426040518863ffffffff1660e01b8152600401610e9c9796959493929190614367565b60408051808303816000875af1158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede91906143d6565b505050565b610eeb61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f906141b1565b60405180910390fd5b633b9aca0081610f889190614445565b600e8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610fbf61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611043906141b1565b60405180910390fd5b6014548111611090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611087906144f9565b60405180910390fd5b8060148190555050565b6000600a60009054906101000a900460ff16905090565b600061115a6110be61283a565b8461115585600660006110cf61283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b612842565b6001905092915050565b61116c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f0906141b1565b60405180910390fd5b6112048383836133c1565b505050565b60125481565b600061121a306113c1565b9050600081111561125e57600c60009054906101000a900460ff1615801561124e5750600c60019054906101000a900460ff165b1561125d5761125c8161346c565b5b5b50565b60135481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b6112f161283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611375906141b1565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b6000601054421015905090565b600e5481565b600c60019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61141261283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611496906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161159d9190613f7e565b602060405180830381865afa1580156115ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115de9190614252565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161163d92919061427f565b6020604051808303816000875af115801561165c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168091906142bd565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546116be906140a2565b80601f01602080910402602001604051908101604052809291908181526020018280546116ea906140a2565b80156117375780601f1061170c57610100808354040283529160200191611737565b820191906000526020600020905b81548152906001019060200180831161171a57829003601f168201915b5050505050905090565b600080600267ffffffffffffffff81111561175f5761175e614519565b5b60405190808252806020026020018201604052801561178d5781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182191906142ff565b8160008151811061183557611834614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061188457611883614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b815260040161191d929190614635565b600060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119639190614774565b60018151811061197657611975614548565b5b602002602001015191505090565b60145481565b6000611a4d61199761283a565b84611a48856040518060600160405280602581526020016150b160259139600660006119c161283a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132ff9092919063ffffffff16565b612842565b6001905092915050565b6000611a6b611a6461283a565b8484612a0b565b6001905092915050565b611a7d61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b01906141b1565b60405180910390fd5b80600d8190555050565b611b1c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba0906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c319061482f565b60405180910390fd5b611c6930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612842565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa91906142ff565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da791906142ff565b6040518363ffffffff1660e01b8152600401611dc492919061484f565b6020604051808303816000875af1158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0791906142ff565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611e90306113c1565b60008030426040518863ffffffff1660e01b8152600401611eb6969594939291906148b3565b60606040518083038185885af1158015611ed4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ef99190614914565b5050506001600c60016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611fb692919061427f565b6020604051808303816000875af1158015611fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff991906142bd565b50612020612011603c836137a090919063ffffffff16565b4261336390919063ffffffff16565b6010819055506010546013819055506120456203f4804261336390919063ffffffff16565b60148190555050565b60105481565b61205c61283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e0906141b1565b60405180910390fd5b81601181905550806012819055505050565b600f5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121f5573d6000803e3d6000fd5b5050565b61220161283a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612285906141b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f4906149d9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c60006101000a81548160ff0219169083151502179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016124329190613f7e565b602060405180830381865afa15801561244f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124739190614252565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016124f492919061427f565b6020604051808303816000875af1158015612513573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253791906142bd565b50600061254f6012548361381a90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262091906142ff565b3084600180601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161266b9796959493929190614367565b60408051808303816000875af1158015612689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ad91906143d6565b5050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acdf4f186040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561271957600080fd5b505af115801561272d573d6000803e3d6000fd5b50505050600061275e601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113c1565b9050600081111561281a57612795601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613864565b6127aa81600f5461336390919063ffffffff16565b600f819055506127d86127c9603c6011546137a090919063ffffffff16565b4261336390919063ffffffff16565b6013819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d816013546040516128119291906149f9565b60405180910390a15b5050506000600c60006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a890614a94565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291790614b26565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129fe9190613d5e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7190614bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae090614c4a565b60405180910390fd5b60008111612b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2390614cdc565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612bd35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c125750612be2611686565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612c515750612c21611686565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050612c5b611686565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612cc95750612c99611686565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612d0157503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d5b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561303d576000612dd784612dc9876113c1565b61336390919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612e7457600e54811115612e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6a90614d6e565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015612f205750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612f6b57600e54811115612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190614d6e565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156130165750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561303b5760135442106130315761302c6123ba565b61303a565b6130396139ed565b5b5b505b61304561139b565b15613085578061305657600061307e565b61307d606461306f6005866137a090919063ffffffff16565b61381a90919063ffffffff16565b5b91506130bc565b806130915760006130b9565b6130b860646130aa6062866137a090919063ffffffff16565b61381a90919063ffffffff16565b5b91505b60006130d18385613a5890919063ffffffff16565b905061312584600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131ba81600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061324f83600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516132ef9190613d5e565b60405180910390a3505050505050565b6000838311158290613347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333e9190613b95565b60405180910390fd5b50600083856133569190614d8e565b9050809150509392505050565b60008082846133729190614dc2565b9050838110156133b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ae90614e42565b60405180910390fd5b8091505092915050565b60005b838390508110156134665760008484838181106133e4576133e3614548565b5b90506020020160208101906133f99190613f99565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061345e90614e62565b9150506133c4565b50505050565b6000600267ffffffffffffffff81111561348957613488614519565b5b6040519080825280602002602001820160405280156134b75781602001602082028036833780820191505090505b50905030816000815181106134cf576134ce614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359a91906142ff565b816001815181106135ae576135ad614548565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061361530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612842565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613679959493929190614eaa565b600060405180830381600087803b15801561369357600080fd5b505af11580156136a7573d6000803e3d6000fd5b50505050600047905060006136c660028361381a90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613730573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613799573d6000803e3d6000fd5b5050505050565b60008083036137b25760009050613814565b600082846137c09190614445565b90508284826137cf9190614f33565b1461380f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380690614fd6565b60405180910390fd5b809150505b92915050565b600061385c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613aa2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138ca90615068565b60405180910390fd5b6138e881600b54613a5890919063ffffffff16565b600b8190555061394081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a5890919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516139e19190613d5e565b60405180910390a35050565b60006139f8306113c1565b90506000811115613a55576000613a0d611741565b9050808210158015613a2c5750600c60009054906101000a900460ff16155b8015613a445750600c60019054906101000a900460ff165b15613a5357613a528161346c565b5b505b50565b6000613a9a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506132ff565b905092915050565b60008083118290613ae9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae09190613b95565b60405180910390fd5b5060008385613af89190614f33565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b3f578082015181840152602081019050613b24565b60008484015250505050565b6000601f19601f8301169050919050565b6000613b6782613b05565b613b718185613b10565b9350613b81818560208601613b21565b613b8a81613b4b565b840191505092915050565b60006020820190508181036000830152613baf8184613b5c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bf682613bcb565b9050919050565b613c0681613beb565b8114613c1157600080fd5b50565b600081359050613c2381613bfd565b92915050565b6000819050919050565b613c3c81613c29565b8114613c4757600080fd5b50565b600081359050613c5981613c33565b92915050565b60008060408385031215613c7657613c75613bc1565b5b6000613c8485828601613c14565b9250506020613c9585828601613c4a565b9150509250929050565b60008115159050919050565b613cb481613c9f565b82525050565b6000602082019050613ccf6000830184613cab565b92915050565b6000819050919050565b6000613cfa613cf5613cf084613bcb565b613cd5565b613bcb565b9050919050565b6000613d0c82613cdf565b9050919050565b6000613d1e82613d01565b9050919050565b613d2e81613d13565b82525050565b6000602082019050613d496000830184613d25565b92915050565b613d5881613c29565b82525050565b6000602082019050613d736000830184613d4f565b92915050565b600080600060608486031215613d9257613d91613bc1565b5b6000613da086828701613c14565b9350506020613db186828701613c14565b9250506040613dc286828701613c4a565b9150509250925092565b600060208284031215613de257613de1613bc1565b5b6000613df084828501613c4a565b91505092915050565b6000613e0482613cdf565b9050919050565b6000613e1682613df9565b9050919050565b613e2681613e0b565b82525050565b6000602082019050613e416000830184613e1d565b92915050565b600060ff82169050919050565b613e5d81613e47565b82525050565b6000602082019050613e786000830184613e54565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613ea357613ea2613e7e565b5b8235905067ffffffffffffffff811115613ec057613ebf613e83565b5b602083019150836020820283011115613edc57613edb613e88565b5b9250929050565b613eec81613c9f565b8114613ef757600080fd5b50565b600081359050613f0981613ee3565b92915050565b600080600060408486031215613f2857613f27613bc1565b5b600084013567ffffffffffffffff811115613f4657613f45613bc6565b5b613f5286828701613e8d565b93509350506020613f6586828701613efa565b9150509250925092565b613f7881613beb565b82525050565b6000602082019050613f936000830184613f6f565b92915050565b600060208284031215613faf57613fae613bc1565b5b6000613fbd84828501613c14565b91505092915050565b600060208284031215613fdc57613fdb613bc1565b5b6000613fea84828501613efa565b91505092915050565b6000806040838503121561400a57614009613bc1565b5b600061401885828601613c4a565b925050602061402985828601613c4a565b9150509250929050565b6000806040838503121561404a57614049613bc1565b5b600061405885828601613c14565b925050602061406985828601613c14565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140ba57607f821691505b6020821081036140cd576140cc614073565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b600061412f602983613b10565b915061413a826140d3565b604082019050919050565b6000602082019050818103600083015261415e81614122565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061419b602083613b10565b91506141a682614165565b602082019050919050565b600060208201905081810360008301526141ca8161418e565b9050919050565b7f4c69717569646974792069732063757272656e746c79206c6f636b6564000000600082015250565b6000614207601d83613b10565b9150614212826141d1565b602082019050919050565b60006020820190508181036000830152614236816141fa565b9050919050565b60008151905061424c81613c33565b92915050565b60006020828403121561426857614267613bc1565b5b60006142768482850161423d565b91505092915050565b60006040820190506142946000830185613f6f565b6142a16020830184613d4f565b9392505050565b6000815190506142b781613ee3565b92915050565b6000602082840312156142d3576142d2613bc1565b5b60006142e1848285016142a8565b91505092915050565b6000815190506142f981613bfd565b92915050565b60006020828403121561431557614314613bc1565b5b6000614323848285016142ea565b91505092915050565b6000819050919050565b600061435161434c6143478461432c565b613cd5565b613c29565b9050919050565b61436181614336565b82525050565b600060e08201905061437c600083018a613f6f565b6143896020830189613f6f565b6143966040830188613d4f565b6143a36060830187614358565b6143b06080830186614358565b6143bd60a0830185613f6f565b6143ca60c0830184613d4f565b98975050505050505050565b600080604083850312156143ed576143ec613bc1565b5b60006143fb8582860161423d565b925050602061440c8582860161423d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061445082613c29565b915061445b83613c29565b925082820261446981613c29565b915082820484148315176144805761447f614416565b5b5092915050565b7f4e6577206c6f636b2064617465206d757374206265206772656174657220746860008201527f616e206578697374696e67206c6f636b20646174650000000000000000000000602082015250565b60006144e3603583613b10565b91506144ee82614487565b604082019050919050565b60006020820190508181036000830152614512816144d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ac81613beb565b82525050565b60006145be83836145a3565b60208301905092915050565b6000602082019050919050565b60006145e282614577565b6145ec8185614582565b93506145f783614593565b8060005b8381101561462857815161460f88826145b2565b975061461a836145ca565b9250506001810190506145fb565b5085935050505092915050565b600060408201905061464a6000830185613d4f565b818103602083015261465c81846145d7565b90509392505050565b61466e82613b4b565b810181811067ffffffffffffffff8211171561468d5761468c614519565b5b80604052505050565b60006146a0613bb7565b90506146ac8282614665565b919050565b600067ffffffffffffffff8211156146cc576146cb614519565b5b602082029050602081019050919050565b60006146f06146eb846146b1565b614696565b9050808382526020820190506020840283018581111561471357614712613e88565b5b835b8181101561473c5780614728888261423d565b845260208401935050602081019050614715565b5050509392505050565b600082601f83011261475b5761475a613e7e565b5b815161476b8482602086016146dd565b91505092915050565b60006020828403121561478a57614789613bc1565b5b600082015167ffffffffffffffff8111156147a8576147a7613bc6565b5b6147b484828501614746565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614819602283613b10565b9150614824826147bd565b604082019050919050565b600060208201905081810360008301526148488161480c565b9050919050565b60006040820190506148646000830185613f6f565b6148716020830184613f6f565b9392505050565b6000819050919050565b600061489d61489861489384614878565b613cd5565b613c29565b9050919050565b6148ad81614882565b82525050565b600060c0820190506148c86000830189613f6f565b6148d56020830188613d4f565b6148e260408301876148a4565b6148ef60608301866148a4565b6148fc6080830185613f6f565b61490960a0830184613d4f565b979650505050505050565b60008060006060848603121561492d5761492c613bc1565b5b600061493b8682870161423d565b935050602061494c8682870161423d565b925050604061495d8682870161423d565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006149c3602683613b10565b91506149ce82614967565b604082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b6000604082019050614a0e6000830185613d4f565b614a1b6020830184613d4f565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614a7e602483613b10565b9150614a8982614a22565b604082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b10602283613b10565b9150614b1b82614ab4565b604082019050919050565b60006020820190508181036000830152614b3f81614b03565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ba2602583613b10565b9150614bad82614b46565b604082019050919050565b60006020820190508181036000830152614bd181614b95565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614c34602383613b10565b9150614c3f82614bd8565b604082019050919050565b60006020820190508181036000830152614c6381614c27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614cc6602983613b10565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000614d58602583613b10565b9150614d6382614cfc565b604082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b6000614d9982613c29565b9150614da483613c29565b9250828203905081811115614dbc57614dbb614416565b5b92915050565b6000614dcd82613c29565b9150614dd883613c29565b9250828201905080821115614df057614def614416565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e2c601b83613b10565b9150614e3782614df6565b602082019050919050565b60006020820190508181036000830152614e5b81614e1f565b9050919050565b6000614e6d82613c29565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e9f57614e9e614416565b5b600182019050919050565b600060a082019050614ebf6000830188613d4f565b614ecc60208301876148a4565b8181036040830152614ede81866145d7565b9050614eed6060830185613f6f565b614efa6080830184613d4f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f3e82613c29565b9150614f4983613c29565b925082614f5957614f58614f04565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc0602183613b10565b9150614fcb82614f64565b604082019050919050565b60006020820190508181036000830152614fef81614fb3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000615052602183613b10565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ad91f4cdaf94beca32e9b08caec133d37803bc9bf67f233cfc61c655aaa312bf64736f6c63430008110033

Deployed Bytecode Sourcemap

9085:12908:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10933:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15823:190;;;;;;;;;;;;;:::i;:::-;;11766:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9361:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11210:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10323:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11935:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:524;;;;;;;;;;;;;:::i;:::-;;12759:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10570:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13834:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11119:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12256:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13115:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10425:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19713:283;;;;;;;;;;;;;:::i;:::-;;10485:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9474:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17360:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10110:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17246:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14067:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10176:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10072:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11313:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7083:148;;;;;;;;;;;;;:::i;:::-;;21749:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6869:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11024:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21136:275;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10530:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12482:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11440:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21419:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14187:922;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10288:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12902:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10243:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11615:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21586:155;;;;;;;;;;;;;:::i;:::-;;7239:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10933:83;10970:13;11003:5;10996:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10933:83;:::o;15823:190::-;15892:26;;15873:15;:45;;15865:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;15976:29;:27;:29::i;:::-;15823:190::o;11766:161::-;11841:4;11858:39;11867:12;:10;:12::i;:::-;11881:7;11890:6;11858:8;:39::i;:::-;11915:4;11908:11;;11766:161;;;;:::o;9361:106::-;;;;;;;;;;;;;:::o;11210:95::-;11263:7;11290;;11283:14;;11210:95;:::o;10323:41::-;;;;:::o;11935:313::-;12033:4;12050:36;12060:6;12068:9;12079:6;12050:9;:36::i;:::-;12097:121;12106:6;12114:12;:10;:12::i;:::-;12128:89;12166:6;12128:89;;;;;;;;;;;;;;;;;:11;:19;12140:6;12128:19;;;;;;;;;;;;;;;:33;12148:12;:10;:12::i;:::-;12128:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12097:8;:121::i;:::-;12236:4;12229:11;;11935:313;;;;;:::o;15291:524::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15381:15:::1;15359:19;;:37;15351:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15441:14;15465:13;;;;;;;;;;;15458:31;;;15498:4;15458:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15441:63;;15522:13;;;;;;;;;;;15515:29;;;15553:15;;;;;;;;;;;15571:9;15515:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15592:15;;;;;;;;;;;:31;;;15638:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15683:4;15703:9;15727:1;15743::::0;15759:7:::1;:5;:7::i;:::-;15781:15;15592:215;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15340:475;15291:524::o:0;12759:135::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12879:7:::1;12861:15;:25;;;;:::i;:::-;12842:16;:44;;;;12759:135:::0;:::o;10570:63::-;;;;;;;;;;;;;:::o;13834:225::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13930:19:::1;;13916:11;:33;13908:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14040:11;14018:19;:33;;;;13834:225:::0;:::o;11119:83::-;11160:5;11185:9;;;;;;;;;;;11178:16;;11119:83;:::o;12256:218::-;12344:4;12361:83;12370:12;:10;:12::i;:::-;12384:7;12393:50;12432:10;12393:11;:25;12405:12;:10;:12::i;:::-;12393:25;;;;;;;;;;;;;;;:34;12419:7;12393:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12361:8;:83::i;:::-;12462:4;12455:11;;12256:218;;;;:::o;13115:161::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13227:41:::1;13240:9;;13251:16;13227:12;:41::i;:::-;13115:161:::0;;;:::o;10425:41::-;;;;:::o;19713:283::-;19756:28;19787:24;19805:4;19787:9;:24::i;:::-;19756:55;;19849:1;19826:20;:24;19822:167;;;19872:16;;;;;;;;;;;19871:17;:32;;;;;19892:11;;;;;;;;;;;19871:32;19867:111;;;19924:38;19941:20;19924:16;:38::i;:::-;19867:111;19822:167;19745:251;19713:283::o;10485:38::-;;;;:::o;9474:41::-;;;;;;;;;;;;;:::o;17360:124::-;17425:4;17449:18;:27;17468:7;17449:27;;;;;;;;;;;;;;;;;;;;;;;;;17442:34;;17360:124;;;:::o;10110:50::-;;;;:::o;17246:106::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17336:8:::1;17322:11;;:22;;;;;;;;;;;;;;;;;;17246:106:::0;:::o;14067:112::-;14112:4;14155:16;;14136:15;:35;;14129:42;;14067:112;:::o;10176:60::-;;;;:::o;10072:31::-;;;;;;;;;;;;;:::o;11313:119::-;11379:7;11406:9;:18;11416:7;11406:18;;;;;;;;;;;;;;;;11399:25;;11313:119;;;:::o;7083:148::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7190:1:::1;7153:40;;7174:6;::::0;::::1;;;;;;;;7153:40;;;;;;;;;;;;7221:1;7204:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7083:148::o:0;21749:241::-;21822:17;21849:15;21822:43;;21876:15;21894:10;:20;;;21923:4;21894:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21876:53;;21940:10;:19;;;21960:12;;;;;;;;;;;21974:7;21940:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21811:179;;21749:241;:::o;6869:79::-;6907:7;6934:6;;;;;;;;;;;6927:13;;6869:79;:::o;11024:87::-;11063:13;11096:7;11089:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11024:87;:::o;21136:275::-;21193:7;21214:21;21252:1;21238:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21214:40;;21275:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21265:4;21270:1;21265:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21326:4;21308;21313:1;21308:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21349:15;;;;;;;;;;;:29;;;21379:14;;21395:4;21349:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21401:1;21349:54;;;;;;;;:::i;:::-;;;;;;;;21342:61;;;21136:275;:::o;10530:31::-;;;;:::o;12482:269::-;12575:4;12592:129;12601:12;:10;:12::i;:::-;12615:7;12624:96;12663:15;12624:96;;;;;;;;;;;;;;;;;:11;:25;12636:12;:10;:12::i;:::-;12624:25;;;;;;;;;;;;;;;:34;12650:7;12624:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12592:8;:129::i;:::-;12739:4;12732:11;;12482:269;;;;:::o;11440:167::-;11518:4;11535:42;11545:12;:10;:12::i;:::-;11559:9;11570:6;11535:9;:42::i;:::-;11595:4;11588:11;;11440:167;;;;:::o;21419:122::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21518:15:::1;21501:14;:32;;;;21419:122:::0;:::o;14187:922::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14303:1:::1;14278:27;;:13;;;;;;;;;;;:27;;;14270:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14354:58;14371:4;14386:15;;;;;;;;;;;14404:7;;14354:8;:58::i;:::-;14457:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14439:55;;;14503:4;14510:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14439:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14423:13;;:110;;;;;;;;;;;;;;;;;;14544:15;;;;;;;;;;;:31;;;14583:21;14628:4;14648:24;14666:4;14648:9;:24::i;:::-;14687:1;14703::::0;14727:4:::1;14747:15;14544:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14788:4;14774:11;;:18;;;;;;;;;;;;;;;;;;14810:13;;;;;;;;;;;14803:29;;;14841:15;;;;;;;;;;;14859:14;14803:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14904:49;14924:28;14949:2;14924:20;:24;;:28;;;;:::i;:::-;14904:15;:19;;:49;;;;:::i;:::-;14885:16;:68;;;;14993:16;;14964:26;:45;;;;15042:27;15062:6;15042:15;:19;;:27;;;;:::i;:::-;15020:19;:49;;;;14187:922:::0;:::o;10288:28::-;;;;:::o;12902:205::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13033:18:::1;13009:21;:42;;;;13085:14;13062:20;:37;;;;12902:205:::0;;:::o;10243:38::-;;;;:::o;11615:143::-;11696:7;11723:11;:18;11735:5;11723:18;;;;;;;;;;;;;;;:27;11742:7;11723:27;;;;;;;;;;;;;;;;11716:34;;11615:143;;;;:::o;21586:155::-;21638:18;21659:21;21638:42;;21699:12;;;;;;;;;;;21691:30;;:42;21722:10;21691:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21627:114;21586:155::o;7239:244::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7348:1:::1;7328:22;;:8;:22;;::::0;7320:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7438:8;7409:38;;7430:6;::::0;::::1;;;;;;;;7409:38;;;;;;;;;;;;7467:8;7458:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7239:244:::0;:::o;16021:1217::-;9253:4;9234:16;;:23;;;;;;;;;;;;;;;;;;16091:14:::1;16115:13;;;;;;;;;;;16108:31;;;16148:4;16108:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16091:63;;16172:13;;;;;;;;;;;16165:29;;;16203:15;;;;;;;;;;;16221:9;16165:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16242:17;16262:35;16276:20;;16262:9;:13;;:35;;;;:::i;:::-;16242:55;;16308:15;;;;;;;;;;;:31;;;16354:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16399:4;16419:12;16446:1;16462::::0;16486:11:::1;;;;;;;;;;;16513:15;16308:231;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16603:11;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16741:23;16767:31;16785:11;;;;;;;;;;;16767:9;:31::i;:::-;16741:57;;16831:1;16813:15;:19;16810:421;;;16919:44;16933:11;;;;;;;;;;;16947:15;16919:5;:44::i;:::-;17004;17032:15;17004:23;;:27;;:44;;;;:::i;:::-;16978:23;:70;;;;17092:50;17112:29;17138:2;17112:21;;:25;;:29;;;;:::i;:::-;17092:15;:19;;:50;;;;:::i;:::-;17063:26;:79;;;;17162:57;17175:15;17192:26;;17162:57;;;;;;;:::i;:::-;;;;;;;;16810:421;16080:1158;;;9299:5:::0;9280:16;;:24;;;;;;;;;;;;;;;;;;16021:1217::o;3211:98::-;3264:7;3291:10;3284:17;;3211:98;:::o;17492:337::-;17602:1;17585:19;;:5;:19;;;17577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17683:1;17664:21;;:7;:21;;;17656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17767:6;17737:11;:18;17749:5;17737:18;;;;;;;;;;;;;;;:27;17756:7;17737:27;;;;;;;;;;;;;;;:36;;;;17805:7;17789:32;;17798:5;17789:32;;;17814:6;17789:32;;;;;;:::i;:::-;;;;;;;;17492:337;;;:::o;17837:1868::-;17941:1;17925:18;;:4;:18;;;17917:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18018:1;18004:16;;:2;:16;;;17996:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18088:1;18079:6;:10;18071:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18146:17;18174:13;18191:18;:24;18210:4;18191:24;;;;;;;;;;;;;;;;;;;;;;;;;18190:25;:52;;;;;18220:18;:22;18239:2;18220:22;;;;;;;;;;;;;;;;;;;;;;;;;18219:23;18190:52;:71;;;;;18254:7;:5;:7::i;:::-;18246:15;;:4;:15;;;;18190:71;:88;;;;;18271:7;:5;:7::i;:::-;18265:13;;:2;:13;;;;18190:88;18174:104;;18300:7;:5;:7::i;:::-;18292:15;;:4;:15;;;;:32;;;;;18317:7;:5;:7::i;:::-;18311:13;;:2;:13;;;;18292:32;:57;;;;;18344:4;18328:21;;:4;:21;;;;18292:57;:101;;;;;18381:11;;;;;;;;;;;18365:28;;:4;:28;;;;18292:101;:131;;;;;18411:11;;;;;;;;;;;18397:26;;:2;:26;;;;18292:131;18289:836;;;18440:21;18464:25;18482:6;18464:13;18474:2;18464:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;18440:49;;18516:13;;;;;;;;;;;18508:21;;:4;:21;;;18504:145;;18575:16;;18558:13;:33;;18550:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18504:145;18675:13;;;;;;;;;;;18667:21;;:4;:21;;;;:44;;;;;18698:13;;;;;;;;;;;18692:19;;:2;:19;;;;18667:44;18663:168;;;18757:16;;18740:13;:33;;18732:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18663:168;18857:13;;;;;;;;;;;18849:21;;:4;:21;;;;:44;;;;;18880:13;;;;;;;;;;;18874:19;;:2;:19;;;18849:44;18845:267;;;18936:26;;18917:15;:45;18914:183;;18987:29;:27;:29::i;:::-;18914:183;;;19065:12;:10;:12::i;:::-;18914:183;18845:267;18425:700;18289:836;19148:15;:13;:15::i;:::-;19145:261;;;19196:8;:37;;19232:1;19196:37;;;19207:22;19225:3;19207:13;19218:1;19207:6;:10;;:13;;;;:::i;:::-;:17;;:22;;;;:::i;:::-;19196:37;19184:49;;19145:261;;;19293:8;:38;;19330:1;19293:38;;;19304:23;19323:3;19304:14;19315:2;19304:6;:10;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;19293:38;19281:50;;19145:261;19416:22;19441:21;19452:9;19441:6;:10;;:21;;;;:::i;:::-;19416:46;;19491:27;19511:6;19491:9;:15;19501:4;19491:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;19473:9;:15;19483:4;19473:15;;;;;;;;;;;;;;;:45;;;;19545:33;19563:14;19545:9;:13;19555:2;19545:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;19529:9;:13;19539:2;19529:13;;;;;;;;;;;;;;;:49;;;;19616:39;19645:9;19616;:24;19634:4;19616:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19589:9;:24;19607:4;19589:24;;;;;;;;;;;;;;;:66;;;;19686:2;19671:26;;19680:4;19671:26;;;19690:6;19671:26;;;;;;:::i;:::-;;;;;;;;17906:1799;;;17837:1868;;;:::o;1683:192::-;1769:7;1802:1;1797;:6;;1805:12;1789:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1829:9;1845:1;1841;:5;;;;:::i;:::-;1829:17;;1866:1;1859:8;;;1683:192;;;;;:::o;1350:181::-;1408:7;1428:9;1444:1;1440;:5;;;;:::i;:::-;1428:17;;1469:1;1464;:6;;1456:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1522:1;1515:8;;;1350:181;;;;:::o;13590:236::-;13677:9;13672:147;13696:9;;:16;;13692:1;:20;13672:147;;;13734:12;13749:9;;13759:1;13749:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13734:27;;13803:4;13776:18;:24;13795:4;13776:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13719:100;13714:3;;;;;:::i;:::-;;;;13672:147;;;;13590:236;;;:::o;20386:742::-;20512:21;20550:1;20536:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20512:40;;20581:4;20563;20568:1;20563:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20607:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20597:4;20602:1;20597:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20640:62;20657:4;20672:15;;;;;;;;;;;20690:11;20640:8;:62::i;:::-;20713:15;;;;;;;;;;;:66;;;20794:11;20820:1;20836:4;20863;20883:15;20713:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20922:18;20943:21;20922:42;;20975:17;20995;21010:1;20995:10;:14;;:17;;;;:::i;:::-;20975:37;;21033:12;;;;;;;;;;;21025:30;;:41;21056:9;21025:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21085:13;;;;;;;;;;;21077:31;;:42;21109:9;21077:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20441:687;;;20386:742;:::o;1883:471::-;1941:7;2191:1;2186;:6;2182:47;;2216:1;2209:8;;;;2182:47;2241:9;2257:1;2253;:5;;;;:::i;:::-;2241:17;;2286:1;2281;2277;:5;;;;:::i;:::-;:10;2269:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2345:1;2338:8;;;1883:471;;;;;:::o;2362:132::-;2420:7;2447:39;2451:1;2454;2447:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2440:46;;2362:132;;;;:::o;13284:294::-;13378:1;13359:21;;:7;:21;;;13351:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13439:18;13451:5;13439:7;;:11;;:18;;;;:::i;:::-;13429:7;:28;;;;13489:29;13512:5;13489:9;:18;13499:7;13489:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;13468:9;:18;13478:7;13468:18;;;;;;;;;;;;;;;:50;;;;13560:1;13534:36;;13543:7;13534:36;;;13564:5;13534:36;;;;;;:::i;:::-;;;;;;;;13284:294;;:::o;20004:374::-;20045:28;20076:24;20094:4;20076:9;:24::i;:::-;20045:55;;20138:1;20115:20;:24;20111:260;;;20156:19;20178:26;:24;:26::i;:::-;20156:48;;20247:11;20223:20;:35;;:56;;;;;20263:16;;;;;;;;;;;20262:17;20223:56;:71;;;;;20283:11;;;;;;;;;;;20223:71;20219:141;;;20315:29;20332:11;20315:16;:29::i;:::-;20219:141;20141:230;20111:260;20034:344;20004:374::o;1539:136::-;1597:7;1624:43;1628:1;1631;1624:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1617:50;;1539:136;;;;:::o;2502:278::-;2588:7;2620:1;2616;:5;2623:12;2608:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2647:9;2663:1;2659;:5;;;;:::i;:::-;2647:17;;2771:1;2764:8;;;2502:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:134::-;5789:9;5822:37;5853:5;5822:37;:::i;:::-;5809:50;;5731:134;;;:::o;5871:162::-;5949:9;5982:45;6021:5;5982:45;:::i;:::-;5969:58;;5871:162;;;:::o;6039:187::-;6154:65;6213:5;6154:65;:::i;:::-;6149:3;6142:78;6039:187;;:::o;6232:278::-;6353:4;6391:2;6380:9;6376:18;6368:26;;6404:99;6500:1;6489:9;6485:17;6476:6;6404:99;:::i;:::-;6232:278;;;;:::o;6516:86::-;6551:7;6591:4;6584:5;6580:16;6569:27;;6516:86;;;:::o;6608:112::-;6691:22;6707:5;6691:22;:::i;:::-;6686:3;6679:35;6608:112;;:::o;6726:214::-;6815:4;6853:2;6842:9;6838:18;6830:26;;6866:67;6930:1;6919:9;6915:17;6906:6;6866:67;:::i;:::-;6726:214;;;;:::o;6946:117::-;7055:1;7052;7045:12;7069:117;7178:1;7175;7168:12;7192:117;7301:1;7298;7291:12;7332:568;7405:8;7415:6;7465:3;7458:4;7450:6;7446:17;7442:27;7432:122;;7473:79;;:::i;:::-;7432:122;7586:6;7573:20;7563:30;;7616:18;7608:6;7605:30;7602:117;;;7638:79;;:::i;:::-;7602:117;7752:4;7744:6;7740:17;7728:29;;7806:3;7798:4;7790:6;7786:17;7776:8;7772:32;7769:41;7766:128;;;7813:79;;:::i;:::-;7766:128;7332:568;;;;;:::o;7906:116::-;7976:21;7991:5;7976:21;:::i;:::-;7969:5;7966:32;7956:60;;8012:1;8009;8002:12;7956:60;7906:116;:::o;8028:133::-;8071:5;8109:6;8096:20;8087:29;;8125:30;8149:5;8125:30;:::i;:::-;8028:133;;;;:::o;8167:698::-;8259:6;8267;8275;8324:2;8312:9;8303:7;8299:23;8295:32;8292:119;;;8330:79;;:::i;:::-;8292:119;8478:1;8467:9;8463:17;8450:31;8508:18;8500:6;8497:30;8494:117;;;8530:79;;:::i;:::-;8494:117;8643:80;8715:7;8706:6;8695:9;8691:22;8643:80;:::i;:::-;8625:98;;;;8421:312;8772:2;8798:50;8840:7;8831:6;8820:9;8816:22;8798:50;:::i;:::-;8788:60;;8743:115;8167:698;;;;;:::o;8871:118::-;8958:24;8976:5;8958:24;:::i;:::-;8953:3;8946:37;8871:118;;:::o;8995:222::-;9088:4;9126:2;9115:9;9111:18;9103:26;;9139:71;9207:1;9196:9;9192:17;9183:6;9139:71;:::i;:::-;8995:222;;;;:::o;9223:329::-;9282:6;9331:2;9319:9;9310:7;9306:23;9302:32;9299:119;;;9337:79;;:::i;:::-;9299:119;9457:1;9482:53;9527:7;9518:6;9507:9;9503:22;9482:53;:::i;:::-;9472:63;;9428:117;9223:329;;;;:::o;9558:323::-;9614:6;9663:2;9651:9;9642:7;9638:23;9634:32;9631:119;;;9669:79;;:::i;:::-;9631:119;9789:1;9814:50;9856:7;9847:6;9836:9;9832:22;9814:50;:::i;:::-;9804:60;;9760:114;9558:323;;;;:::o;9887:474::-;9955:6;9963;10012:2;10000:9;9991:7;9987:23;9983:32;9980:119;;;10018:79;;:::i;:::-;9980:119;10138:1;10163:53;10208:7;10199:6;10188:9;10184:22;10163:53;:::i;:::-;10153:63;;10109:117;10265:2;10291:53;10336:7;10327:6;10316:9;10312:22;10291:53;:::i;:::-;10281:63;;10236:118;9887:474;;;;;:::o;10367:::-;10435:6;10443;10492:2;10480:9;10471:7;10467:23;10463:32;10460:119;;;10498:79;;:::i;:::-;10460:119;10618:1;10643:53;10688:7;10679:6;10668:9;10664:22;10643:53;:::i;:::-;10633:63;;10589:117;10745:2;10771:53;10816:7;10807:6;10796:9;10792:22;10771:53;:::i;:::-;10761:63;;10716:118;10367:474;;;;;:::o;10847:180::-;10895:77;10892:1;10885:88;10992:4;10989:1;10982:15;11016:4;11013:1;11006:15;11033:320;11077:6;11114:1;11108:4;11104:12;11094:22;;11161:1;11155:4;11151:12;11182:18;11172:81;;11238:4;11230:6;11226:17;11216:27;;11172:81;11300:2;11292:6;11289:14;11269:18;11266:38;11263:84;;11319:18;;:::i;:::-;11263:84;11084:269;11033:320;;;:::o;11359:228::-;11499:34;11495:1;11487:6;11483:14;11476:58;11568:11;11563:2;11555:6;11551:15;11544:36;11359:228;:::o;11593:366::-;11735:3;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11832:93;11921:3;11832:93;:::i;:::-;11950:2;11945:3;11941:12;11934:19;;11593:366;;;:::o;11965:419::-;12131:4;12169:2;12158:9;12154:18;12146:26;;12218:9;12212:4;12208:20;12204:1;12193:9;12189:17;12182:47;12246:131;12372:4;12246:131;:::i;:::-;12238:139;;11965:419;;;:::o;12390:182::-;12530:34;12526:1;12518:6;12514:14;12507:58;12390:182;:::o;12578:366::-;12720:3;12741:67;12805:2;12800:3;12741:67;:::i;:::-;12734:74;;12817:93;12906:3;12817:93;:::i;:::-;12935:2;12930:3;12926:12;12919:19;;12578:366;;;:::o;12950:419::-;13116:4;13154:2;13143:9;13139:18;13131:26;;13203:9;13197:4;13193:20;13189:1;13178:9;13174:17;13167:47;13231:131;13357:4;13231:131;:::i;:::-;13223:139;;12950:419;;;:::o;13375:179::-;13515:31;13511:1;13503:6;13499:14;13492:55;13375:179;:::o;13560:366::-;13702:3;13723:67;13787:2;13782:3;13723:67;:::i;:::-;13716:74;;13799:93;13888:3;13799:93;:::i;:::-;13917:2;13912:3;13908:12;13901:19;;13560:366;;;:::o;13932:419::-;14098:4;14136:2;14125:9;14121:18;14113:26;;14185:9;14179:4;14175:20;14171:1;14160:9;14156:17;14149:47;14213:131;14339:4;14213:131;:::i;:::-;14205:139;;13932:419;;;:::o;14357:143::-;14414:5;14445:6;14439:13;14430:22;;14461:33;14488:5;14461:33;:::i;:::-;14357:143;;;;:::o;14506:351::-;14576:6;14625:2;14613:9;14604:7;14600:23;14596:32;14593:119;;;14631:79;;:::i;:::-;14593:119;14751:1;14776:64;14832:7;14823:6;14812:9;14808:22;14776:64;:::i;:::-;14766:74;;14722:128;14506:351;;;;:::o;14863:332::-;14984:4;15022:2;15011:9;15007:18;14999:26;;15035:71;15103:1;15092:9;15088:17;15079:6;15035:71;:::i;:::-;15116:72;15184:2;15173:9;15169:18;15160:6;15116:72;:::i;:::-;14863:332;;;;;:::o;15201:137::-;15255:5;15286:6;15280:13;15271:22;;15302:30;15326:5;15302:30;:::i;:::-;15201:137;;;;:::o;15344:345::-;15411:6;15460:2;15448:9;15439:7;15435:23;15431:32;15428:119;;;15466:79;;:::i;:::-;15428:119;15586:1;15611:61;15664:7;15655:6;15644:9;15640:22;15611:61;:::i;:::-;15601:71;;15557:125;15344:345;;;;:::o;15695:143::-;15752:5;15783:6;15777:13;15768:22;;15799:33;15826:5;15799:33;:::i;:::-;15695:143;;;;:::o;15844:351::-;15914:6;15963:2;15951:9;15942:7;15938:23;15934:32;15931:119;;;15969:79;;:::i;:::-;15931:119;16089:1;16114:64;16170:7;16161:6;16150:9;16146:22;16114:64;:::i;:::-;16104:74;;16060:128;15844:351;;;;:::o;16201:85::-;16246:7;16275:5;16264:16;;16201:85;;;:::o;16292:158::-;16350:9;16383:61;16401:42;16410:32;16436:5;16410:32;:::i;:::-;16401:42;:::i;:::-;16383:61;:::i;:::-;16370:74;;16292:158;;;:::o;16456:147::-;16551:45;16590:5;16551:45;:::i;:::-;16546:3;16539:58;16456:147;;:::o;16609:918::-;16886:4;16924:3;16913:9;16909:19;16901:27;;16938:71;17006:1;16995:9;16991:17;16982:6;16938:71;:::i;:::-;17019:72;17087:2;17076:9;17072:18;17063:6;17019:72;:::i;:::-;17101;17169:2;17158:9;17154:18;17145:6;17101:72;:::i;:::-;17183:80;17259:2;17248:9;17244:18;17235:6;17183:80;:::i;:::-;17273:81;17349:3;17338:9;17334:19;17325:6;17273:81;:::i;:::-;17364:73;17432:3;17421:9;17417:19;17408:6;17364:73;:::i;:::-;17447;17515:3;17504:9;17500:19;17491:6;17447:73;:::i;:::-;16609:918;;;;;;;;;;:::o;17533:507::-;17612:6;17620;17669:2;17657:9;17648:7;17644:23;17640:32;17637:119;;;17675:79;;:::i;:::-;17637:119;17795:1;17820:64;17876:7;17867:6;17856:9;17852:22;17820:64;:::i;:::-;17810:74;;17766:128;17933:2;17959:64;18015:7;18006:6;17995:9;17991:22;17959:64;:::i;:::-;17949:74;;17904:129;17533:507;;;;;:::o;18046:180::-;18094:77;18091:1;18084:88;18191:4;18188:1;18181:15;18215:4;18212:1;18205:15;18232:410;18272:7;18295:20;18313:1;18295:20;:::i;:::-;18290:25;;18329:20;18347:1;18329:20;:::i;:::-;18324:25;;18384:1;18381;18377:9;18406:30;18424:11;18406:30;:::i;:::-;18395:41;;18585:1;18576:7;18572:15;18569:1;18566:22;18546:1;18539:9;18519:83;18496:139;;18615:18;;:::i;:::-;18496:139;18280:362;18232:410;;;;:::o;18648:240::-;18788:34;18784:1;18776:6;18772:14;18765:58;18857:23;18852:2;18844:6;18840:15;18833:48;18648:240;:::o;18894:366::-;19036:3;19057:67;19121:2;19116:3;19057:67;:::i;:::-;19050:74;;19133:93;19222:3;19133:93;:::i;:::-;19251:2;19246:3;19242:12;19235:19;;18894:366;;;:::o;19266:419::-;19432:4;19470:2;19459:9;19455:18;19447:26;;19519:9;19513:4;19509:20;19505:1;19494:9;19490:17;19483:47;19547:131;19673:4;19547:131;:::i;:::-;19539:139;;19266:419;;;:::o;19691:180::-;19739:77;19736:1;19729:88;19836:4;19833:1;19826:15;19860:4;19857:1;19850:15;19877:180;19925:77;19922:1;19915:88;20022:4;20019:1;20012:15;20046:4;20043:1;20036:15;20063:114;20130:6;20164:5;20158:12;20148:22;;20063:114;;;:::o;20183:184::-;20282:11;20316:6;20311:3;20304:19;20356:4;20351:3;20347:14;20332:29;;20183:184;;;;:::o;20373:132::-;20440:4;20463:3;20455:11;;20493:4;20488:3;20484:14;20476:22;;20373:132;;;:::o;20511:108::-;20588:24;20606:5;20588:24;:::i;:::-;20583:3;20576:37;20511:108;;:::o;20625:179::-;20694:10;20715:46;20757:3;20749:6;20715:46;:::i;:::-;20793:4;20788:3;20784:14;20770:28;;20625:179;;;;:::o;20810:113::-;20880:4;20912;20907:3;20903:14;20895:22;;20810:113;;;:::o;20959:732::-;21078:3;21107:54;21155:5;21107:54;:::i;:::-;21177:86;21256:6;21251:3;21177:86;:::i;:::-;21170:93;;21287:56;21337:5;21287:56;:::i;:::-;21366:7;21397:1;21382:284;21407:6;21404:1;21401:13;21382:284;;;21483:6;21477:13;21510:63;21569:3;21554:13;21510:63;:::i;:::-;21503:70;;21596:60;21649:6;21596:60;:::i;:::-;21586:70;;21442:224;21429:1;21426;21422:9;21417:14;;21382:284;;;21386:14;21682:3;21675:10;;21083:608;;;20959:732;;;;:::o;21697:483::-;21868:4;21906:2;21895:9;21891:18;21883:26;;21919:71;21987:1;21976:9;21972:17;21963:6;21919:71;:::i;:::-;22037:9;22031:4;22027:20;22022:2;22011:9;22007:18;22000:48;22065:108;22168:4;22159:6;22065:108;:::i;:::-;22057:116;;21697:483;;;;;:::o;22186:281::-;22269:27;22291:4;22269:27;:::i;:::-;22261:6;22257:40;22399:6;22387:10;22384:22;22363:18;22351:10;22348:34;22345:62;22342:88;;;22410:18;;:::i;:::-;22342:88;22450:10;22446:2;22439:22;22229:238;22186:281;;:::o;22473:129::-;22507:6;22534:20;;:::i;:::-;22524:30;;22563:33;22591:4;22583:6;22563:33;:::i;:::-;22473:129;;;:::o;22608:311::-;22685:4;22775:18;22767:6;22764:30;22761:56;;;22797:18;;:::i;:::-;22761:56;22847:4;22839:6;22835:17;22827:25;;22907:4;22901;22897:15;22889:23;;22608:311;;;:::o;22942:732::-;23049:5;23074:81;23090:64;23147:6;23090:64;:::i;:::-;23074:81;:::i;:::-;23065:90;;23175:5;23204:6;23197:5;23190:21;23238:4;23231:5;23227:16;23220:23;;23291:4;23283:6;23279:17;23271:6;23267:30;23320:3;23312:6;23309:15;23306:122;;;23339:79;;:::i;:::-;23306:122;23454:6;23437:231;23471:6;23466:3;23463:15;23437:231;;;23546:3;23575:48;23619:3;23607:10;23575:48;:::i;:::-;23570:3;23563:61;23653:4;23648:3;23644:14;23637:21;;23513:155;23497:4;23492:3;23488:14;23481:21;;23437:231;;;23441:21;23055:619;;22942:732;;;;;:::o;23697:385::-;23779:5;23828:3;23821:4;23813:6;23809:17;23805:27;23795:122;;23836:79;;:::i;:::-;23795:122;23946:6;23940:13;23971:105;24072:3;24064:6;24057:4;24049:6;24045:17;23971:105;:::i;:::-;23962:114;;23785:297;23697:385;;;;:::o;24088:554::-;24183:6;24232:2;24220:9;24211:7;24207:23;24203:32;24200:119;;;24238:79;;:::i;:::-;24200:119;24379:1;24368:9;24364:17;24358:24;24409:18;24401:6;24398:30;24395:117;;;24431:79;;:::i;:::-;24395:117;24536:89;24617:7;24608:6;24597:9;24593:22;24536:89;:::i;:::-;24526:99;;24329:306;24088:554;;;;:::o;24648:221::-;24788:34;24784:1;24776:6;24772:14;24765:58;24857:4;24852:2;24844:6;24840:15;24833:29;24648:221;:::o;24875:366::-;25017:3;25038:67;25102:2;25097:3;25038:67;:::i;:::-;25031:74;;25114:93;25203:3;25114:93;:::i;:::-;25232:2;25227:3;25223:12;25216:19;;24875:366;;;:::o;25247:419::-;25413:4;25451:2;25440:9;25436:18;25428:26;;25500:9;25494:4;25490:20;25486:1;25475:9;25471:17;25464:47;25528:131;25654:4;25528:131;:::i;:::-;25520:139;;25247:419;;;:::o;25672:332::-;25793:4;25831:2;25820:9;25816:18;25808:26;;25844:71;25912:1;25901:9;25897:17;25888:6;25844:71;:::i;:::-;25925:72;25993:2;25982:9;25978:18;25969:6;25925:72;:::i;:::-;25672:332;;;;;:::o;26010:85::-;26055:7;26084:5;26073:16;;26010:85;;;:::o;26101:158::-;26159:9;26192:61;26210:42;26219:32;26245:5;26219:32;:::i;:::-;26210:42;:::i;:::-;26192:61;:::i;:::-;26179:74;;26101:158;;;:::o;26265:147::-;26360:45;26399:5;26360:45;:::i;:::-;26355:3;26348:58;26265:147;;:::o;26418:807::-;26667:4;26705:3;26694:9;26690:19;26682:27;;26719:71;26787:1;26776:9;26772:17;26763:6;26719:71;:::i;:::-;26800:72;26868:2;26857:9;26853:18;26844:6;26800:72;:::i;:::-;26882:80;26958:2;26947:9;26943:18;26934:6;26882:80;:::i;:::-;26972;27048:2;27037:9;27033:18;27024:6;26972:80;:::i;:::-;27062:73;27130:3;27119:9;27115:19;27106:6;27062:73;:::i;:::-;27145;27213:3;27202:9;27198:19;27189:6;27145:73;:::i;:::-;26418:807;;;;;;;;;:::o;27231:663::-;27319:6;27327;27335;27384:2;27372:9;27363:7;27359:23;27355:32;27352:119;;;27390:79;;:::i;:::-;27352:119;27510:1;27535:64;27591:7;27582:6;27571:9;27567:22;27535:64;:::i;:::-;27525:74;;27481:128;27648:2;27674:64;27730:7;27721:6;27710:9;27706:22;27674:64;:::i;:::-;27664:74;;27619:129;27787:2;27813:64;27869:7;27860:6;27849:9;27845:22;27813:64;:::i;:::-;27803:74;;27758:129;27231:663;;;;;:::o;27900:225::-;28040:34;28036:1;28028:6;28024:14;28017:58;28109:8;28104:2;28096:6;28092:15;28085:33;27900:225;:::o;28131:366::-;28273:3;28294:67;28358:2;28353:3;28294:67;:::i;:::-;28287:74;;28370:93;28459:3;28370:93;:::i;:::-;28488:2;28483:3;28479:12;28472:19;;28131:366;;;:::o;28503:419::-;28669:4;28707:2;28696:9;28692:18;28684:26;;28756:9;28750:4;28746:20;28742:1;28731:9;28727:17;28720:47;28784:131;28910:4;28784:131;:::i;:::-;28776:139;;28503:419;;;:::o;28928:332::-;29049:4;29087:2;29076:9;29072:18;29064:26;;29100:71;29168:1;29157:9;29153:17;29144:6;29100:71;:::i;:::-;29181:72;29249:2;29238:9;29234:18;29225:6;29181:72;:::i;:::-;28928:332;;;;;:::o;29266:223::-;29406:34;29402:1;29394:6;29390:14;29383:58;29475:6;29470:2;29462:6;29458:15;29451:31;29266:223;:::o;29495:366::-;29637:3;29658:67;29722:2;29717:3;29658:67;:::i;:::-;29651:74;;29734:93;29823:3;29734:93;:::i;:::-;29852:2;29847:3;29843:12;29836:19;;29495:366;;;:::o;29867:419::-;30033:4;30071:2;30060:9;30056:18;30048:26;;30120:9;30114:4;30110:20;30106:1;30095:9;30091:17;30084:47;30148:131;30274:4;30148:131;:::i;:::-;30140:139;;29867:419;;;:::o;30292:221::-;30432:34;30428:1;30420:6;30416:14;30409:58;30501:4;30496:2;30488:6;30484:15;30477:29;30292:221;:::o;30519:366::-;30661:3;30682:67;30746:2;30741:3;30682:67;:::i;:::-;30675:74;;30758:93;30847:3;30758:93;:::i;:::-;30876:2;30871:3;30867:12;30860:19;;30519:366;;;:::o;30891:419::-;31057:4;31095:2;31084:9;31080:18;31072:26;;31144:9;31138:4;31134:20;31130:1;31119:9;31115:17;31108:47;31172:131;31298:4;31172:131;:::i;:::-;31164:139;;30891:419;;;:::o;31316:224::-;31456:34;31452:1;31444:6;31440:14;31433:58;31525:7;31520:2;31512:6;31508:15;31501:32;31316:224;:::o;31546:366::-;31688:3;31709:67;31773:2;31768:3;31709:67;:::i;:::-;31702:74;;31785:93;31874:3;31785:93;:::i;:::-;31903:2;31898:3;31894:12;31887:19;;31546:366;;;:::o;31918:419::-;32084:4;32122:2;32111:9;32107:18;32099:26;;32171:9;32165:4;32161:20;32157:1;32146:9;32142:17;32135:47;32199:131;32325:4;32199:131;:::i;:::-;32191:139;;31918:419;;;:::o;32343:222::-;32483:34;32479:1;32471:6;32467:14;32460:58;32552:5;32547:2;32539:6;32535:15;32528:30;32343:222;:::o;32571:366::-;32713:3;32734:67;32798:2;32793:3;32734:67;:::i;:::-;32727:74;;32810:93;32899:3;32810:93;:::i;:::-;32928:2;32923:3;32919:12;32912:19;;32571:366;;;:::o;32943:419::-;33109:4;33147:2;33136:9;33132:18;33124:26;;33196:9;33190:4;33186:20;33182:1;33171:9;33167:17;33160:47;33224:131;33350:4;33224:131;:::i;:::-;33216:139;;32943:419;;;:::o;33368:228::-;33508:34;33504:1;33496:6;33492:14;33485:58;33577:11;33572:2;33564:6;33560:15;33553:36;33368:228;:::o;33602:366::-;33744:3;33765:67;33829:2;33824:3;33765:67;:::i;:::-;33758:74;;33841:93;33930:3;33841:93;:::i;:::-;33959:2;33954:3;33950:12;33943:19;;33602:366;;;:::o;33974:419::-;34140:4;34178:2;34167:9;34163:18;34155:26;;34227:9;34221:4;34217:20;34213:1;34202:9;34198:17;34191:47;34255:131;34381:4;34255:131;:::i;:::-;34247:139;;33974:419;;;:::o;34399:224::-;34539:34;34535:1;34527:6;34523:14;34516:58;34608:7;34603:2;34595:6;34591:15;34584:32;34399:224;:::o;34629:366::-;34771:3;34792:67;34856:2;34851:3;34792:67;:::i;:::-;34785:74;;34868:93;34957:3;34868:93;:::i;:::-;34986:2;34981:3;34977:12;34970:19;;34629:366;;;:::o;35001:419::-;35167:4;35205:2;35194:9;35190:18;35182:26;;35254:9;35248:4;35244:20;35240:1;35229:9;35225:17;35218:47;35282:131;35408:4;35282:131;:::i;:::-;35274:139;;35001:419;;;:::o;35426:194::-;35466:4;35486:20;35504:1;35486:20;:::i;:::-;35481:25;;35520:20;35538:1;35520:20;:::i;:::-;35515:25;;35564:1;35561;35557:9;35549:17;;35588:1;35582:4;35579:11;35576:37;;;35593:18;;:::i;:::-;35576:37;35426:194;;;;:::o;35626:191::-;35666:3;35685:20;35703:1;35685:20;:::i;:::-;35680:25;;35719:20;35737:1;35719:20;:::i;:::-;35714:25;;35762:1;35759;35755:9;35748:16;;35783:3;35780:1;35777:10;35774:36;;;35790:18;;:::i;:::-;35774:36;35626:191;;;;:::o;35823:177::-;35963:29;35959:1;35951:6;35947:14;35940:53;35823:177;:::o;36006:366::-;36148:3;36169:67;36233:2;36228:3;36169:67;:::i;:::-;36162:74;;36245:93;36334:3;36245:93;:::i;:::-;36363:2;36358:3;36354:12;36347:19;;36006:366;;;:::o;36378:419::-;36544:4;36582:2;36571:9;36567:18;36559:26;;36631:9;36625:4;36621:20;36617:1;36606:9;36602:17;36595:47;36659:131;36785:4;36659:131;:::i;:::-;36651:139;;36378:419;;;:::o;36803:233::-;36842:3;36865:24;36883:5;36865:24;:::i;:::-;36856:33;;36911:66;36904:5;36901:77;36898:103;;36981:18;;:::i;:::-;36898:103;37028:1;37021:5;37017:13;37010:20;;36803:233;;;:::o;37042:831::-;37305:4;37343:3;37332:9;37328:19;37320:27;;37357:71;37425:1;37414:9;37410:17;37401:6;37357:71;:::i;:::-;37438:80;37514:2;37503:9;37499:18;37490:6;37438:80;:::i;:::-;37565:9;37559:4;37555:20;37550:2;37539:9;37535:18;37528:48;37593:108;37696:4;37687:6;37593:108;:::i;:::-;37585:116;;37711:72;37779:2;37768:9;37764:18;37755:6;37711:72;:::i;:::-;37793:73;37861:3;37850:9;37846:19;37837:6;37793:73;:::i;:::-;37042:831;;;;;;;;:::o;37879:180::-;37927:77;37924:1;37917:88;38024:4;38021:1;38014:15;38048:4;38045:1;38038:15;38065:185;38105:1;38122:20;38140:1;38122:20;:::i;:::-;38117:25;;38156:20;38174:1;38156:20;:::i;:::-;38151:25;;38195:1;38185:35;;38200:18;;:::i;:::-;38185:35;38242:1;38239;38235:9;38230:14;;38065:185;;;;:::o;38256:220::-;38396:34;38392:1;38384:6;38380:14;38373:58;38465:3;38460:2;38452:6;38448:15;38441:28;38256:220;:::o;38482:366::-;38624:3;38645:67;38709:2;38704:3;38645:67;:::i;:::-;38638:74;;38721:93;38810:3;38721:93;:::i;:::-;38839:2;38834:3;38830:12;38823:19;;38482:366;;;:::o;38854:419::-;39020:4;39058:2;39047:9;39043:18;39035:26;;39107:9;39101:4;39097:20;39093:1;39082:9;39078:17;39071:47;39135:131;39261:4;39135:131;:::i;:::-;39127:139;;38854:419;;;:::o;39279:220::-;39419:34;39415:1;39407:6;39403:14;39396:58;39488:3;39483:2;39475:6;39471:15;39464:28;39279:220;:::o;39505:366::-;39647:3;39668:67;39732:2;39727:3;39668:67;:::i;:::-;39661:74;;39744:93;39833:3;39744:93;:::i;:::-;39862:2;39857:3;39853:12;39846:19;;39505:366;;;:::o;39877:419::-;40043:4;40081:2;40070:9;40066:18;40058:26;;40130:9;40124:4;40120:20;40116:1;40105:9;40101:17;40094:47;40158:131;40284:4;40158:131;:::i;:::-;40150:139;;39877:419;;;:::o

Swarm Source

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