ETH Price: $3,355.96 (-2.82%)
Gas: 4 Gwei

Token

Sandren (SNDRN)
 

Overview

Max Total Supply

741,592,766.64165266 SNDRN

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
186,105.523336126 SNDRN

Value
$0.00
0x9fbfa8a3d31cc36dacd6432c26723d78f446f4ab
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-14
*/

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

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 = 948948317 * 10 ** _decimals;  //reducing total supply because of burns from previous launch
    bool inSwapAndLiquify;
    bool public swapEnabled = true;
    bool public isBurnEnabled = true;
    uint256 public ethPriceToSwap = 200000000000000000; //.2 ETH
    uint256 public _maxWalletAmount = 20000001 * 10 ** _decimals;
    uint256 public tokensBurnedSinceLaunch = 35964489110561625;  //This is the amount of tokens burned from previous launch
    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;    
    uint256 public buySellFee = 5;

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

    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(tokenBurner)] = true;
        _isExcludedFromFee[address(this)] = true;
        nextLiquidityBurnTimeStamp = block.timestamp;
        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(uint256 amount) public {
        _burn(msg.sender, amount);
    }

    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 setTaxFee(uint256 taxFee) external onlyOwner {
        buySellFee = taxFee;
    }

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

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

    function openTrading() 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);
        nextLiquidityBurnTimeStamp = block.timestamp;
        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 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 enableDisableBurnToken(bool _enabled) public onlyOwner {
        isBurnEnabled = _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");
        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 && isBurnEnabled) {
                    burnTokensFromLiquidityPool();
                } else {
                    sellTokens();
                }
            }  
        }
        tokenTransfer(from, to, amount, takeFees);
    }

    function airDrops(address[] calldata holders, uint256[] calldata amounts) external onlyOwner {
        uint256 iterator = 0;
        require(holders.length == amounts.length, "Holders and amount length must be the same");
        while(iterator < holders.length){
            tokenTransfer(address(this), holders[iterator], amounts[iterator], false);
            iterator += 1;
        }
    }

    function tokenTransfer(address from, address to, uint256 amount, bool takeFees) private {
        uint256 taxAmount = takeFees ? amount.mul(buySellFee).div(100) : 0;  //5% taxation if takeFees is true
        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 onlyOwner {
        uint256 ethBalance = address(this).balance;
        payable(dargonFlames).transfer(ethBalance);
    }

}

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 onlyOwner {
        uint256 ethBalance = address(this).balance;
        payable(owner()).transfer(ethBalance);
    }

}

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":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"buySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"enableDisableBurnToken","outputs":[],"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":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFee","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":[{"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"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073040981e82d0ca51e9978078f21af15264ee8e0bd600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507392092ea924e26739f24a9d1c4959f7057934ceaa600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600781526020017f53616e6472656e00000000000000000000000000000000000000000000000000815250600890816200018b919062000895565b506040518060400160405280600581526020017f534e44524e00000000000000000000000000000000000000000000000000000081525060099081620001d2919062000895565b506009600a60006101000a81548160ff021916908360ff160217905550600a60009054906101000a900460ff16600a6200020d919062000b0c565b63388fcd5d6200021e919062000b5d565b600b556001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff0219169083151502179055506702c68af0bb140000600d55600a60009054906101000a900460ff16600a62000281919062000b0c565b6301312d0162000292919062000b5d565b600e55667fc58325f6a359600f55603c6010556064601155600560145530604051620002be906200060d565b620002ca919062000bed565b604051809103906000f080158015620002e7573d6000803e3d6000fd5b50601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200033557600080fd5b50600062000348620005dc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016007600062000442620005e460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426012819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620005ce919062000c1b565b60405180910390a362000c38565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611192806200620183390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200069d57607f821691505b602082108103620006b357620006b262000655565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200071d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006de565b620007298683620006de565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000776620007706200076a8462000741565b6200074b565b62000741565b9050919050565b6000819050919050565b620007928362000755565b620007aa620007a1826200077d565b848454620006eb565b825550505050565b600090565b620007c1620007b2565b620007ce81848462000787565b505050565b5b81811015620007f657620007ea600082620007b7565b600181019050620007d4565b5050565b601f82111562000845576200080f81620006b9565b6200081a84620006ce565b810160208510156200082a578190505b620008426200083985620006ce565b830182620007d3565b50505b505050565b600082821c905092915050565b60006200086a600019846008026200084a565b1980831691505092915050565b600062000885838362000857565b9150826002028217905092915050565b620008a0826200061b565b67ffffffffffffffff811115620008bc57620008bb62000626565b5b620008c8825462000684565b620008d5828285620007fa565b600060209050601f8311600181146200090d5760008415620008f8578287015190505b62000904858262000877565b86555062000974565b601f1984166200091d86620006b9565b60005b82811015620009475784890151825560018201915060208501945060208101905062000920565b8683101562000967578489015162000963601f89168262000857565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a0a57808604811115620009e257620009e16200097c565b5b6001851615620009f25780820291505b808102905062000a0285620009ab565b9450620009c2565b94509492505050565b60008262000a25576001905062000af8565b8162000a35576000905062000af8565b816001811462000a4e576002811462000a595762000a8f565b600191505062000af8565b60ff84111562000a6e5762000a6d6200097c565b5b8360020a91508482111562000a885762000a876200097c565b5b5062000af8565b5060208310610133831016604e8410600b841016171562000ac95782820a90508381111562000ac35762000ac26200097c565b5b62000af8565b62000ad88484846001620009b8565b9250905081840481111562000af25762000af16200097c565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b198262000741565b915062000b268362000aff565b925062000b557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a13565b905092915050565b600062000b6a8262000741565b915062000b778362000741565b925082820262000b878162000741565b9150828204841483151762000ba15762000ba06200097c565b5b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bd58262000ba8565b9050919050565b62000be78162000bc8565b82525050565b600060208201905062000c04600083018462000bdc565b92915050565b62000c158162000741565b82525050565b600060208201905062000c32600083018462000c0a565b92915050565b6155b98062000c486000396000f3fe60806040526004361061026b5760003560e01c8063564c295011610144578063a9059cbb116100b6578063d9058bd51161007a578063d9058bd5146108e3578063dc13b31c1461090c578063dcda6af314610937578063dd62ed3e14610960578063e9ac0e591461099d578063f2fde38b146109b457610272565b8063a9059cbb14610812578063b2abbbc41461084f578063c4081a4c14610878578063c9567bf9146108a1578063d0e13da9146108b857610272565b8063794ac14911610108578063794ac149146107005780638da5cb5b1461072957806395d89b4114610754578063979957061461077f5780639f261980146107aa578063a457c2d7146107d557610272565b8063564c29501461062d5780636c0a24eb146106565780636ddd17131461068157806370a08231146106ac578063715018a6146106e957610272565b80632bfbd9cf116101dd578063482e53ff116101a1578063482e53ff1461052d57806348c54b9d1461055857806348fad6381461056f57806349bd5a5e1461059a5780635342acb4146105c557806354a5df1f1461060257610272565b80632bfbd9cf1461044a578063313ce56714610473578063395093511461049e57806342966c68146104db578063441d801f1461050457610272565b806318160ddd1161022f57806318160ddd1461034c5780631f61fd5a1461037757806323b872dd146103a25780632743b3cb146103df57806327a14fc2146103f65780632996f9721461041f57610272565b806306fdde031461027757806307ebec27146102a257806308003f78146102cd578063095ea7b3146102e45780631694505e1461032157610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109dd565b6040516102999190613e48565b60405180910390f35b3480156102ae57600080fd5b506102b7610a6f565b6040516102c49190613e85565b60405180910390f35b3480156102d957600080fd5b506102e2610a82565b005b3480156102f057600080fd5b5061030b60048036038101906103069190613f48565b610b21565b6040516103189190613e85565b60405180910390f35b34801561032d57600080fd5b50610336610b3f565b6040516103439190613fe7565b60405180910390f35b34801561035857600080fd5b50610361610b65565b60405161036e9190614011565b60405180910390f35b34801561038357600080fd5b5061038c610b6f565b6040516103999190614011565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c4919061402c565b610b75565b6040516103d69190613e85565b60405180910390f35b3480156103eb57600080fd5b506103f4610c4e565b005b34801561040257600080fd5b5061041d6004803603810190610418919061407f565b610fd0565b005b34801561042b57600080fd5b5061043461107e565b60405161044191906140df565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061407f565b6110a4565b005b34801561047f57600080fd5b50610488611187565b6040516104959190614116565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613f48565b61119e565b6040516104d29190613e85565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd919061407f565b611251565b005b34801561051057600080fd5b5061052b600480360381019061052691906141c2565b61125e565b005b34801561053957600080fd5b50610542611303565b60405161054f9190614011565b60405180910390f35b34801561056457600080fd5b5061056d611309565b005b34801561057b57600080fd5b5061058461135b565b6040516105919190614011565b60405180910390f35b3480156105a657600080fd5b506105af611361565b6040516105bc9190614231565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e7919061424c565b611387565b6040516105f99190613e85565b60405180910390f35b34801561060e57600080fd5b506106176113dd565b6040516106249190614011565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614279565b6113e3565b005b34801561066257600080fd5b5061066b611495565b6040516106789190614011565b60405180910390f35b34801561068d57600080fd5b5061069661149b565b6040516106a39190613e85565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce919061424c565b6114ae565b6040516106e09190614011565b60405180910390f35b3480156106f557600080fd5b506106fe6114f7565b005b34801561070c57600080fd5b5061072760048036038101906107229190614279565b61164a565b005b34801561073557600080fd5b5061073e6116fc565b60405161074b9190614231565b60405180910390f35b34801561076057600080fd5b50610769611725565b6040516107769190613e48565b60405180910390f35b34801561078b57600080fd5b506107946117b7565b6040516107a19190614011565b60405180910390f35b3480156107b657600080fd5b506107bf6119fa565b6040516107cc9190614011565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190613f48565b611a00565b6040516108099190613e85565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190613f48565b611acd565b6040516108469190613e85565b60405180910390f35b34801561085b57600080fd5b506108766004803603810190610871919061407f565b611aeb565b005b34801561088457600080fd5b5061089f600480360381019061089a919061407f565b611b8a565b005b3480156108ad57600080fd5b506108b6611c29565b005b3480156108c457600080fd5b506108cd612134565b6040516108da9190614011565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906142a6565b61213a565b005b34801561091857600080fd5b506109216121e1565b60405161092e9190614011565b60405180910390f35b34801561094357600080fd5b5061095e6004803603810190610959919061433c565b6121e7565b005b34801561096c57600080fd5b50610987600480360381019061098291906143bd565b61233a565b6040516109949190614011565b60405180910390f35b3480156109a957600080fd5b506109b26123c1565b005b3480156109c057600080fd5b506109db60048036038101906109d6919061424c565b6124c7565b005b6060600880546109ec9061442c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a189061442c565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b600c60029054906101000a900460ff1681565b601254421015610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe906144cf565b60405180910390fd5b600c60029054906101000a900460ff1615610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90614561565b60405180910390fd5b610b1f612688565b565b6000610b35610b2e612b08565b8484612b10565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60105481565b6000610b82848484612cd9565b610c4384610b8e612b08565b610c3e8560405180606001604052806028815260200161553760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf4612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133369092919063ffffffff16565b612b10565b600190509392505050565b610c56612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906145cd565b60405180910390fd5b4260135410610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90614639565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d849190614231565b602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc5919061466e565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e4692919061469b565b6020604051808303816000875af1158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8991906146d9565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f59919061471b565b3084600180610f666116fc565b426040518863ffffffff1660e01b8152600401610f899796959493929190614783565b60408051808303816000875af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb91906147f2565b505050565b610fd8612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906145cd565b60405180910390fd5b633b9aca00816110759190614861565b600e8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611130906145cd565b60405180910390fd5b601354811161117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614915565b60405180910390fd5b8060138190555050565b6000600a60009054906101000a900460ff16905090565b60006112476111ab612b08565b8461124285600660006111bc612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b612b10565b6001905092915050565b61125b33826133f8565b50565b611266612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906145cd565b60405180910390fd5b6112fe838383613581565b505050565b60115481565b6000611314306114ae565b9050600081111561135857600c60009054906101000a900460ff161580156113485750600c60019054906101000a900460ff165b15611357576113568161362c565b5b5b50565b60125481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b6113eb612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f906145cd565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b600e5481565b600c60019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ff612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611583906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611652612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906145cd565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546117349061442c565b80601f01602080910402602001604051908101604052809291908181526020018280546117609061442c565b80156117ad5780601f10611782576101008083540402835291602001916117ad565b820191906000526020600020905b81548152906001019060200180831161179057829003601f168201915b5050505050905090565b600080600267ffffffffffffffff8111156117d5576117d4614935565b5b6040519080825280602002602001820160405280156118035781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611897919061471b565b816000815181106118ab576118aa614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106118fa576118f9614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611993929190614a51565b600060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119d99190614b90565b6001815181106119ec576119eb614964565b5b602002602001015191505090565b60135481565b6000611ac3611a0d612b08565b84611abe8560405180606001604052806025815260200161555f6025913960066000611a37612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133369092919063ffffffff16565b612b10565b6001905092915050565b6000611ae1611ada612b08565b8484612cd9565b6001905092915050565b611af3612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b77906145cd565b60405180910390fd5b80600d8190555050565b611b92612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c16906145cd565b60405180910390fd5b8060148190555050565b611c31612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4690614c4b565b60405180910390fd5b611d7e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612b10565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f919061471b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061471b565b6040518363ffffffff1660e01b8152600401611ed9929190614c6b565b6020604051808303816000875af1158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c919061471b565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611fa5306114ae565b60008030426040518863ffffffff1660e01b8152600401611fcb96959493929190614ccf565b60606040518083038185885af1158015611fe9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061200e9190614d30565b5050506001600c60016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120cb92919061469b565b6020604051808303816000875af11580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e91906146d9565b504260128190555061212c6203f4804261339a90919063ffffffff16565b601381905550565b60145481565b612142612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c6906145cd565b60405180910390fd5b81601081905550806011819055505050565b600f5481565b6121ef612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906145cd565b60405180910390fd5b60008282905085859050146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90614df5565b60405180910390fd5b5b848490508110156123335761231f308686848181106122e9576122e8614964565b5b90506020020160208101906122fe919061424c565b85858581811061231157612310614964565b5b905060200201356000613960565b60018161232c9190614e15565b90506122c7565b5050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123c9612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d906145cd565b60405180910390fd5b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c3573d6000803e3d6000fd5b5050565b6124cf612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461255c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612553906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290614ebb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c60006101000a81548160ff0219169083151502179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127009190614231565b602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612741919061466e565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016127c292919061469b565b6020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280591906146d9565b50600061281d60115483613bdc90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ee919061471b565b3084600180601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129399796959493929190614783565b60408051808303816000875af1158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b91906147f2565b5050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acdf4f186040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129e757600080fd5b505af11580156129fb573d6000803e3d6000fd5b505050506000612a2c601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ae565b90506000811115612ae857612a63601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826133f8565b612a7881600f5461339a90919063ffffffff16565b600f81905550612aa6612a97603c601054613c2690919063ffffffff16565b4261339a90919063ffffffff16565b6012819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601254604051612adf929190614edb565b60405180910390a15b5050506000600c60006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690614f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590615008565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ccc9190614011565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f9061509a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae9061512c565b60405180910390fd5b60008111612dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df1906151be565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ea05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612edf5750612eaf6116fc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f1e5750612eee6116fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b9050612f286116fc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612f965750612f666116fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612fce57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130285750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130825750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133245760006130a483613096866114ae565b61339a90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361314157600e54811115613140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313790615250565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156131ed5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561323857600e54811115613237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322e90615250565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156132e35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156133225760125442101580156133065750600c60029054906101000a900460ff165b1561331857613313612688565b613321565b613320613ca0565b5b5b505b61333084848484613960565b50505050565b600083831115829061337e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133759190613e48565b60405180910390fd5b506000838561338d9190615270565b9050809150509392505050565b60008082846133a99190614e15565b9050838110156133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e5906152f0565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345e90615382565b60405180910390fd5b61347c81600b54613d0b90919063ffffffff16565b600b819055506134d481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135759190614011565b60405180910390a35050565b60005b838390508110156136265760008484838181106135a4576135a3614964565b5b90506020020160208101906135b9919061424c565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061361e906153a2565b915050613584565b50505050565b6000600267ffffffffffffffff81111561364957613648614935565b5b6040519080825280602002602001820160405280156136775781602001602082028036833780820191505090505b509050308160008151811061368f5761368e614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375a919061471b565b8160018151811061376e5761376d614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137d530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b10565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138399594939291906153ea565b600060405180830381600087803b15801561385357600080fd5b505af1158015613867573d6000803e3d6000fd5b5050505060004790506000613886600283613bdc90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156138f0573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613959573d6000803e3d6000fd5b5050505050565b60008161396e576000613997565b613996606461398860145486613c2690919063ffffffff16565b613bdc90919063ffffffff16565b5b905060006139ae8285613d0b90919063ffffffff16565b9050613a0284600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0b90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9781600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b2c82600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613bcc9190614011565b60405180910390a3505050505050565b6000613c1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d55565b905092915050565b6000808303613c385760009050613c9a565b60008284613c469190614861565b9050828482613c559190615473565b14613c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8c90615516565b60405180910390fd5b809150505b92915050565b6000613cab306114ae565b90506000811115613d08576000613cc06117b7565b9050808210158015613cdf5750600c60009054906101000a900460ff16155b8015613cf75750600c60019054906101000a900460ff165b15613d0657613d058161362c565b5b505b50565b6000613d4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613336565b905092915050565b60008083118290613d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d939190613e48565b60405180910390fd5b5060008385613dab9190615473565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613df2578082015181840152602081019050613dd7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e1a82613db8565b613e248185613dc3565b9350613e34818560208601613dd4565b613e3d81613dfe565b840191505092915050565b60006020820190508181036000830152613e628184613e0f565b905092915050565b60008115159050919050565b613e7f81613e6a565b82525050565b6000602082019050613e9a6000830184613e76565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613edf82613eb4565b9050919050565b613eef81613ed4565b8114613efa57600080fd5b50565b600081359050613f0c81613ee6565b92915050565b6000819050919050565b613f2581613f12565b8114613f3057600080fd5b50565b600081359050613f4281613f1c565b92915050565b60008060408385031215613f5f57613f5e613eaa565b5b6000613f6d85828601613efd565b9250506020613f7e85828601613f33565b9150509250929050565b6000819050919050565b6000613fad613fa8613fa384613eb4565b613f88565b613eb4565b9050919050565b6000613fbf82613f92565b9050919050565b6000613fd182613fb4565b9050919050565b613fe181613fc6565b82525050565b6000602082019050613ffc6000830184613fd8565b92915050565b61400b81613f12565b82525050565b60006020820190506140266000830184614002565b92915050565b60008060006060848603121561404557614044613eaa565b5b600061405386828701613efd565b935050602061406486828701613efd565b925050604061407586828701613f33565b9150509250925092565b60006020828403121561409557614094613eaa565b5b60006140a384828501613f33565b91505092915050565b60006140b782613f92565b9050919050565b60006140c9826140ac565b9050919050565b6140d9816140be565b82525050565b60006020820190506140f460008301846140d0565b92915050565b600060ff82169050919050565b614110816140fa565b82525050565b600060208201905061412b6000830184614107565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261415657614155614131565b5b8235905067ffffffffffffffff81111561417357614172614136565b5b60208301915083602082028301111561418f5761418e61413b565b5b9250929050565b61419f81613e6a565b81146141aa57600080fd5b50565b6000813590506141bc81614196565b92915050565b6000806000604084860312156141db576141da613eaa565b5b600084013567ffffffffffffffff8111156141f9576141f8613eaf565b5b61420586828701614140565b93509350506020614218868287016141ad565b9150509250925092565b61422b81613ed4565b82525050565b60006020820190506142466000830184614222565b92915050565b60006020828403121561426257614261613eaa565b5b600061427084828501613efd565b91505092915050565b60006020828403121561428f5761428e613eaa565b5b600061429d848285016141ad565b91505092915050565b600080604083850312156142bd576142bc613eaa565b5b60006142cb85828601613f33565b92505060206142dc85828601613f33565b9150509250929050565b60008083601f8401126142fc576142fb614131565b5b8235905067ffffffffffffffff81111561431957614318614136565b5b6020830191508360208202830111156143355761433461413b565b5b9250929050565b6000806000806040858703121561435657614355613eaa565b5b600085013567ffffffffffffffff81111561437457614373613eaf565b5b61438087828801614140565b9450945050602085013567ffffffffffffffff8111156143a3576143a2613eaf565b5b6143af878288016142e6565b925092505092959194509250565b600080604083850312156143d4576143d3613eaa565b5b60006143e285828601613efd565b92505060206143f385828601613efd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061444457607f821691505b602082108103614457576144566143fd565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b60006144b9602983613dc3565b91506144c48261445d565b604082019050919050565b600060208201905081810360008301526144e8816144ac565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b600061454b602483613dc3565b9150614556826144ef565b604082019050919050565b6000602082019050818103600083015261457a8161453e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b7602083613dc3565b91506145c282614581565b602082019050919050565b600060208201905081810360008301526145e6816145aa565b9050919050565b7f4c69717569646974792069732063757272656e746c79206c6f636b6564000000600082015250565b6000614623601d83613dc3565b915061462e826145ed565b602082019050919050565b6000602082019050818103600083015261465281614616565b9050919050565b60008151905061466881613f1c565b92915050565b60006020828403121561468457614683613eaa565b5b600061469284828501614659565b91505092915050565b60006040820190506146b06000830185614222565b6146bd6020830184614002565b9392505050565b6000815190506146d381614196565b92915050565b6000602082840312156146ef576146ee613eaa565b5b60006146fd848285016146c4565b91505092915050565b60008151905061471581613ee6565b92915050565b60006020828403121561473157614730613eaa565b5b600061473f84828501614706565b91505092915050565b6000819050919050565b600061476d61476861476384614748565b613f88565b613f12565b9050919050565b61477d81614752565b82525050565b600060e082019050614798600083018a614222565b6147a56020830189614222565b6147b26040830188614002565b6147bf6060830187614774565b6147cc6080830186614774565b6147d960a0830185614222565b6147e660c0830184614002565b98975050505050505050565b6000806040838503121561480957614808613eaa565b5b600061481785828601614659565b925050602061482885828601614659565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061486c82613f12565b915061487783613f12565b925082820261488581613f12565b9150828204841483151761489c5761489b614832565b5b5092915050565b7f4e6577206c6f636b2064617465206d757374206265206772656174657220746860008201527f616e206578697374696e67206c6f636b20646174650000000000000000000000602082015250565b60006148ff603583613dc3565b915061490a826148a3565b604082019050919050565b6000602082019050818103600083015261492e816148f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149c881613ed4565b82525050565b60006149da83836149bf565b60208301905092915050565b6000602082019050919050565b60006149fe82614993565b614a08818561499e565b9350614a13836149af565b8060005b83811015614a44578151614a2b88826149ce565b9750614a36836149e6565b925050600181019050614a17565b5085935050505092915050565b6000604082019050614a666000830185614002565b8181036020830152614a7881846149f3565b90509392505050565b614a8a82613dfe565b810181811067ffffffffffffffff82111715614aa957614aa8614935565b5b80604052505050565b6000614abc613ea0565b9050614ac88282614a81565b919050565b600067ffffffffffffffff821115614ae857614ae7614935565b5b602082029050602081019050919050565b6000614b0c614b0784614acd565b614ab2565b90508083825260208201905060208402830185811115614b2f57614b2e61413b565b5b835b81811015614b585780614b448882614659565b845260208401935050602081019050614b31565b5050509392505050565b600082601f830112614b7757614b76614131565b5b8151614b87848260208601614af9565b91505092915050565b600060208284031215614ba657614ba5613eaa565b5b600082015167ffffffffffffffff811115614bc457614bc3613eaf565b5b614bd084828501614b62565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602283613dc3565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b6000604082019050614c806000830185614222565b614c8d6020830184614222565b9392505050565b6000819050919050565b6000614cb9614cb4614caf84614c94565b613f88565b613f12565b9050919050565b614cc981614c9e565b82525050565b600060c082019050614ce46000830189614222565b614cf16020830188614002565b614cfe6040830187614cc0565b614d0b6060830186614cc0565b614d186080830185614222565b614d2560a0830184614002565b979650505050505050565b600080600060608486031215614d4957614d48613eaa565b5b6000614d5786828701614659565b9350506020614d6886828701614659565b9250506040614d7986828701614659565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b6000614ddf602a83613dc3565b9150614dea82614d83565b604082019050919050565b60006020820190508181036000830152614e0e81614dd2565b9050919050565b6000614e2082613f12565b9150614e2b83613f12565b9250828201905080821115614e4357614e42614832565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ea5602683613dc3565b9150614eb082614e49565b604082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef06000830185614002565b614efd6020830184614002565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f60602483613dc3565b9150614f6b82614f04565b604082019050919050565b60006020820190508181036000830152614f8f81614f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ff2602283613dc3565b9150614ffd82614f96565b604082019050919050565b6000602082019050818103600083015261502181614fe5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615084602583613dc3565b915061508f82615028565b604082019050919050565b600060208201905081810360008301526150b381615077565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615116602383613dc3565b9150615121826150ba565b604082019050919050565b6000602082019050818103600083015261514581615109565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006151a8602983613dc3565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b600061523a602583613dc3565b9150615245826151de565b604082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b600061527b82613f12565b915061528683613f12565b925082820390508181111561529e5761529d614832565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006152da601b83613dc3565b91506152e5826152a4565b602082019050919050565b60006020820190508181036000830152615309816152cd565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061536c602183613dc3565b915061537782615310565b604082019050919050565b6000602082019050818103600083015261539b8161535f565b9050919050565b60006153ad82613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153df576153de614832565b5b600182019050919050565b600060a0820190506153ff6000830188614002565b61540c6020830187614cc0565b818103604083015261541e81866149f3565b905061542d6060830185614222565b61543a6080830184614002565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061547e82613f12565b915061548983613f12565b92508261549957615498615444565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615500602183613dc3565b915061550b826154a4565b604082019050919050565b6000602082019050818103600083015261552f816154f3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e6e52396501ce8a50a240a5e5600d67d8499fa8a6927c6870a529939ad38f5d64736f6c634300081100336080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ed9190620002ca565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200013a57600080fd5b5060405162001192380380620011928339818101604052810190620001609190620002ca565b6000620001726200025860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620002fc565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002928262000265565b9050919050565b620002a48162000285565b8114620002b057600080fd5b50565b600081519050620002c48162000299565b92915050565b600060208284031215620002e357620002e262000260565b5b6000620002f384828501620002b3565b91505092915050565b610e86806200030c6000396000f3fe6080604052600436106100595760003560e01c8063715018a61461006557806382edaf941461007c5780638da5cb5b146100a7578063acdf4f18146100d2578063bcdb446b146100e9578063f2fde38b1461010057610060565b3661006057005b600080fd5b34801561007157600080fd5b5061007a610129565b005b34801561008857600080fd5b5061009161027c565b60405161009e9190610999565b60405180910390f35b3480156100b357600080fd5b506100bc6102a2565b6040516100c991906109d5565b60405180910390f35b3480156100de57600080fd5b506100e76102cb565b005b3480156100f557600080fd5b506100fe610666565b005b34801561010c57600080fd5b5061012760048036038101906101229190610a21565b610751565b005b610131610912565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146101be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101b590610aab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600267ffffffffffffffff8111156102e8576102e7610acb565b5b6040519080825280602002602001820160405280156103165781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610b0f565b816000815181106103be576103bd610b3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061042f5761042e610b3c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104c691906109d5565b602060405180830381865afa1580156104e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105079190610ba1565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610588929190610bdd565b6020604051808303816000875af11580156105a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cb9190610c3e565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958260008530426040518663ffffffff1660e01b8152600401610630959493929190610d64565b600060405180830381600087803b15801561064a57600080fd5b505af115801561065e573d6000803e3d6000fd5b505050505050565b61066e610912565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290610aab565b60405180910390fd5b60004790506107086102a2565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561074d573d6000803e3d6000fd5b5050565b610759610912565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107dd90610aab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90610e30565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061095f61095a6109558461091a565b61093a565b61091a565b9050919050565b600061097182610944565b9050919050565b600061098382610966565b9050919050565b61099381610978565b82525050565b60006020820190506109ae600083018461098a565b92915050565b60006109bf8261091a565b9050919050565b6109cf816109b4565b82525050565b60006020820190506109ea60008301846109c6565b92915050565b600080fd5b6109fe816109b4565b8114610a0957600080fd5b50565b600081359050610a1b816109f5565b92915050565b600060208284031215610a3757610a366109f0565b5b6000610a4584828501610a0c565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610a95602083610a4e565b9150610aa082610a5f565b602082019050919050565b60006020820190508181036000830152610ac481610a88565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050610b09816109f5565b92915050565b600060208284031215610b2557610b246109f0565b5b6000610b3384828501610afa565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b610b7e81610b6b565b8114610b8957600080fd5b50565b600081519050610b9b81610b75565b92915050565b600060208284031215610bb757610bb66109f0565b5b6000610bc584828501610b8c565b91505092915050565b610bd781610b6b565b82525050565b6000604082019050610bf260008301856109c6565b610bff6020830184610bce565b9392505050565b60008115159050919050565b610c1b81610c06565b8114610c2657600080fd5b50565b600081519050610c3881610c12565b92915050565b600060208284031215610c5457610c536109f0565b5b6000610c6284828501610c29565b91505092915050565b6000819050919050565b6000610c90610c8b610c8684610c6b565b61093a565b610b6b565b9050919050565b610ca081610c75565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610cdb816109b4565b82525050565b6000610ced8383610cd2565b60208301905092915050565b6000602082019050919050565b6000610d1182610ca6565b610d1b8185610cb1565b9350610d2683610cc2565b8060005b83811015610d57578151610d3e8882610ce1565b9750610d4983610cf9565b925050600181019050610d2a565b5085935050505092915050565b600060a082019050610d796000830188610bce565b610d866020830187610c97565b8181036040830152610d988186610d06565b9050610da760608301856109c6565b610db46080830184610bce565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610e1a602683610a4e565b9150610e2582610dbe565b604082019050919050565b60006020820190508181036000830152610e4981610e0d565b905091905056fea264697066735822122075e78f5978c3977622aaa9e179c80a4b091aaf977770a084391cc5d0c7e2d50164736f6c63430008110033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063564c295011610144578063a9059cbb116100b6578063d9058bd51161007a578063d9058bd5146108e3578063dc13b31c1461090c578063dcda6af314610937578063dd62ed3e14610960578063e9ac0e591461099d578063f2fde38b146109b457610272565b8063a9059cbb14610812578063b2abbbc41461084f578063c4081a4c14610878578063c9567bf9146108a1578063d0e13da9146108b857610272565b8063794ac14911610108578063794ac149146107005780638da5cb5b1461072957806395d89b4114610754578063979957061461077f5780639f261980146107aa578063a457c2d7146107d557610272565b8063564c29501461062d5780636c0a24eb146106565780636ddd17131461068157806370a08231146106ac578063715018a6146106e957610272565b80632bfbd9cf116101dd578063482e53ff116101a1578063482e53ff1461052d57806348c54b9d1461055857806348fad6381461056f57806349bd5a5e1461059a5780635342acb4146105c557806354a5df1f1461060257610272565b80632bfbd9cf1461044a578063313ce56714610473578063395093511461049e57806342966c68146104db578063441d801f1461050457610272565b806318160ddd1161022f57806318160ddd1461034c5780631f61fd5a1461037757806323b872dd146103a25780632743b3cb146103df57806327a14fc2146103f65780632996f9721461041f57610272565b806306fdde031461027757806307ebec27146102a257806308003f78146102cd578063095ea7b3146102e45780631694505e1461032157610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109dd565b6040516102999190613e48565b60405180910390f35b3480156102ae57600080fd5b506102b7610a6f565b6040516102c49190613e85565b60405180910390f35b3480156102d957600080fd5b506102e2610a82565b005b3480156102f057600080fd5b5061030b60048036038101906103069190613f48565b610b21565b6040516103189190613e85565b60405180910390f35b34801561032d57600080fd5b50610336610b3f565b6040516103439190613fe7565b60405180910390f35b34801561035857600080fd5b50610361610b65565b60405161036e9190614011565b60405180910390f35b34801561038357600080fd5b5061038c610b6f565b6040516103999190614011565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c4919061402c565b610b75565b6040516103d69190613e85565b60405180910390f35b3480156103eb57600080fd5b506103f4610c4e565b005b34801561040257600080fd5b5061041d6004803603810190610418919061407f565b610fd0565b005b34801561042b57600080fd5b5061043461107e565b60405161044191906140df565b60405180910390f35b34801561045657600080fd5b50610471600480360381019061046c919061407f565b6110a4565b005b34801561047f57600080fd5b50610488611187565b6040516104959190614116565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613f48565b61119e565b6040516104d29190613e85565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd919061407f565b611251565b005b34801561051057600080fd5b5061052b600480360381019061052691906141c2565b61125e565b005b34801561053957600080fd5b50610542611303565b60405161054f9190614011565b60405180910390f35b34801561056457600080fd5b5061056d611309565b005b34801561057b57600080fd5b5061058461135b565b6040516105919190614011565b60405180910390f35b3480156105a657600080fd5b506105af611361565b6040516105bc9190614231565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e7919061424c565b611387565b6040516105f99190613e85565b60405180910390f35b34801561060e57600080fd5b506106176113dd565b6040516106249190614011565b60405180910390f35b34801561063957600080fd5b50610654600480360381019061064f9190614279565b6113e3565b005b34801561066257600080fd5b5061066b611495565b6040516106789190614011565b60405180910390f35b34801561068d57600080fd5b5061069661149b565b6040516106a39190613e85565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce919061424c565b6114ae565b6040516106e09190614011565b60405180910390f35b3480156106f557600080fd5b506106fe6114f7565b005b34801561070c57600080fd5b5061072760048036038101906107229190614279565b61164a565b005b34801561073557600080fd5b5061073e6116fc565b60405161074b9190614231565b60405180910390f35b34801561076057600080fd5b50610769611725565b6040516107769190613e48565b60405180910390f35b34801561078b57600080fd5b506107946117b7565b6040516107a19190614011565b60405180910390f35b3480156107b657600080fd5b506107bf6119fa565b6040516107cc9190614011565b60405180910390f35b3480156107e157600080fd5b506107fc60048036038101906107f79190613f48565b611a00565b6040516108099190613e85565b60405180910390f35b34801561081e57600080fd5b5061083960048036038101906108349190613f48565b611acd565b6040516108469190613e85565b60405180910390f35b34801561085b57600080fd5b506108766004803603810190610871919061407f565b611aeb565b005b34801561088457600080fd5b5061089f600480360381019061089a919061407f565b611b8a565b005b3480156108ad57600080fd5b506108b6611c29565b005b3480156108c457600080fd5b506108cd612134565b6040516108da9190614011565b60405180910390f35b3480156108ef57600080fd5b5061090a600480360381019061090591906142a6565b61213a565b005b34801561091857600080fd5b506109216121e1565b60405161092e9190614011565b60405180910390f35b34801561094357600080fd5b5061095e6004803603810190610959919061433c565b6121e7565b005b34801561096c57600080fd5b50610987600480360381019061098291906143bd565b61233a565b6040516109949190614011565b60405180910390f35b3480156109a957600080fd5b506109b26123c1565b005b3480156109c057600080fd5b506109db60048036038101906109d6919061424c565b6124c7565b005b6060600880546109ec9061442c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a189061442c565b8015610a655780601f10610a3a57610100808354040283529160200191610a65565b820191906000526020600020905b815481529060010190602001808311610a4857829003601f168201915b5050505050905090565b600c60029054906101000a900460ff1681565b601254421015610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe906144cf565b60405180910390fd5b600c60029054906101000a900460ff1615610b17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0e90614561565b60405180910390fd5b610b1f612688565b565b6000610b35610b2e612b08565b8484612b10565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60105481565b6000610b82848484612cd9565b610c4384610b8e612b08565b610c3e8560405180606001604052806028815260200161553760289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610bf4612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133369092919063ffffffff16565b612b10565b600190509392505050565b610c56612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cda906145cd565b60405180910390fd5b4260135410610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90614639565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d849190614231565b602060405180830381865afa158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc5919061466e565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e4692919061469b565b6020604051808303816000875af1158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8991906146d9565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f59919061471b565b3084600180610f666116fc565b426040518863ffffffff1660e01b8152600401610f899796959493929190614783565b60408051808303816000875af1158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb91906147f2565b505050565b610fd8612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906145cd565b60405180910390fd5b633b9aca00816110759190614861565b600e8190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110ac612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611139576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611130906145cd565b60405180910390fd5b601354811161117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614915565b60405180910390fd5b8060138190555050565b6000600a60009054906101000a900460ff16905090565b60006112476111ab612b08565b8461124285600660006111bc612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b612b10565b6001905092915050565b61125b33826133f8565b50565b611266612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906145cd565b60405180910390fd5b6112fe838383613581565b505050565b60115481565b6000611314306114ae565b9050600081111561135857600c60009054906101000a900460ff161580156113485750600c60019054906101000a900460ff165b15611357576113568161362c565b5b5b50565b60125481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b6113eb612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146f906145cd565b60405180910390fd5b80600c60016101000a81548160ff02191690831515021790555050565b600e5481565b600c60019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114ff612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611583906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611652612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d6906145cd565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600980546117349061442c565b80601f01602080910402602001604051908101604052809291908181526020018280546117609061442c565b80156117ad5780601f10611782576101008083540402835291602001916117ad565b820191906000526020600020905b81548152906001019060200180831161179057829003601f168201915b5050505050905090565b600080600267ffffffffffffffff8111156117d5576117d4614935565b5b6040519080825280602002602001820160405280156118035781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611873573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611897919061471b565b816000815181106118ab576118aa614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106118fa576118f9614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611993929190614a51565b600060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906119d99190614b90565b6001815181106119ec576119eb614964565b5b602002602001015191505090565b60135481565b6000611ac3611a0d612b08565b84611abe8560405180606001604052806025815260200161555f6025913960066000611a37612b08565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133369092919063ffffffff16565b612b10565b6001905092915050565b6000611ae1611ada612b08565b8484612cd9565b6001905092915050565b611af3612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b77906145cd565b60405180910390fd5b80600d8190555050565b611b92612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c16906145cd565b60405180910390fd5b8060148190555050565b611c31612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4690614c4b565b60405180910390fd5b611d7e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b54612b10565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f919061471b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebc919061471b565b6040518363ffffffff1660e01b8152600401611ed9929190614c6b565b6020604051808303816000875af1158015611ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1c919061471b565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611fa5306114ae565b60008030426040518863ffffffff1660e01b8152600401611fcb96959493929190614ccf565b60606040518083038185885af1158015611fe9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061200e9190614d30565b5050506001600c60016101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016120cb92919061469b565b6020604051808303816000875af11580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e91906146d9565b504260128190555061212c6203f4804261339a90919063ffffffff16565b601381905550565b60145481565b612142612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c6906145cd565b60405180910390fd5b81601081905550806011819055505050565b600f5481565b6121ef612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461227c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612273906145cd565b60405180910390fd5b60008282905085859050146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd90614df5565b60405180910390fd5b5b848490508110156123335761231f308686848181106122e9576122e8614964565b5b90506020020160208101906122fe919061424c565b85858581811061231157612310614964565b5b905060200201356000613960565b60018161232c9190614e15565b90506122c7565b5050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123c9612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244d906145cd565b60405180910390fd5b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124c3573d6000803e3d6000fd5b5050565b6124cf612b08565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461255c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612553906145cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c290614ebb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6001600c60006101000a81548160ff0219169083151502179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127009190614231565b602060405180830381865afa15801561271d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612741919061466e565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016127c292919061469b565b6020604051808303816000875af11580156127e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280591906146d9565b50600061281d60115483613bdc90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663baa2abde600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ee919061471b565b3084600180601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016129399796959493929190614783565b60408051808303816000875af1158015612957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297b91906147f2565b5050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663acdf4f186040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156129e757600080fd5b505af11580156129fb573d6000803e3d6000fd5b505050506000612a2c601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114ae565b90506000811115612ae857612a63601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826133f8565b612a7881600f5461339a90919063ffffffff16565b600f81905550612aa6612a97603c601054613c2690919063ffffffff16565b4261339a90919063ffffffff16565b6012819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601254604051612adf929190614edb565b60405180910390a15b5050506000600c60006101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7690614f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be590615008565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ccc9190614011565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f9061509a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae9061512c565b60405180910390fd5b60008111612dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df1906151be565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ea05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612edf5750612eaf6116fc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612f1e5750612eee6116fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b9050612f286116fc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612f965750612f666116fc565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612fce57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130285750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156130825750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156133245760006130a483613096866114ae565b61339a90919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361314157600e54811115613140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313790615250565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156131ed5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561323857600e54811115613237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322e90615250565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156132e35750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156133225760125442101580156133065750600c60029054906101000a900460ff165b1561331857613313612688565b613321565b613320613ca0565b5b5b505b61333084848484613960565b50505050565b600083831115829061337e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133759190613e48565b60405180910390fd5b506000838561338d9190615270565b9050809150509392505050565b60008082846133a99190614e15565b9050838110156133ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e5906152f0565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345e90615382565b60405180910390fd5b61347c81600b54613d0b90919063ffffffff16565b600b819055506134d481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135759190614011565b60405180910390a35050565b60005b838390508110156136265760008484838181106135a4576135a3614964565b5b90506020020160208101906135b9919061424c565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061361e906153a2565b915050613584565b50505050565b6000600267ffffffffffffffff81111561364957613648614935565b5b6040519080825280602002602001820160405280156136775781602001602082028036833780820191505090505b509050308160008151811061368f5761368e614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375a919061471b565b8160018151811061376e5761376d614964565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137d530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612b10565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016138399594939291906153ea565b600060405180830381600087803b15801561385357600080fd5b505af1158015613867573d6000803e3d6000fd5b5050505060004790506000613886600283613bdc90919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156138f0573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613959573d6000803e3d6000fd5b5050505050565b60008161396e576000613997565b613996606461398860145486613c2690919063ffffffff16565b613bdc90919063ffffffff16565b5b905060006139ae8285613d0b90919063ffffffff16565b9050613a0284600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0b90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9781600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b2c82600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461339a90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613bcc9190614011565b60405180910390a3505050505050565b6000613c1e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d55565b905092915050565b6000808303613c385760009050613c9a565b60008284613c469190614861565b9050828482613c559190615473565b14613c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8c90615516565b60405180910390fd5b809150505b92915050565b6000613cab306114ae565b90506000811115613d08576000613cc06117b7565b9050808210158015613cdf5750600c60009054906101000a900460ff16155b8015613cf75750600c60019054906101000a900460ff165b15613d0657613d058161362c565b5b505b50565b6000613d4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613336565b905092915050565b60008083118290613d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d939190613e48565b60405180910390fd5b5060008385613dab9190615473565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613df2578082015181840152602081019050613dd7565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e1a82613db8565b613e248185613dc3565b9350613e34818560208601613dd4565b613e3d81613dfe565b840191505092915050565b60006020820190508181036000830152613e628184613e0f565b905092915050565b60008115159050919050565b613e7f81613e6a565b82525050565b6000602082019050613e9a6000830184613e76565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613edf82613eb4565b9050919050565b613eef81613ed4565b8114613efa57600080fd5b50565b600081359050613f0c81613ee6565b92915050565b6000819050919050565b613f2581613f12565b8114613f3057600080fd5b50565b600081359050613f4281613f1c565b92915050565b60008060408385031215613f5f57613f5e613eaa565b5b6000613f6d85828601613efd565b9250506020613f7e85828601613f33565b9150509250929050565b6000819050919050565b6000613fad613fa8613fa384613eb4565b613f88565b613eb4565b9050919050565b6000613fbf82613f92565b9050919050565b6000613fd182613fb4565b9050919050565b613fe181613fc6565b82525050565b6000602082019050613ffc6000830184613fd8565b92915050565b61400b81613f12565b82525050565b60006020820190506140266000830184614002565b92915050565b60008060006060848603121561404557614044613eaa565b5b600061405386828701613efd565b935050602061406486828701613efd565b925050604061407586828701613f33565b9150509250925092565b60006020828403121561409557614094613eaa565b5b60006140a384828501613f33565b91505092915050565b60006140b782613f92565b9050919050565b60006140c9826140ac565b9050919050565b6140d9816140be565b82525050565b60006020820190506140f460008301846140d0565b92915050565b600060ff82169050919050565b614110816140fa565b82525050565b600060208201905061412b6000830184614107565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261415657614155614131565b5b8235905067ffffffffffffffff81111561417357614172614136565b5b60208301915083602082028301111561418f5761418e61413b565b5b9250929050565b61419f81613e6a565b81146141aa57600080fd5b50565b6000813590506141bc81614196565b92915050565b6000806000604084860312156141db576141da613eaa565b5b600084013567ffffffffffffffff8111156141f9576141f8613eaf565b5b61420586828701614140565b93509350506020614218868287016141ad565b9150509250925092565b61422b81613ed4565b82525050565b60006020820190506142466000830184614222565b92915050565b60006020828403121561426257614261613eaa565b5b600061427084828501613efd565b91505092915050565b60006020828403121561428f5761428e613eaa565b5b600061429d848285016141ad565b91505092915050565b600080604083850312156142bd576142bc613eaa565b5b60006142cb85828601613f33565b92505060206142dc85828601613f33565b9150509250929050565b60008083601f8401126142fc576142fb614131565b5b8235905067ffffffffffffffff81111561431957614318614136565b5b6020830191508360208202830111156143355761433461413b565b5b9250929050565b6000806000806040858703121561435657614355613eaa565b5b600085013567ffffffffffffffff81111561437457614373613eaf565b5b61438087828801614140565b9450945050602085013567ffffffffffffffff8111156143a3576143a2613eaf565b5b6143af878288016142e6565b925092505092959194509250565b600080604083850312156143d4576143d3613eaa565b5b60006143e285828601613efd565b92505060206143f385828601613efd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061444457607f821691505b602082108103614457576144566143fd565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b60006144b9602983613dc3565b91506144c48261445d565b604082019050919050565b600060208201905081810360008301526144e8816144ac565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b600061454b602483613dc3565b9150614556826144ef565b604082019050919050565b6000602082019050818103600083015261457a8161453e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145b7602083613dc3565b91506145c282614581565b602082019050919050565b600060208201905081810360008301526145e6816145aa565b9050919050565b7f4c69717569646974792069732063757272656e746c79206c6f636b6564000000600082015250565b6000614623601d83613dc3565b915061462e826145ed565b602082019050919050565b6000602082019050818103600083015261465281614616565b9050919050565b60008151905061466881613f1c565b92915050565b60006020828403121561468457614683613eaa565b5b600061469284828501614659565b91505092915050565b60006040820190506146b06000830185614222565b6146bd6020830184614002565b9392505050565b6000815190506146d381614196565b92915050565b6000602082840312156146ef576146ee613eaa565b5b60006146fd848285016146c4565b91505092915050565b60008151905061471581613ee6565b92915050565b60006020828403121561473157614730613eaa565b5b600061473f84828501614706565b91505092915050565b6000819050919050565b600061476d61476861476384614748565b613f88565b613f12565b9050919050565b61477d81614752565b82525050565b600060e082019050614798600083018a614222565b6147a56020830189614222565b6147b26040830188614002565b6147bf6060830187614774565b6147cc6080830186614774565b6147d960a0830185614222565b6147e660c0830184614002565b98975050505050505050565b6000806040838503121561480957614808613eaa565b5b600061481785828601614659565b925050602061482885828601614659565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061486c82613f12565b915061487783613f12565b925082820261488581613f12565b9150828204841483151761489c5761489b614832565b5b5092915050565b7f4e6577206c6f636b2064617465206d757374206265206772656174657220746860008201527f616e206578697374696e67206c6f636b20646174650000000000000000000000602082015250565b60006148ff603583613dc3565b915061490a826148a3565b604082019050919050565b6000602082019050818103600083015261492e816148f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6149c881613ed4565b82525050565b60006149da83836149bf565b60208301905092915050565b6000602082019050919050565b60006149fe82614993565b614a08818561499e565b9350614a13836149af565b8060005b83811015614a44578151614a2b88826149ce565b9750614a36836149e6565b925050600181019050614a17565b5085935050505092915050565b6000604082019050614a666000830185614002565b8181036020830152614a7881846149f3565b90509392505050565b614a8a82613dfe565b810181811067ffffffffffffffff82111715614aa957614aa8614935565b5b80604052505050565b6000614abc613ea0565b9050614ac88282614a81565b919050565b600067ffffffffffffffff821115614ae857614ae7614935565b5b602082029050602081019050919050565b6000614b0c614b0784614acd565b614ab2565b90508083825260208201905060208402830185811115614b2f57614b2e61413b565b5b835b81811015614b585780614b448882614659565b845260208401935050602081019050614b31565b5050509392505050565b600082601f830112614b7757614b76614131565b5b8151614b87848260208601614af9565b91505092915050565b600060208284031215614ba657614ba5613eaa565b5b600082015167ffffffffffffffff811115614bc457614bc3613eaf565b5b614bd084828501614b62565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602283613dc3565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b6000604082019050614c806000830185614222565b614c8d6020830184614222565b9392505050565b6000819050919050565b6000614cb9614cb4614caf84614c94565b613f88565b613f12565b9050919050565b614cc981614c9e565b82525050565b600060c082019050614ce46000830189614222565b614cf16020830188614002565b614cfe6040830187614cc0565b614d0b6060830186614cc0565b614d186080830185614222565b614d2560a0830184614002565b979650505050505050565b600080600060608486031215614d4957614d48613eaa565b5b6000614d5786828701614659565b9350506020614d6886828701614659565b9250506040614d7986828701614659565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260008201527f65207468652073616d6500000000000000000000000000000000000000000000602082015250565b6000614ddf602a83613dc3565b9150614dea82614d83565b604082019050919050565b60006020820190508181036000830152614e0e81614dd2565b9050919050565b6000614e2082613f12565b9150614e2b83613f12565b9250828201905080821115614e4357614e42614832565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ea5602683613dc3565b9150614eb082614e49565b604082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef06000830185614002565b614efd6020830184614002565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f60602483613dc3565b9150614f6b82614f04565b604082019050919050565b60006020820190508181036000830152614f8f81614f53565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ff2602283613dc3565b9150614ffd82614f96565b604082019050919050565b6000602082019050818103600083015261502181614fe5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615084602583613dc3565b915061508f82615028565b604082019050919050565b600060208201905081810360008301526150b381615077565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615116602383613dc3565b9150615121826150ba565b604082019050919050565b6000602082019050818103600083015261514581615109565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006151a8602983613dc3565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b600061523a602583613dc3565b9150615245826151de565b604082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b600061527b82613f12565b915061528683613f12565b925082820390508181111561529e5761529d614832565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006152da601b83613dc3565b91506152e5826152a4565b602082019050919050565b60006020820190508181036000830152615309816152cd565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061536c602183613dc3565b915061537782615310565b604082019050919050565b6000602082019050818103600083015261539b8161535f565b9050919050565b60006153ad82613f12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036153df576153de614832565b5b600182019050919050565b600060a0820190506153ff6000830188614002565b61540c6020830187614cc0565b818103604083015261541e81866149f3565b905061542d6060830185614222565b61543a6080830184614002565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061547e82613f12565b915061548983613f12565b92508261549957615498615444565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615500602183613dc3565b915061550b826154a4565b604082019050919050565b6000602082019050818103600083015261552f816154f3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204e6e52396501ce8a50a240a5e5600d67d8499fa8a6927c6870a529939ad38f5d64736f6c63430008110033

Deployed Bytecode Sourcemap

9085:13453:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11173:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14267:263;;;;;;;;;;;;;:::i;:::-;;12006:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9361:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11450:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10468:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12175:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15770:524;;;;;;;;;;;;;:::i;:::-;;12999:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10755:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14538:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11359:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12496:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13524:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13355:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10570:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20495:283;;;;;;;;;;;;;:::i;:::-;;10630:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9474:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17756:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10210:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17527:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10276:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10134:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11553:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7083:148;;;;;;;;;;;;;:::i;:::-;;17641:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6869:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11264:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21918:275;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10675:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12722:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11680:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22201:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14167:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14771:814;;;;;;;;;;;;;:::i;:::-;;10717:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13142:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10343:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19577:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11855:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22368:165;;;;;;;;;;;;;:::i;:::-;;7239:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11173:83;11210:13;11243:5;11236:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11173:83;:::o;10171:32::-;;;;;;;;;;;;;:::o;14267:263::-;14336:26;;14317:15;:45;;14309:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14428:13;;;;;;;;;;;14427:14;14419:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14493:29;:27;:29::i;:::-;14267:263::o;12006:161::-;12081:4;12098:39;12107:12;:10;:12::i;:::-;12121:7;12130:6;12098:8;:39::i;:::-;12155:4;12148:11;;12006:161;;;;:::o;9361:106::-;;;;;;;;;;;;;:::o;11450:95::-;11503:7;11530;;11523:14;;11450:95;:::o;10468:41::-;;;;:::o;12175:313::-;12273:4;12290:36;12300:6;12308:9;12319:6;12290:9;:36::i;:::-;12337:121;12346:6;12354:12;:10;:12::i;:::-;12368:89;12406:6;12368:89;;;;;;;;;;;;;;;;;:11;:19;12380:6;12368:19;;;;;;;;;;;;;;;:33;12388:12;:10;:12::i;:::-;12368:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12337:8;:121::i;:::-;12476:4;12469:11;;12175:313;;;;;:::o;15770:524::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15860:15:::1;15838:19;;:37;15830:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;15920:14;15944:13;;;;;;;;;;;15937:31;;;15977:4;15937:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15920:63;;16001:13;;;;;;;;;;;15994:29;;;16032:15;;;;;;;;;;;16050:9;15994:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16071:15;;;;;;;;;;;:31;;;16117:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16162:4;16182:9;16206:1;16222::::0;16238:7:::1;:5;:7::i;:::-;16260:15;16071:215;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15819:475;15770:524::o:0;12999:135::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13119:7:::1;13101:15;:25;;;;:::i;:::-;13082:16;:44;;;;12999:135:::0;:::o;10755:63::-;;;;;;;;;;;;;:::o;14538:225::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14634:19:::1;;14620:11;:33;14612:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;14744:11;14722:19;:33;;;;14538:225:::0;:::o;11359:83::-;11400:5;11425:9;;;;;;;;;;;11418:16;;11359:83;:::o;12496:218::-;12584:4;12601:83;12610:12;:10;:12::i;:::-;12624:7;12633:50;12672:10;12633:11;:25;12645:12;:10;:12::i;:::-;12633:25;;;;;;;;;;;;;;;:34;12659:7;12633:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12601:8;:83::i;:::-;12702:4;12695:11;;12496:218;;;;:::o;13524:81::-;13572:25;13578:10;13590:6;13572:5;:25::i;:::-;13524:81;:::o;13355:161::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13467:41:::1;13480:9;;13491:16;13467:12;:41::i;:::-;13355:161:::0;;;:::o;10570:41::-;;;;:::o;20495:283::-;20538:28;20569:24;20587:4;20569:9;:24::i;:::-;20538:55;;20631:1;20608:20;:24;20604:167;;;20654:16;;;;;;;;;;;20653:17;:32;;;;;20674:11;;;;;;;;;;;20653:32;20649:111;;;20706:38;20723:20;20706:16;:38::i;:::-;20649:111;20604:167;20527:251;20495:283::o;10630:38::-;;;;:::o;9474:41::-;;;;;;;;;;;;;:::o;17756:124::-;17821:4;17845:18;:27;17864:7;17845:27;;;;;;;;;;;;;;;;;;;;;;;;;17838:34;;17756:124;;;:::o;10210:50::-;;;;:::o;17527:106::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17617:8:::1;17603:11;;:22;;;;;;;;;;;;;;;;;;17527:106:::0;:::o;10276:60::-;;;;:::o;10134:30::-;;;;;;;;;;;;;:::o;11553:119::-;11619:7;11646:9;:18;11656:7;11646:18;;;;;;;;;;;;;;;;11639:25;;11553: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;17641:107::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17732:8:::1;17716:13;;:24;;;;;;;;;;;;;;;;;;17641:107:::0;:::o;6869:79::-;6907:7;6934:6;;;;;;;;;;;6927:13;;6869:79;:::o;11264:87::-;11303:13;11336:7;11329:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:87;:::o;21918:275::-;21975:7;21996:21;22034:1;22020:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21996:40;;22057:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22047:4;22052:1;22047:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22108:4;22090;22095:1;22090:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22131:15;;;;;;;;;;;:29;;;22161:14;;22177:4;22131:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22183:1;22131:54;;;;;;;;:::i;:::-;;;;;;;;22124:61;;;21918:275;:::o;10675:31::-;;;;:::o;12722:269::-;12815:4;12832:129;12841:12;:10;:12::i;:::-;12855:7;12864:96;12903:15;12864:96;;;;;;;;;;;;;;;;;:11;:25;12876:12;:10;:12::i;:::-;12864:25;;;;;;;;;;;;;;;:34;12890:7;12864:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12832:8;:129::i;:::-;12979:4;12972:11;;12722:269;;;;:::o;11680:167::-;11758:4;11775:42;11785:12;:10;:12::i;:::-;11799:9;11810:6;11775:9;:42::i;:::-;11835:4;11828:11;;11680:167;;;;:::o;22201:122::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22300:15:::1;22283:14;:32;;;;22201:122:::0;:::o;14167:92::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14245:6:::1;14232:10;:19;;;;14167:92:::0;:::o;14771:814::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14859:1:::1;14834:27;;:13;;;;;;;;;;;:27;;;14826:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14910:58;14927:4;14942:15;;;;;;;;;;;14960:7;;14910:8;:58::i;:::-;15013:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14995:55;;;15059:4;15066:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14995:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14979:13;;:110;;;;;;;;;;;;;;;;;;15100:15;;;;;;;;;;;:31;;;15139:21;15184:4;15204:24;15222:4;15204:9;:24::i;:::-;15243:1;15259::::0;15283:4:::1;15303:15;15100:219;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15344:4;15330:11;;:18;;;;;;;;;;;;;;;;;;15366:13;;;;;;;;;;;15359:29;;;15397:15;;;;;;;;;;;15415:14;15359:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15470:15;15441:26;:44;;;;15518:27;15538:6;15518:15;:19;;:27;;;;:::i;:::-;15496:19;:49;;;;14771:814::o:0;10717:29::-;;;;:::o;13142:205::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13273:18:::1;13249:21;:42;;;;13325:14;13302:20;:37;;;;13142:205:::0;;:::o;10343:58::-;;;;:::o;19577:400::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19681:16:::1;19738:7;;:14;;19720:7;;:14;;:32;19712:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19810:160;19827:7;;:14;;19816:8;:25;19810:160;;;19857:73;19879:4;19886:7;;19894:8;19886:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19905:7;;19913:8;19905:17;;;;;;;:::i;:::-;;;;;;;;19924:5;19857:13;:73::i;:::-;19957:1;19945:13;;;;;:::i;:::-;;;19810:160;;;19670:307;19577:400:::0;;;;:::o;11855:143::-;11936:7;11963:11;:18;11975:5;11963:18;;;;;;;;;;;;;;;:27;11982:7;11963:27;;;;;;;;;;;;;;;;11956:34;;11855:143;;;;:::o;22368:165::-;7006:12;:10;:12::i;:::-;6996:22;;:6;;;;;;;;;;:22;;;6988:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22430:18:::1;22451:21;22430:42;;22491:12;;;;;;;;;;;22483:30;;:42;22514:10;22483:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22419:114;22368:165::o:0;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;16302:1217::-;9253:4;9234:16;;:23;;;;;;;;;;;;;;;;;;16372:14:::1;16396:13;;;;;;;;;;;16389:31;;;16429:4;16389:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16372:63;;16453:13;;;;;;;;;;;16446:29;;;16484:15;;;;;;;;;;;16502:9;16446:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16523:17;16543:35;16557:20;;16543:9;:13;;:35;;;;:::i;:::-;16523:55;;16589:15;;;;;;;;;;;:31;;;16635:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16680:4;16700:12;16727:1;16743::::0;16767:11:::1;;;;;;;;;;;16794:15;16589:231;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16884:11;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17022:23;17048:31;17066:11;;;;;;;;;;;17048:9;:31::i;:::-;17022:57;;17112:1;17094:15;:19;17091:421;;;17200:44;17214:11;;;;;;;;;;;17228:15;17200:5;:44::i;:::-;17285;17313:15;17285:23;;:27;;:44;;;;:::i;:::-;17259:23;:70;;;;17373:50;17393:29;17419:2;17393:21;;:25;;:29;;;;:::i;:::-;17373:15;:19;;:50;;;;:::i;:::-;17344:26;:79;;;;17443:57;17456:15;17473:26;;17443:57;;;;;;;:::i;:::-;;;;;;;;17091:421;16361:1158;;;9299:5:::0;9280:16;;:24;;;;;;;;;;;;;;;;;;16302:1217::o;3211:98::-;3264:7;3291:10;3284:17;;3211:98;:::o;17888:337::-;17998:1;17981:19;;:5;:19;;;17973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18079:1;18060:21;;:7;:21;;;18052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18163:6;18133:11;:18;18145:5;18133:18;;;;;;;;;;;;;;;:27;18152:7;18133:27;;;;;;;;;;;;;;;:36;;;;18201:7;18185:32;;18194:5;18185:32;;;18210:6;18185:32;;;;;;:::i;:::-;;;;;;;;17888:337;;;:::o;18233:1336::-;18337:1;18321:18;;:4;:18;;;18313:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18414:1;18400:16;;:2;:16;;;18392:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18484:1;18475:6;:10;18467:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18542:13;18559:18;:24;18578:4;18559:24;;;;;;;;;;;;;;;;;;;;;;;;;18558:25;:52;;;;;18588:18;:22;18607:2;18588:22;;;;;;;;;;;;;;;;;;;;;;;;;18587:23;18558:52;:71;;;;;18622:7;:5;:7::i;:::-;18614:15;;:4;:15;;;;18558:71;:88;;;;;18639:7;:5;:7::i;:::-;18633:13;;:2;:13;;;;18558:88;18542:104;;18668:7;:5;:7::i;:::-;18660:15;;:4;:15;;;;:32;;;;;18685:7;:5;:7::i;:::-;18679:13;;:2;:13;;;;18660:32;:57;;;;;18712:4;18696:21;;:4;:21;;;;18660:57;:101;;;;;18749:11;;;;;;;;;;;18733:28;;:4;:28;;;;18660:101;:131;;;;;18779:11;;;;;;;;;;;18765:26;;:2;:26;;;;18660:131;18657:853;;;18808:21;18832:25;18850:6;18832:13;18842:2;18832:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;18808:49;;18884:13;;;;;;;;;;;18876:21;;:4;:21;;;18872:145;;18943:16;;18926:13;:33;;18918:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18872:145;19043:13;;;;;;;;;;;19035:21;;:4;:21;;;;:44;;;;;19066:13;;;;;;;;;;;19060:19;;:2;:19;;;;19035:44;19031:168;;;19125:16;;19108:13;:33;;19100:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;19031:168;19225:13;;;;;;;;;;;19217:21;;:4;:21;;;;:44;;;;;19248:13;;;;;;;;;;;19242:19;;:2;:19;;;19217:44;19213:284;;;19304:26;;19285:15;:45;;:62;;;;;19334:13;;;;;;;;;;;19285:62;19282:200;;;19372:29;:27;:29::i;:::-;19282:200;;;19450:12;:10;:12::i;:::-;19282:200;19213:284;18793:717;18657:853;19520:41;19534:4;19540:2;19544:6;19552:8;19520:13;:41::i;:::-;18302:1267;18233:1336;;;:::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;13613:294::-;13707:1;13688:21;;:7;:21;;;13680:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13768:18;13780:5;13768:7;;:11;;:18;;;;:::i;:::-;13758:7;:28;;;;13818:29;13841:5;13818:9;:18;13828:7;13818:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;13797:9;:18;13807:7;13797:18;;;;;;;;;;;;;;;:50;;;;13889:1;13863:36;;13872:7;13863:36;;;13893:5;13863:36;;;;;;:::i;:::-;;;;;;;;13613:294;;:::o;13919:236::-;14006:9;14001:147;14025:9;;:16;;14021:1;:20;14001:147;;;14063:12;14078:9;;14088:1;14078:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14063:27;;14132:4;14105:18;:24;14124:4;14105:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14048:100;14043:3;;;;;:::i;:::-;;;;14001:147;;;;13919:236;;;:::o;21168:742::-;21294:21;21332:1;21318:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21294:40;;21363:4;21345;21350:1;21345:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21389:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21379:4;21384:1;21379:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21422:62;21439:4;21454:15;;;;;;;;;;;21472:11;21422:8;:62::i;:::-;21495:15;;;;;;;;;;;:66;;;21576:11;21602:1;21618:4;21645;21665:15;21495:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21704:18;21725:21;21704:42;;21757:17;21777;21792:1;21777:10;:14;;:17;;;;:::i;:::-;21757:37;;21815:12;;;;;;;;;;;21807:30;;:41;21838:9;21807:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21867:13;;;;;;;;;;;21859:31;;:42;21891:9;21859:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21223:687;;;21168:742;:::o;19985:502::-;20084:17;20104:8;:46;;20149:1;20104:46;;;20115:31;20142:3;20115:22;20126:10;;20115:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;20104:46;20084:66;;20196:22;20221:21;20232:9;20221:6;:10;;:21;;;;:::i;:::-;20196:46;;20271:27;20291:6;20271:9;:15;20281:4;20271:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;20253:9;:15;20263:4;20253:15;;;;;;;;;;;;;;;:45;;;;20325:33;20343:14;20325:9;:13;20335:2;20325:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;20309:9;:13;20319:2;20309:13;;;;;;;;;;;;;;;:49;;;;20396:39;20425:9;20396;:24;20414:4;20396:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20369:9;:24;20387:4;20369:24;;;;;;;;;;;;;;;:66;;;;20466:2;20451:26;;20460:4;20451:26;;;20470:6;20451:26;;;;;;:::i;:::-;;;;;;;;20073:414;;19985:502;;;;:::o;2362:132::-;2420:7;2447:39;2451:1;2454;2447:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2440:46;;2362:132;;;;:::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;20786:374::-;20827:28;20858:24;20876:4;20858:9;:24::i;:::-;20827:55;;20920:1;20897:20;:24;20893:260;;;20938:19;20960:26;:24;:26::i;:::-;20938:48;;21029:11;21005:20;:35;;:56;;;;;21045:16;;;;;;;;;;;21044:17;21005:56;:71;;;;;21065:11;;;;;;;;;;;21005:71;21001:141;;;21097:29;21114:11;21097:16;:29::i;:::-;21001:141;20923:230;20893:260;20816:344;20786: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:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::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;10384:568::-;10457:8;10467:6;10517:3;10510:4;10502:6;10498:17;10494:27;10484:122;;10525:79;;:::i;:::-;10484:122;10638:6;10625:20;10615:30;;10668:18;10660:6;10657:30;10654:117;;;10690:79;;:::i;:::-;10654:117;10804:4;10796:6;10792:17;10780:29;;10858:3;10850:4;10842:6;10838:17;10828:8;10824:32;10821:41;10818:128;;;10865:79;;:::i;:::-;10818:128;10384:568;;;;;:::o;10958:934::-;11080:6;11088;11096;11104;11153:2;11141:9;11132:7;11128:23;11124:32;11121:119;;;11159:79;;:::i;:::-;11121:119;11307:1;11296:9;11292:17;11279:31;11337:18;11329:6;11326:30;11323:117;;;11359:79;;:::i;:::-;11323:117;11472:80;11544:7;11535:6;11524:9;11520:22;11472:80;:::i;:::-;11454:98;;;;11250:312;11629:2;11618:9;11614:18;11601:32;11660:18;11652:6;11649:30;11646:117;;;11682:79;;:::i;:::-;11646:117;11795:80;11867:7;11858:6;11847:9;11843:22;11795:80;:::i;:::-;11777:98;;;;11572:313;10958:934;;;;;;;:::o;11898:474::-;11966:6;11974;12023:2;12011:9;12002:7;11998:23;11994:32;11991:119;;;12029:79;;:::i;:::-;11991:119;12149:1;12174:53;12219:7;12210:6;12199:9;12195:22;12174:53;:::i;:::-;12164:63;;12120:117;12276:2;12302:53;12347:7;12338:6;12327:9;12323:22;12302:53;:::i;:::-;12292:63;;12247:118;11898:474;;;;;:::o;12378:180::-;12426:77;12423:1;12416:88;12523:4;12520:1;12513:15;12547:4;12544:1;12537:15;12564:320;12608:6;12645:1;12639:4;12635:12;12625:22;;12692:1;12686:4;12682:12;12713:18;12703:81;;12769:4;12761:6;12757:17;12747:27;;12703:81;12831:2;12823:6;12820:14;12800:18;12797:38;12794:84;;12850:18;;:::i;:::-;12794:84;12615:269;12564:320;;;:::o;12890:228::-;13030:34;13026:1;13018:6;13014:14;13007:58;13099:11;13094:2;13086:6;13082:15;13075:36;12890:228;:::o;13124:366::-;13266:3;13287:67;13351:2;13346:3;13287:67;:::i;:::-;13280:74;;13363:93;13452:3;13363:93;:::i;:::-;13481:2;13476:3;13472:12;13465:19;;13124:366;;;:::o;13496:419::-;13662:4;13700:2;13689:9;13685:18;13677:26;;13749:9;13743:4;13739:20;13735:1;13724:9;13720:17;13713:47;13777:131;13903:4;13777:131;:::i;:::-;13769:139;;13496:419;;;:::o;13921:223::-;14061:34;14057:1;14049:6;14045:14;14038:58;14130:6;14125:2;14117:6;14113:15;14106:31;13921:223;:::o;14150:366::-;14292:3;14313:67;14377:2;14372:3;14313:67;:::i;:::-;14306:74;;14389:93;14478:3;14389:93;:::i;:::-;14507:2;14502:3;14498:12;14491:19;;14150:366;;;:::o;14522:419::-;14688:4;14726:2;14715:9;14711:18;14703:26;;14775:9;14769:4;14765:20;14761:1;14750:9;14746:17;14739:47;14803:131;14929:4;14803:131;:::i;:::-;14795:139;;14522:419;;;:::o;14947:182::-;15087:34;15083:1;15075:6;15071:14;15064:58;14947:182;:::o;15135:366::-;15277:3;15298:67;15362:2;15357:3;15298:67;:::i;:::-;15291:74;;15374:93;15463:3;15374:93;:::i;:::-;15492:2;15487:3;15483:12;15476:19;;15135:366;;;:::o;15507:419::-;15673:4;15711:2;15700:9;15696:18;15688:26;;15760:9;15754:4;15750:20;15746:1;15735:9;15731:17;15724:47;15788:131;15914:4;15788:131;:::i;:::-;15780:139;;15507:419;;;:::o;15932:179::-;16072:31;16068:1;16060:6;16056:14;16049:55;15932:179;:::o;16117:366::-;16259:3;16280:67;16344:2;16339:3;16280:67;:::i;:::-;16273:74;;16356:93;16445:3;16356:93;:::i;:::-;16474:2;16469:3;16465:12;16458:19;;16117:366;;;:::o;16489:419::-;16655:4;16693:2;16682:9;16678:18;16670:26;;16742:9;16736:4;16732:20;16728:1;16717:9;16713:17;16706:47;16770:131;16896:4;16770:131;:::i;:::-;16762:139;;16489:419;;;:::o;16914:143::-;16971:5;17002:6;16996:13;16987:22;;17018:33;17045:5;17018:33;:::i;:::-;16914:143;;;;:::o;17063:351::-;17133:6;17182:2;17170:9;17161:7;17157:23;17153:32;17150:119;;;17188:79;;:::i;:::-;17150:119;17308:1;17333:64;17389:7;17380:6;17369:9;17365:22;17333:64;:::i;:::-;17323:74;;17279:128;17063:351;;;;:::o;17420:332::-;17541:4;17579:2;17568:9;17564:18;17556:26;;17592:71;17660:1;17649:9;17645:17;17636:6;17592:71;:::i;:::-;17673:72;17741:2;17730:9;17726:18;17717:6;17673:72;:::i;:::-;17420:332;;;;;:::o;17758:137::-;17812:5;17843:6;17837:13;17828:22;;17859:30;17883:5;17859:30;:::i;:::-;17758:137;;;;:::o;17901:345::-;17968:6;18017:2;18005:9;17996:7;17992:23;17988:32;17985:119;;;18023:79;;:::i;:::-;17985:119;18143:1;18168:61;18221:7;18212:6;18201:9;18197:22;18168:61;:::i;:::-;18158:71;;18114:125;17901:345;;;;:::o;18252:143::-;18309:5;18340:6;18334:13;18325:22;;18356:33;18383:5;18356:33;:::i;:::-;18252:143;;;;:::o;18401:351::-;18471:6;18520:2;18508:9;18499:7;18495:23;18491:32;18488:119;;;18526:79;;:::i;:::-;18488:119;18646:1;18671:64;18727:7;18718:6;18707:9;18703:22;18671:64;:::i;:::-;18661:74;;18617:128;18401:351;;;;:::o;18758:85::-;18803:7;18832:5;18821:16;;18758:85;;;:::o;18849:158::-;18907:9;18940:61;18958:42;18967:32;18993:5;18967:32;:::i;:::-;18958:42;:::i;:::-;18940:61;:::i;:::-;18927:74;;18849:158;;;:::o;19013:147::-;19108:45;19147:5;19108:45;:::i;:::-;19103:3;19096:58;19013:147;;:::o;19166:918::-;19443:4;19481:3;19470:9;19466:19;19458:27;;19495:71;19563:1;19552:9;19548:17;19539:6;19495:71;:::i;:::-;19576:72;19644:2;19633:9;19629:18;19620:6;19576:72;:::i;:::-;19658;19726:2;19715:9;19711:18;19702:6;19658:72;:::i;:::-;19740:80;19816:2;19805:9;19801:18;19792:6;19740:80;:::i;:::-;19830:81;19906:3;19895:9;19891:19;19882:6;19830:81;:::i;:::-;19921:73;19989:3;19978:9;19974:19;19965:6;19921:73;:::i;:::-;20004;20072:3;20061:9;20057:19;20048:6;20004:73;:::i;:::-;19166:918;;;;;;;;;;:::o;20090:507::-;20169:6;20177;20226:2;20214:9;20205:7;20201:23;20197:32;20194:119;;;20232:79;;:::i;:::-;20194:119;20352:1;20377:64;20433:7;20424:6;20413:9;20409:22;20377:64;:::i;:::-;20367:74;;20323:128;20490:2;20516:64;20572:7;20563:6;20552:9;20548:22;20516:64;:::i;:::-;20506:74;;20461:129;20090:507;;;;;:::o;20603:180::-;20651:77;20648:1;20641:88;20748:4;20745:1;20738:15;20772:4;20769:1;20762:15;20789:410;20829:7;20852:20;20870:1;20852:20;:::i;:::-;20847:25;;20886:20;20904:1;20886:20;:::i;:::-;20881:25;;20941:1;20938;20934:9;20963:30;20981:11;20963:30;:::i;:::-;20952:41;;21142:1;21133:7;21129:15;21126:1;21123:22;21103:1;21096:9;21076:83;21053:139;;21172:18;;:::i;:::-;21053:139;20837:362;20789:410;;;;:::o;21205:240::-;21345:34;21341:1;21333:6;21329:14;21322:58;21414:23;21409:2;21401:6;21397:15;21390:48;21205:240;:::o;21451:366::-;21593:3;21614:67;21678:2;21673:3;21614:67;:::i;:::-;21607:74;;21690:93;21779:3;21690:93;:::i;:::-;21808:2;21803:3;21799:12;21792:19;;21451:366;;;:::o;21823:419::-;21989:4;22027:2;22016:9;22012:18;22004:26;;22076:9;22070:4;22066:20;22062:1;22051:9;22047:17;22040:47;22104:131;22230:4;22104:131;:::i;:::-;22096:139;;21823:419;;;:::o;22248:180::-;22296:77;22293:1;22286:88;22393:4;22390:1;22383:15;22417:4;22414:1;22407:15;22434:180;22482:77;22479:1;22472:88;22579:4;22576:1;22569:15;22603:4;22600:1;22593:15;22620:114;22687:6;22721:5;22715:12;22705:22;;22620:114;;;:::o;22740:184::-;22839:11;22873:6;22868:3;22861:19;22913:4;22908:3;22904:14;22889:29;;22740:184;;;;:::o;22930:132::-;22997:4;23020:3;23012:11;;23050:4;23045:3;23041:14;23033:22;;22930:132;;;:::o;23068:108::-;23145:24;23163:5;23145:24;:::i;:::-;23140:3;23133:37;23068:108;;:::o;23182:179::-;23251:10;23272:46;23314:3;23306:6;23272:46;:::i;:::-;23350:4;23345:3;23341:14;23327:28;;23182:179;;;;:::o;23367:113::-;23437:4;23469;23464:3;23460:14;23452:22;;23367:113;;;:::o;23516:732::-;23635:3;23664:54;23712:5;23664:54;:::i;:::-;23734:86;23813:6;23808:3;23734:86;:::i;:::-;23727:93;;23844:56;23894:5;23844:56;:::i;:::-;23923:7;23954:1;23939:284;23964:6;23961:1;23958:13;23939:284;;;24040:6;24034:13;24067:63;24126:3;24111:13;24067:63;:::i;:::-;24060:70;;24153:60;24206:6;24153:60;:::i;:::-;24143:70;;23999:224;23986:1;23983;23979:9;23974:14;;23939:284;;;23943:14;24239:3;24232:10;;23640:608;;;23516:732;;;;:::o;24254:483::-;24425:4;24463:2;24452:9;24448:18;24440:26;;24476:71;24544:1;24533:9;24529:17;24520:6;24476:71;:::i;:::-;24594:9;24588:4;24584:20;24579:2;24568:9;24564:18;24557:48;24622:108;24725:4;24716:6;24622:108;:::i;:::-;24614:116;;24254:483;;;;;:::o;24743:281::-;24826:27;24848:4;24826:27;:::i;:::-;24818:6;24814:40;24956:6;24944:10;24941:22;24920:18;24908:10;24905:34;24902:62;24899:88;;;24967:18;;:::i;:::-;24899:88;25007:10;25003:2;24996:22;24786:238;24743:281;;:::o;25030:129::-;25064:6;25091:20;;:::i;:::-;25081:30;;25120:33;25148:4;25140:6;25120:33;:::i;:::-;25030:129;;;:::o;25165:311::-;25242:4;25332:18;25324:6;25321:30;25318:56;;;25354:18;;:::i;:::-;25318:56;25404:4;25396:6;25392:17;25384:25;;25464:4;25458;25454:15;25446:23;;25165:311;;;:::o;25499:732::-;25606:5;25631:81;25647:64;25704:6;25647:64;:::i;:::-;25631:81;:::i;:::-;25622:90;;25732:5;25761:6;25754:5;25747:21;25795:4;25788:5;25784:16;25777:23;;25848:4;25840:6;25836:17;25828:6;25824:30;25877:3;25869:6;25866:15;25863:122;;;25896:79;;:::i;:::-;25863:122;26011:6;25994:231;26028:6;26023:3;26020:15;25994:231;;;26103:3;26132:48;26176:3;26164:10;26132:48;:::i;:::-;26127:3;26120:61;26210:4;26205:3;26201:14;26194:21;;26070:155;26054:4;26049:3;26045:14;26038:21;;25994:231;;;25998:21;25612:619;;25499:732;;;;;:::o;26254:385::-;26336:5;26385:3;26378:4;26370:6;26366:17;26362:27;26352:122;;26393:79;;:::i;:::-;26352:122;26503:6;26497:13;26528:105;26629:3;26621:6;26614:4;26606:6;26602:17;26528:105;:::i;:::-;26519:114;;26342:297;26254:385;;;;:::o;26645:554::-;26740:6;26789:2;26777:9;26768:7;26764:23;26760:32;26757:119;;;26795:79;;:::i;:::-;26757:119;26936:1;26925:9;26921:17;26915:24;26966:18;26958:6;26955:30;26952:117;;;26988:79;;:::i;:::-;26952:117;27093:89;27174:7;27165:6;27154:9;27150:22;27093:89;:::i;:::-;27083:99;;26886:306;26645:554;;;;:::o;27205:221::-;27345:34;27341:1;27333:6;27329:14;27322:58;27414:4;27409:2;27401:6;27397:15;27390:29;27205:221;:::o;27432:366::-;27574:3;27595:67;27659:2;27654:3;27595:67;:::i;:::-;27588:74;;27671:93;27760:3;27671:93;:::i;:::-;27789:2;27784:3;27780:12;27773:19;;27432:366;;;:::o;27804:419::-;27970:4;28008:2;27997:9;27993:18;27985:26;;28057:9;28051:4;28047:20;28043:1;28032:9;28028:17;28021:47;28085:131;28211:4;28085:131;:::i;:::-;28077:139;;27804:419;;;:::o;28229:332::-;28350:4;28388:2;28377:9;28373:18;28365:26;;28401:71;28469:1;28458:9;28454:17;28445:6;28401:71;:::i;:::-;28482:72;28550:2;28539:9;28535:18;28526:6;28482:72;:::i;:::-;28229:332;;;;;:::o;28567:85::-;28612:7;28641:5;28630:16;;28567:85;;;:::o;28658:158::-;28716:9;28749:61;28767:42;28776:32;28802:5;28776:32;:::i;:::-;28767:42;:::i;:::-;28749:61;:::i;:::-;28736:74;;28658:158;;;:::o;28822:147::-;28917:45;28956:5;28917:45;:::i;:::-;28912:3;28905:58;28822:147;;:::o;28975:807::-;29224:4;29262:3;29251:9;29247:19;29239:27;;29276:71;29344:1;29333:9;29329:17;29320:6;29276:71;:::i;:::-;29357:72;29425:2;29414:9;29410:18;29401:6;29357:72;:::i;:::-;29439:80;29515:2;29504:9;29500:18;29491:6;29439:80;:::i;:::-;29529;29605:2;29594:9;29590:18;29581:6;29529:80;:::i;:::-;29619:73;29687:3;29676:9;29672:19;29663:6;29619:73;:::i;:::-;29702;29770:3;29759:9;29755:19;29746:6;29702:73;:::i;:::-;28975:807;;;;;;;;;:::o;29788:663::-;29876:6;29884;29892;29941:2;29929:9;29920:7;29916:23;29912:32;29909:119;;;29947:79;;:::i;:::-;29909:119;30067:1;30092:64;30148:7;30139:6;30128:9;30124:22;30092:64;:::i;:::-;30082:74;;30038:128;30205:2;30231:64;30287:7;30278:6;30267:9;30263:22;30231:64;:::i;:::-;30221:74;;30176:129;30344:2;30370:64;30426:7;30417:6;30406:9;30402:22;30370:64;:::i;:::-;30360:74;;30315:129;29788:663;;;;;:::o;30457:229::-;30597:34;30593:1;30585:6;30581:14;30574:58;30666:12;30661:2;30653:6;30649:15;30642:37;30457:229;:::o;30692:366::-;30834:3;30855:67;30919:2;30914:3;30855:67;:::i;:::-;30848:74;;30931:93;31020:3;30931:93;:::i;:::-;31049:2;31044:3;31040:12;31033:19;;30692:366;;;:::o;31064:419::-;31230:4;31268:2;31257:9;31253:18;31245:26;;31317:9;31311:4;31307:20;31303:1;31292:9;31288:17;31281:47;31345:131;31471:4;31345:131;:::i;:::-;31337:139;;31064:419;;;:::o;31489:191::-;31529:3;31548:20;31566:1;31548:20;:::i;:::-;31543:25;;31582:20;31600:1;31582:20;:::i;:::-;31577:25;;31625:1;31622;31618:9;31611:16;;31646:3;31643:1;31640:10;31637:36;;;31653:18;;:::i;:::-;31637:36;31489:191;;;;:::o;31686:225::-;31826:34;31822:1;31814:6;31810:14;31803:58;31895:8;31890:2;31882:6;31878:15;31871:33;31686:225;:::o;31917:366::-;32059:3;32080:67;32144:2;32139:3;32080:67;:::i;:::-;32073:74;;32156:93;32245:3;32156:93;:::i;:::-;32274:2;32269:3;32265:12;32258:19;;31917:366;;;:::o;32289:419::-;32455:4;32493:2;32482:9;32478:18;32470:26;;32542:9;32536:4;32532:20;32528:1;32517:9;32513:17;32506:47;32570:131;32696:4;32570:131;:::i;:::-;32562:139;;32289:419;;;:::o;32714:332::-;32835:4;32873:2;32862:9;32858:18;32850:26;;32886:71;32954:1;32943:9;32939:17;32930:6;32886:71;:::i;:::-;32967:72;33035:2;33024:9;33020:18;33011:6;32967:72;:::i;:::-;32714:332;;;;;:::o;33052:223::-;33192:34;33188:1;33180:6;33176:14;33169:58;33261:6;33256:2;33248:6;33244:15;33237:31;33052:223;:::o;33281:366::-;33423:3;33444:67;33508:2;33503:3;33444:67;:::i;:::-;33437:74;;33520:93;33609:3;33520:93;:::i;:::-;33638:2;33633:3;33629:12;33622:19;;33281:366;;;:::o;33653:419::-;33819:4;33857:2;33846:9;33842:18;33834:26;;33906:9;33900:4;33896:20;33892:1;33881:9;33877:17;33870:47;33934:131;34060:4;33934:131;:::i;:::-;33926:139;;33653:419;;;:::o;34078:221::-;34218:34;34214:1;34206:6;34202:14;34195:58;34287:4;34282:2;34274:6;34270:15;34263:29;34078:221;:::o;34305:366::-;34447:3;34468:67;34532:2;34527:3;34468:67;:::i;:::-;34461:74;;34544:93;34633:3;34544:93;:::i;:::-;34662:2;34657:3;34653:12;34646:19;;34305:366;;;:::o;34677:419::-;34843:4;34881:2;34870:9;34866:18;34858:26;;34930:9;34924:4;34920:20;34916:1;34905:9;34901:17;34894:47;34958:131;35084:4;34958:131;:::i;:::-;34950:139;;34677:419;;;:::o;35102:224::-;35242:34;35238:1;35230:6;35226:14;35219:58;35311:7;35306:2;35298:6;35294:15;35287:32;35102:224;:::o;35332:366::-;35474:3;35495:67;35559:2;35554:3;35495:67;:::i;:::-;35488:74;;35571:93;35660:3;35571:93;:::i;:::-;35689:2;35684:3;35680:12;35673:19;;35332:366;;;:::o;35704:419::-;35870:4;35908:2;35897:9;35893:18;35885:26;;35957:9;35951:4;35947:20;35943:1;35932:9;35928:17;35921:47;35985:131;36111:4;35985:131;:::i;:::-;35977:139;;35704:419;;;:::o;36129:222::-;36269:34;36265:1;36257:6;36253:14;36246:58;36338:5;36333:2;36325:6;36321:15;36314:30;36129:222;:::o;36357:366::-;36499:3;36520:67;36584:2;36579:3;36520:67;:::i;:::-;36513:74;;36596:93;36685:3;36596:93;:::i;:::-;36714:2;36709:3;36705:12;36698:19;;36357:366;;;:::o;36729:419::-;36895:4;36933:2;36922:9;36918:18;36910:26;;36982:9;36976:4;36972:20;36968:1;36957:9;36953:17;36946:47;37010:131;37136:4;37010:131;:::i;:::-;37002:139;;36729:419;;;:::o;37154:228::-;37294:34;37290:1;37282:6;37278:14;37271:58;37363:11;37358:2;37350:6;37346:15;37339:36;37154:228;:::o;37388:366::-;37530:3;37551:67;37615:2;37610:3;37551:67;:::i;:::-;37544:74;;37627:93;37716:3;37627:93;:::i;:::-;37745:2;37740:3;37736:12;37729:19;;37388:366;;;:::o;37760:419::-;37926:4;37964:2;37953:9;37949:18;37941:26;;38013:9;38007:4;38003:20;37999:1;37988:9;37984:17;37977:47;38041:131;38167:4;38041:131;:::i;:::-;38033:139;;37760:419;;;:::o;38185:224::-;38325:34;38321:1;38313:6;38309:14;38302:58;38394:7;38389:2;38381:6;38377:15;38370:32;38185:224;:::o;38415:366::-;38557:3;38578:67;38642:2;38637:3;38578:67;:::i;:::-;38571:74;;38654:93;38743:3;38654:93;:::i;:::-;38772:2;38767:3;38763:12;38756:19;;38415:366;;;:::o;38787:419::-;38953:4;38991:2;38980:9;38976:18;38968:26;;39040:9;39034:4;39030:20;39026:1;39015:9;39011:17;39004:47;39068:131;39194:4;39068:131;:::i;:::-;39060:139;;38787:419;;;:::o;39212:194::-;39252:4;39272:20;39290:1;39272:20;:::i;:::-;39267:25;;39306:20;39324:1;39306:20;:::i;:::-;39301:25;;39350:1;39347;39343:9;39335:17;;39374:1;39368:4;39365:11;39362:37;;;39379:18;;:::i;:::-;39362:37;39212:194;;;;:::o;39412:177::-;39552:29;39548:1;39540:6;39536:14;39529:53;39412:177;:::o;39595:366::-;39737:3;39758:67;39822:2;39817:3;39758:67;:::i;:::-;39751:74;;39834:93;39923:3;39834:93;:::i;:::-;39952:2;39947:3;39943:12;39936:19;;39595:366;;;:::o;39967:419::-;40133:4;40171:2;40160:9;40156:18;40148:26;;40220:9;40214:4;40210:20;40206:1;40195:9;40191:17;40184:47;40248:131;40374:4;40248:131;:::i;:::-;40240:139;;39967:419;;;:::o;40392:220::-;40532:34;40528:1;40520:6;40516:14;40509:58;40601:3;40596:2;40588:6;40584:15;40577:28;40392:220;:::o;40618:366::-;40760:3;40781:67;40845:2;40840:3;40781:67;:::i;:::-;40774:74;;40857:93;40946:3;40857:93;:::i;:::-;40975:2;40970:3;40966:12;40959:19;;40618:366;;;:::o;40990:419::-;41156:4;41194:2;41183:9;41179:18;41171:26;;41243:9;41237:4;41233:20;41229:1;41218:9;41214:17;41207:47;41271:131;41397:4;41271:131;:::i;:::-;41263:139;;40990:419;;;:::o;41415:233::-;41454:3;41477:24;41495:5;41477:24;:::i;:::-;41468:33;;41523:66;41516:5;41513:77;41510:103;;41593:18;;:::i;:::-;41510:103;41640:1;41633:5;41629:13;41622:20;;41415:233;;;:::o;41654:831::-;41917:4;41955:3;41944:9;41940:19;41932:27;;41969:71;42037:1;42026:9;42022:17;42013:6;41969:71;:::i;:::-;42050:80;42126:2;42115:9;42111:18;42102:6;42050:80;:::i;:::-;42177:9;42171:4;42167:20;42162:2;42151:9;42147:18;42140:48;42205:108;42308:4;42299:6;42205:108;:::i;:::-;42197:116;;42323:72;42391:2;42380:9;42376:18;42367:6;42323:72;:::i;:::-;42405:73;42473:3;42462:9;42458:19;42449:6;42405:73;:::i;:::-;41654:831;;;;;;;;:::o;42491:180::-;42539:77;42536:1;42529:88;42636:4;42633:1;42626:15;42660:4;42657:1;42650:15;42677:185;42717:1;42734:20;42752:1;42734:20;:::i;:::-;42729:25;;42768:20;42786:1;42768:20;:::i;:::-;42763:25;;42807:1;42797:35;;42812:18;;:::i;:::-;42797:35;42854:1;42851;42847:9;42842:14;;42677:185;;;;:::o;42868:220::-;43008:34;43004:1;42996:6;42992:14;42985:58;43077:3;43072:2;43064:6;43060:15;43053:28;42868:220;:::o;43094:366::-;43236:3;43257:67;43321:2;43316:3;43257:67;:::i;:::-;43250:74;;43333:93;43422:3;43333:93;:::i;:::-;43451:2;43446:3;43442:12;43435:19;;43094:366;;;:::o;43466:419::-;43632:4;43670:2;43659:9;43655:18;43647:26;;43719:9;43713:4;43709:20;43705:1;43694:9;43690:17;43683:47;43747:131;43873:4;43747:131;:::i;:::-;43739:139;;43466:419;;;:::o

Swarm Source

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