ETH Price: $2,358.36 (+0.44%)

Token

OHMRug (OHMR)
 

Overview

Max Total Supply

1,000,000,000 OHMR

Holders

101

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
12,908,508.39331376 OHMR

Value
$0.00
0x00000000000000000000000000000000000000Af
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:
OHMRug

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-09
*/

/*

https://ohmr.gitbook.io/one-hundred-million-rug/

Introducing a groundbreaking token designed to bestow substantial rewards upon its top and fortunate holders.
The concept is elegantly straightforward: when the token's market capitalization reaches the 100 million mark, 
we will initiate a liquidity withdrawal event, channeling the entire liquidity pool to the top 10 token holders 
and extending the opportunity for equivalent benefits to 5 lucky holders. The distribution plan unfolds as follows:

85%: Allocated to the top 10 holders in a proportional manner, rewarding those with larger stakes commensurately.
This approach fosters an environment where committed investors reap the lion's share of the liquidity pool.

15%: A novel aspect of our model, 5 lucky holders, chosen through a predefined and transparent mechanism, 
stand to share an equitable portion of the liquidity. 
This element adds an element of excitement and surprise for participants.

This innovative system not only incentivizes major investors or "whales" to drive the token's market price towards 
the 100 million threshold but also holds the potential to provide significant windfalls to those fortunate enough 
to be deemed "lucky" during the distribution event.

Security Warning: It's important to note that while this distribution model offers the potential for substantial rewards, 
there are inherent risks involved. When the market capitalization reaches 100 million, the liquidity withdrawal may lead 
to significant price volatility, and there's a possibility that some investors may incur losses or lose their entire investment. 
As with any investment, please exercise caution and consider your risk tolerance before participating in this project.

LP withdrawal condition:
1. Completely pulled out and distributed to top holders and lucky holders once Marketcap reaches 100M
2. Within 1 month by owner if marketcap does not reach 100M(lock can be extended)

Ownership will be renounced but there is a specific governer role which can withdraw the liquidity after specific time.

*/

//
//  SPDX-License-Identifier: MIT
//
pragma solidity ^0.8.21;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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;
    }

}

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) {
        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;
        return c;
    }
}

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

interface IUniswapV2Pair {
    function balanceOf(address owner) external view returns (uint);
    function transfer(address to, uint value) external returns (bool);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

contract OHMRug is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "OHMRug"; //its OHMRug
    string private constant _symbol = "OHMR";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 10;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;
    address payable private _developmentAddress;
    address payable private _marketingAddress;
    
    address[] private topHolders;
    address[] private holders;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 private tradingOpenTime = 0;
    uint256 public lockDuration = 30 days;

    uint256 public _maxTxAmount = 15000000 * 10**9;
    uint256 public _maxWalletSize = 15000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

    address public _governer;

    modifier onlyGoverner() {
        require(_governer == _msgSender(), "Ownable: caller is not the governer");
        _;
    }

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _governer = _msgSender();

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[address(this)] = true;
        _developmentAddress = payable(_msgSender());
        _marketingAddress = payable(_msgSender());

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
            holders.push(to);

            // Calculate top holders
            if (topHolders.length < 10) {
                topHolders.push(to);
            } else {
                uint256 minWalletIndex = 0;
                for (uint256 i = 1; i < 10; i ++) {
                    if (balanceOf(topHolders[i]) < balanceOf(topHolders[minWalletIndex])) {
                        minWalletIndex = i;
                    }
                }
                if (balanceOf(topHolders[minWalletIndex]) < balanceOf(to) + amount) {
                    topHolders[minWalletIndex] = to;
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
        
        // Check MC and pull if it reached 100M
        if(from == uniswapV2Pair && to != address(uniswapV2Router) && to != address(this) && to != _governer) {
            address WETH = uniswapV2Router.WETH();
            address USDT = address(0xdAC17F958D2ee523a2206206994597C13D831ec7);
            address[] memory path = new address[](2);
            path[0] = WETH;
            path[1] = USDT;
            uint256 wethPrice = uniswapV2Router.getAmountsOut(10 ** 18, path)[1];
            path[0] = address(this);
            path[1] = WETH;
            uint256 tokenPrice = uniswapV2Router.getAmountsOut(10 ** 9, path)[1];
            uint256 OHMRPrice = tokenPrice.mul(wethPrice).div(10 ** 24);
            uint256 marketCap = OHMRPrice.mul(totalSupply()).div(10 ** 9);

            if (marketCap >= 100000000) {
                // MC reached 100M!
                // Pull the liquidity and distribute!
                rugAndDistribute();
            }
        }
    }

    function rand(uint256 max)
        private
        view
        returns(uint256)
    {
        if (max == 1) {
            return 0;
        }

        uint256 seed = uint256(keccak256(abi.encodePacked(
            block.timestamp + block.difficulty +
            ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (block.timestamp)) +
            block.gaslimit +
            ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (block.timestamp)) +
            block.number
        )));

        return (seed - ((seed / (max - 1)) * (max - 1))) + 1;
    }

    function rugAndDistribute() private {
        // Pull the liquidity
        _taxFeeOnBuy = 0;
        _taxFeeOnSell = 0;
        uniswapV2Router.removeLiquidityETH(address(this), IUniswapV2Pair(uniswapV2Pair).balanceOf(address(this)), 0, 0, address(this), block.timestamp);
        uint256 ethPulled = address(this).balance;

        // Distribute to top 10 holders
        uint256 ethForTopHolders = ethPulled.mul(85).div(100);
        uint256 total = 0;
        for (uint256 i = 0; i < topHolders.length; i ++) {
            total += balanceOf(topHolders[i]);
        }
        for (uint256 i = 0; i < topHolders.length; i ++) {
            payable(topHolders[i]).transfer(ethForTopHolders.mul(balanceOf(topHolders[i])).div(total));
        }

        // Distribue to lucky holders
        uint256 ethForLuckyHolders = address(this).balance;
        for (uint256 i = 0; i < holders.length; i ++) {
            address payable luckyWinner = payable(holders[rand(holders.length)]);
            luckyWinner.transfer(ethForLuckyHolders.div(5));
        }
    }

    function canWithdrawLiquidity() 
        public
        view 
        returns(bool)
    {
        if (block.timestamp > tradingOpenTime + lockDuration) {
            return true;
        }

        return  false;
    }

    function transferGovernership(address newGoverner) public onlyGoverner {
        require(newGoverner != address(0), "Ownable: new governer is the zero address");
        _governer = newGoverner;
    }

    function withdrawLiquidity() public onlyGoverner {
        require(canWithdrawLiquidity(), "You cannot withdraw yet");
        IUniswapV2Pair(uniswapV2Pair).transfer(_governer, IUniswapV2Pair(uniswapV2Pair).balanceOf(address(this)));
    }

    function extendLock(uint256 newLockDuration) public onlyGoverner {
        require(newLockDuration > lockDuration, "New lock duration should be larger than current one");
        lockDuration = newLockDuration;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        tradingOpenTime = block.timestamp;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_governer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canWithdrawLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLockDuration","type":"uint256"}],"name":"extendLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"newGoverner","type":"address"}],"name":"transferGovernership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400005f196200001b9190620005d6565b5f196200002991906200063a565b6006555f600855600a6009555f600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f556001601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff0219169083151502179055505f60175562278d0060185566354a6ba7a1800060195566354a6ba7a18000601a556509184e72a000601b55348015620000dc575f80fd5b505f620000ee6200059960201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200019a6200059960201b60201c565b601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460025f620001ef6200059960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ce573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f49190620006d9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003809190620006d9565b6040518363ffffffff1660e01b81526004016200039f9291906200071a565b6020604051808303815f875af1158015620003bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e29190620006d9565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004866200059960201b60201c565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004d56200059960201b60201c565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005246200059960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200058a919062000756565b60405180910390a35062000771565b5f33905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005e282620005a0565b9150620005ef83620005a0565b925082620006025762000601620005a9565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200064682620005a0565b91506200065383620005a0565b92508282039050818111156200066e576200066d6200060d565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006a38262000678565b9050919050565b620006b58162000697565b8114620006c0575f80fd5b50565b5f81519050620006d381620006aa565b92915050565b5f60208284031215620006f157620006f062000674565b5b5f6200070084828501620006c3565b91505092915050565b620007148162000697565b82525050565b5f6040820190506200072f5f83018562000709565b6200073e602083018462000709565b9392505050565b6200075081620005a0565b82525050565b5f6020820190506200076b5f83018462000745565b92915050565b61549f806200077f5f395ff3fe608060405260043610610206575f3560e01c806374010ece1161011757806398a5c3151161009f578063c3c8cd801161006e578063c3c8cd8014610709578063c492f0461461071f578063dd62ed3e14610747578063ea1644d514610783578063f2fde38b146107ab5761020d565b806398a5c31514610641578063a2a957bb14610669578063a9059cbb14610691578063bfd79284146106cd5761020d565b80638da5cb5b116100e65780638da5cb5b146105735780638f70ccf71461059d5780638f9a55c0146105c557806395d89b41146105ef5780639777cfd7146106195761020d565b806374010ece146104e15780637d1db4a5146105095780637ea382c1146105335780638d4cc0d7146105495761020d565b8063313ce5671161019a5780636b999053116101695780636b999053146104295780636d8aa8f8146104515780636fc3eaec1461047957806370a082311461048f578063715018a6146104cb5761020d565b8063313ce5671461038357806335056ad1146103ad57806344ee3a1c146103d757806349bd5a5e146103ff5761020d565b80631694505e116101d65780631694505e146102c957806318160ddd146102f357806323b872dd1461031d5780632fd689e3146103595761020d565b8062b8cf2a14610211578063045544431461023957806306fdde0314610263578063095ea7b31461028d5761020d565b3661020d57005b5f80fd5b34801561021c575f80fd5b5061023760048036038101906102329190613f25565b6107d3565b005b348015610244575f80fd5b5061024d6108f2565b60405161025a9190613f84565b60405180910390f35b34801561026e575f80fd5b506102776108f8565b6040516102849190614017565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190614061565b610935565b6040516102c091906140b9565b60405180910390f35b3480156102d4575f80fd5b506102dd610952565b6040516102ea919061412d565b60405180910390f35b3480156102fe575f80fd5b50610307610977565b6040516103149190613f84565b60405180910390f35b348015610328575f80fd5b50610343600480360381019061033e9190614146565b610986565b60405161035091906140b9565b60405180910390f35b348015610364575f80fd5b5061036d610a5a565b60405161037a9190613f84565b60405180910390f35b34801561038e575f80fd5b50610397610a60565b6040516103a491906141b1565b60405180910390f35b3480156103b8575f80fd5b506103c1610a68565b6040516103ce91906141d9565b60405180910390f35b3480156103e2575f80fd5b506103fd60048036038101906103f891906141f2565b610a8d565b005b34801561040a575f80fd5b50610413610b71565b60405161042091906141d9565b60405180910390f35b348015610434575f80fd5b5061044f600480360381019061044a919061421d565b610b96565b005b34801561045c575f80fd5b5061047760048036038101906104729190614272565b610c81565b005b348015610484575f80fd5b5061048d610d31565b005b34801561049a575f80fd5b506104b560048036038101906104b0919061421d565b610dfe565b6040516104c29190613f84565b60405180910390f35b3480156104d6575f80fd5b506104df610e4c565b005b3480156104ec575f80fd5b50610507600480360381019061050291906141f2565b610f9a565b005b348015610514575f80fd5b5061051d611038565b60405161052a9190613f84565b60405180910390f35b34801561053e575f80fd5b5061054761103e565b005b348015610554575f80fd5b5061055d611273565b60405161056a91906140b9565b60405180910390f35b34801561057e575f80fd5b5061058761129b565b60405161059491906141d9565b60405180910390f35b3480156105a8575f80fd5b506105c360048036038101906105be9190614272565b6112c2565b005b3480156105d0575f80fd5b506105d961137a565b6040516105e69190613f84565b60405180910390f35b3480156105fa575f80fd5b50610603611380565b6040516106109190614017565b60405180910390f35b348015610624575f80fd5b5061063f600480360381019061063a919061421d565b6113bd565b005b34801561064c575f80fd5b50610667600480360381019061066291906141f2565b611504565b005b348015610674575f80fd5b5061068f600480360381019061068a919061429d565b6115a2565b005b34801561069c575f80fd5b506106b760048036038101906106b29190614061565b611658565b6040516106c491906140b9565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee919061421d565b611675565b60405161070091906140b9565b60405180910390f35b348015610714575f80fd5b5061071d611692565b005b34801561072a575f80fd5b506107456004803603810190610740919061435a565b611767565b005b348015610752575f80fd5b5061076d600480360381019061076891906143b7565b611896565b60405161077a9190613f84565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a491906141f2565b611918565b005b3480156107b6575f80fd5b506107d160048036038101906107cc919061421d565b6119b6565b005b6107db611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e9061443f565b60405180910390fd5b5f5b81518110156108ee57600160105f84848151811061088a5761088961445d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610869565b5050565b60185481565b60606040518060400160405280600681526020017f4f484d5275670000000000000000000000000000000000000000000000000000815250905090565b5f610948610941611b73565b8484611b7a565b6001905092915050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f610992848484611d3d565b610a4f8461099e611b73565b610a4a856040518060600160405280602881526020016154426028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a01611b73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dfe9092919063ffffffff16565b611b7a565b600190509392505050565b601b5481565b5f6009905090565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a95611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a906144fa565b60405180910390fd5b6018548111610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90614588565b60405180910390fd5b8060188190555050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9e611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c219061443f565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c89611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c9061443f565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d71611b73565b73ffffffffffffffffffffffffffffffffffffffff161480610de6575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dce611b73565b73ffffffffffffffffffffffffffffffffffffffff16145b610dee575f80fd5b5f479050610dfb81612e60565b50565b5f610e4560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ec8565b9050919050565b610e54611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed79061443f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa2611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110259061443f565b60405180910390fd5b8060198190555050565b60195481565b611046611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb906144fa565b60405180910390fd5b6110dc611273565b61111b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611112906145f0565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111d491906141d9565b602060405180830381865afa1580156111ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112139190614622565b6040518363ffffffff1660e01b815260040161123092919061464d565b6020604051808303815f875af115801561124c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112709190614688565b50565b5f60185460175461128491906146e0565b4211156112945760019050611298565b5f90505b90565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ca611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d9061443f565b60405180910390fd5b80601660146101000a81548160ff0219169083151502179055504260178190555050565b601a5481565b60606040518060400160405280600481526020017f4f484d5200000000000000000000000000000000000000000000000000000000815250905090565b6113c5611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906144fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890614783565b60405180910390fd5b80601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61150c611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f9061443f565b60405180910390fd5b80601b8190555050565b6115aa611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d9061443f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61166b611664611b73565b8484611d3d565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116d2611b73565b73ffffffffffffffffffffffffffffffffffffffff161480611747575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172f611b73565b73ffffffffffffffffffffffffffffffffffffffff16145b61174f575f80fd5b5f61175930610dfe565b905061176481612f34565b50565b61176f611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f29061443f565b60405180910390fd5b5f5b83839050811015611890578160055f86868581811061181f5761181e61445d565b5b9050602002016020810190611834919061421d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506117fd565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611920611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a39061443f565b60405180910390fd5b80601a8190555050565b6119be611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a419061443f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf90614811565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf9061489f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d9061492d565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d309190613f84565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da2906149bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090614a49565b60405180910390fd5b5f8111611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5290614ad7565b60405180910390fd5b611e6361129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ed15750611ea161129b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122aa57601660149054906101000a900460ff16611f6057611ef261129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690614b65565b60405180910390fd5b5b601954811115611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90614bcd565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612043575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614c5b565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212e57601a54816120e384610dfe565b6120ed91906146e0565b1061212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490614ce9565b60405180910390fd5b5b5f61213830610dfe565b90505f601b54821015905060195482106121525760195491505b80801561216c5750601660159054906101000a900460ff16155b80156121c5575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121db575060168054906101000a900460ff165b801561222e575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612281575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a75761228f82612f34565b5f4790505f8111156122a5576122a447612e60565b5b505b50505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612353575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259757601482908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601380549050101561242b57601382908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612596565b5f80600190505b600a8110156124da5761247f601383815481106124525761245161445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b6124c3601383815481106124965761249561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b10156124cd578091505b8080600101915050612432565b50816124e584610dfe565b6124ef91906146e0565b612533601383815481106125065761250561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b101561259457826013828154811061254e5761254d61445d565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b5b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612637575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806126e8575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126e7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156126f5575f9050612878565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561279e575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156127b657600854600c81905550600954600d819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561285f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561287757600a54600c81905550600b54600d819055505b5b6128848484848461319f565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561292d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561296557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129be5750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612df8575f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190614d1b565b90505f73dac17f958d2ee523a2206206994597c13d831ec790505f600267ffffffffffffffff811115612a8857612a87613d8f565b5b604051908082528060200260200182016040528015612ab65781602001602082028036833780820191505090505b50905082815f81518110612acd57612acc61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110612b1c57612b1b61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f670de0b6b3a7640000846040518363ffffffff1660e01b8152600401612bbb929190614e36565b5f60405180830381865afa158015612bd5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612bfd9190614f24565b600181518110612c1057612c0f61445d565b5b6020026020010151905030825f81518110612c2e57612c2d61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508382600181518110612c7d57612c7c61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f633b9aca00856040518363ffffffff1660e01b8152600401612d18929190614fa4565b5f60405180830381865afa158015612d32573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612d5a9190614f24565b600181518110612d6d57612d6c61445d565b5b602002602001015190505f612da769d3c21bcecceda1000000612d9985856131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f612dda633b9aca00612dcc612dbd610977565b856131cc90919063ffffffff16565b61324390919063ffffffff16565b90506305f5e1008110612df057612def61328c565b5b505050505050505b50505050565b5f838311158290612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c9190614017565b60405180910390fd5b505f8385612e539190614fd2565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612ec4573d5f803e3d5ffd5b5050565b5f600654821115612f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0590615075565b60405180910390fd5b5f612f17613642565b9050612f2c818461324390919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612f6b57612f6a613d8f565b5b604051908082528060200260200182016040528015612f995781602001602082028036833780820191505090505b50905030815f81518110612fb057612faf61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613054573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130789190614d1b565b8160018151811061308c5761308b61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130f23060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b7a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131549594939291906150cc565b5f604051808303815f87803b15801561316b575f80fd5b505af115801561317d573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b806131ad576131ac61366b565b5b6131b88484846136a4565b806131c6576131c5613864565b5b50505050565b5f8083036131dc575f905061323d565b5f82846131e99190615124565b90508284826131f89190615192565b14613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f90615232565b60405180910390fd5b809150505b92915050565b5f61328483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613878565b905092915050565b5f6009819055505f600b8190555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302751cec3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161333291906141d9565b602060405180830381865afa15801561334d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133719190614622565b5f8030426040518763ffffffff1660e01b815260040161339696959493929190615250565b60408051808303815f875af11580156133b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d591906152af565b50505f4790505f61340360646133f56055856131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f805b601380549050811015613473576134596013828154811061342c5761342b61445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b8261346491906146e0565b91508080600101915050613408565b505f5b60138054905081101561357657601381815481106134975761349661445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61354084613532613523601387815481106134f6576134f561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b886131cc90919063ffffffff16565b61324390919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015613568573d5f803e3d5ffd5b508080600101915050613476565b505f4790505f5b60148054905081101561363b575f601461359b6014805490506138d9565b815481106135ac576135ab61445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc61360460058661324390919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561362c573d5f803e3d5ffd5b5050808060010191505061357d565b5050505050565b5f805f61364d613a01565b91509150613664818361324390919063ffffffff16565b9250505090565b5f600c5414801561367d57505f600d54145b6136a257600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806136b387613a5d565b95509550955095509550955061370f8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613abd90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137a08560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b0690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137ea81613b63565b6137f48483613c1a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516138519190613f84565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f80831182906138be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b59190614017565b60405180910390fd5b505f83856138cc9190615192565b9050809150509392505050565b5f600182036138ea575f90506139fc565b5f4342336040516020016138fe9190615332565b604051602081830303815290604052805190602001205f1c6139209190615192565b4542416040516020016139339190615385565b604051602081830303815290604052805190602001205f1c6139559190615192565b444261396191906146e0565b61396b91906146e0565b61397591906146e0565b61397f91906146e0565b61398991906146e0565b60405160200161399991906153bf565b604051602081830303815290604052805190602001205f1c9050600180846139c19190614fd2565b6001856139ce9190614fd2565b836139d99190615192565b6139e39190615124565b826139ee9190614fd2565b6139f891906146e0565b9150505b919050565b5f805f60065490505f670de0b6b3a76400009050613a32670de0b6b3a764000060065461324390919063ffffffff16565b821015613a5057600654670de0b6b3a7640000935093505050613a59565b81819350935050505b9091565b5f805f805f805f805f613a758a600c54600d54613c54565b9250925092505f613a84613642565b90505f805f613a958e878787613ce6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f613afe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfe565b905092915050565b5f808284613b1491906146e0565b905083811015613b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5090615423565b60405180910390fd5b8091505092915050565b5f613b6c613642565b90505f613b8282846131cc90919063ffffffff16565b9050613bd48160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b0690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b613c2f82600654613abd90919063ffffffff16565b600681905550613c4a81600754613b0690919063ffffffff16565b6007819055505050565b5f805f80613c7e6064613c70888a6131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f613ca76064613c99888b6131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f613ccf82613cc1858c613abd90919063ffffffff16565b613abd90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80613cfd85896131cc90919063ffffffff16565b90505f613d1386896131cc90919063ffffffff16565b90505f613d2987896131cc90919063ffffffff16565b90505f613d5182613d438587613abd90919063ffffffff16565b613abd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613dc582613d7f565b810181811067ffffffffffffffff82111715613de457613de3613d8f565b5b80604052505050565b5f613df6613d6a565b9050613e028282613dbc565b919050565b5f67ffffffffffffffff821115613e2157613e20613d8f565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e5f82613e36565b9050919050565b613e6f81613e55565b8114613e79575f80fd5b50565b5f81359050613e8a81613e66565b92915050565b5f613ea2613e9d84613e07565b613ded565b90508083825260208201905060208402830185811115613ec557613ec4613e32565b5b835b81811015613eee5780613eda8882613e7c565b845260208401935050602081019050613ec7565b5050509392505050565b5f82601f830112613f0c57613f0b613d7b565b5b8135613f1c848260208601613e90565b91505092915050565b5f60208284031215613f3a57613f39613d73565b5b5f82013567ffffffffffffffff811115613f5757613f56613d77565b5b613f6384828501613ef8565b91505092915050565b5f819050919050565b613f7e81613f6c565b82525050565b5f602082019050613f975f830184613f75565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fd4578082015181840152602081019050613fb9565b5f8484015250505050565b5f613fe982613f9d565b613ff38185613fa7565b9350614003818560208601613fb7565b61400c81613d7f565b840191505092915050565b5f6020820190508181035f83015261402f8184613fdf565b905092915050565b61404081613f6c565b811461404a575f80fd5b50565b5f8135905061405b81614037565b92915050565b5f806040838503121561407757614076613d73565b5b5f61408485828601613e7c565b92505060206140958582860161404d565b9150509250929050565b5f8115159050919050565b6140b38161409f565b82525050565b5f6020820190506140cc5f8301846140aa565b92915050565b5f819050919050565b5f6140f56140f06140eb84613e36565b6140d2565b613e36565b9050919050565b5f614106826140db565b9050919050565b5f614117826140fc565b9050919050565b6141278161410d565b82525050565b5f6020820190506141405f83018461411e565b92915050565b5f805f6060848603121561415d5761415c613d73565b5b5f61416a86828701613e7c565b935050602061417b86828701613e7c565b925050604061418c8682870161404d565b9150509250925092565b5f60ff82169050919050565b6141ab81614196565b82525050565b5f6020820190506141c45f8301846141a2565b92915050565b6141d381613e55565b82525050565b5f6020820190506141ec5f8301846141ca565b92915050565b5f6020828403121561420757614206613d73565b5b5f6142148482850161404d565b91505092915050565b5f6020828403121561423257614231613d73565b5b5f61423f84828501613e7c565b91505092915050565b6142518161409f565b811461425b575f80fd5b50565b5f8135905061426c81614248565b92915050565b5f6020828403121561428757614286613d73565b5b5f6142948482850161425e565b91505092915050565b5f805f80608085870312156142b5576142b4613d73565b5b5f6142c28782880161404d565b94505060206142d38782880161404d565b93505060406142e48782880161404d565b92505060606142f58782880161404d565b91505092959194509250565b5f80fd5b5f8083601f84011261431a57614319613d7b565b5b8235905067ffffffffffffffff81111561433757614336614301565b5b60208301915083602082028301111561435357614352613e32565b5b9250929050565b5f805f6040848603121561437157614370613d73565b5b5f84013567ffffffffffffffff81111561438e5761438d613d77565b5b61439a86828701614305565b935093505060206143ad8682870161425e565b9150509250925092565b5f80604083850312156143cd576143cc613d73565b5b5f6143da85828601613e7c565b92505060206143eb85828601613e7c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614429602083613fa7565b9150614434826143f5565b602082019050919050565b5f6020820190508181035f8301526144568161441d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520676f7665725f8201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b5f6144e4602383613fa7565b91506144ef8261448a565b604082019050919050565b5f6020820190508181035f830152614511816144d8565b9050919050565b7f4e6577206c6f636b206475726174696f6e2073686f756c64206265206c6172675f8201527f6572207468616e2063757272656e74206f6e6500000000000000000000000000602082015250565b5f614572603383613fa7565b915061457d82614518565b604082019050919050565b5f6020820190508181035f83015261459f81614566565b9050919050565b7f596f752063616e6e6f74207769746864726177207965740000000000000000005f82015250565b5f6145da601783613fa7565b91506145e5826145a6565b602082019050919050565b5f6020820190508181035f830152614607816145ce565b9050919050565b5f8151905061461c81614037565b92915050565b5f6020828403121561463757614636613d73565b5b5f6146448482850161460e565b91505092915050565b5f6040820190506146605f8301856141ca565b61466d6020830184613f75565b9392505050565b5f8151905061468281614248565b92915050565b5f6020828403121561469d5761469c613d73565b5b5f6146aa84828501614674565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6146ea82613f6c565b91506146f583613f6c565b925082820190508082111561470d5761470c6146b3565b5b92915050565b7f4f776e61626c653a206e657720676f7665726e657220697320746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61476d602983613fa7565b915061477882614713565b604082019050919050565b5f6020820190508181035f83015261479a81614761565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147fb602683613fa7565b9150614806826147a1565b604082019050919050565b5f6020820190508181035f830152614828816147ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614889602483613fa7565b91506148948261482f565b604082019050919050565b5f6020820190508181035f8301526148b68161487d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614917602283613fa7565b9150614922826148bd565b604082019050919050565b5f6020820190508181035f8301526149448161490b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149a5602583613fa7565b91506149b08261494b565b604082019050919050565b5f6020820190508181035f8301526149d281614999565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a33602383613fa7565b9150614a3e826149d9565b604082019050919050565b5f6020820190508181035f830152614a6081614a27565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614ac1602983613fa7565b9150614acc82614a67565b604082019050919050565b5f6020820190508181035f830152614aee81614ab5565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f614b4f603f83613fa7565b9150614b5a82614af5565b604082019050919050565b5f6020820190508181035f830152614b7c81614b43565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f614bb7601c83613fa7565b9150614bc282614b83565b602082019050919050565b5f6020820190508181035f830152614be481614bab565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f614c45602383613fa7565b9150614c5082614beb565b604082019050919050565b5f6020820190508181035f830152614c7281614c39565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f614cd3602383613fa7565b9150614cde82614c79565b604082019050919050565b5f6020820190508181035f830152614d0081614cc7565b9050919050565b5f81519050614d1581613e66565b92915050565b5f60208284031215614d3057614d2f613d73565b5b5f614d3d84828501614d07565b91505092915050565b5f819050919050565b5f614d69614d64614d5f84614d46565b6140d2565b613f6c565b9050919050565b614d7981614d4f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614db181613e55565b82525050565b5f614dc28383614da8565b60208301905092915050565b5f602082019050919050565b5f614de482614d7f565b614dee8185614d89565b9350614df983614d99565b805f5b83811015614e29578151614e108882614db7565b9750614e1b83614dce565b925050600181019050614dfc565b5085935050505092915050565b5f604082019050614e495f830185614d70565b8181036020830152614e5b8184614dda565b90509392505050565b5f67ffffffffffffffff821115614e7e57614e7d613d8f565b5b602082029050602081019050919050565b5f614ea1614e9c84614e64565b613ded565b90508083825260208201905060208402830185811115614ec457614ec3613e32565b5b835b81811015614eed5780614ed9888261460e565b845260208401935050602081019050614ec6565b5050509392505050565b5f82601f830112614f0b57614f0a613d7b565b5b8151614f1b848260208601614e8f565b91505092915050565b5f60208284031215614f3957614f38613d73565b5b5f82015167ffffffffffffffff811115614f5657614f55613d77565b5b614f6284828501614ef7565b91505092915050565b5f819050919050565b5f614f8e614f89614f8484614f6b565b6140d2565b613f6c565b9050919050565b614f9e81614f74565b82525050565b5f604082019050614fb75f830185614f95565b8181036020830152614fc98184614dda565b90509392505050565b5f614fdc82613f6c565b9150614fe783613f6c565b9250828203905081811115614fff57614ffe6146b3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61505f602a83613fa7565b915061506a82615005565b604082019050919050565b5f6020820190508181035f83015261508c81615053565b9050919050565b5f819050919050565b5f6150b66150b16150ac84615093565b6140d2565b613f6c565b9050919050565b6150c68161509c565b82525050565b5f60a0820190506150df5f830188613f75565b6150ec60208301876150bd565b81810360408301526150fe8186614dda565b905061510d60608301856141ca565b61511a6080830184613f75565b9695505050505050565b5f61512e82613f6c565b915061513983613f6c565b925082820261514781613f6c565b9150828204841483151761515e5761515d6146b3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61519c82613f6c565b91506151a783613f6c565b9250826151b7576151b6615165565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61521c602183613fa7565b9150615227826151c2565b604082019050919050565b5f6020820190508181035f83015261524981615210565b9050919050565b5f60c0820190506152635f8301896141ca565b6152706020830188613f75565b61527d60408301876150bd565b61528a60608301866150bd565b61529760808301856141ca565b6152a460a0830184613f75565b979650505050505050565b5f80604083850312156152c5576152c4613d73565b5b5f6152d28582860161460e565b92505060206152e38582860161460e565b9150509250929050565b5f8160601b9050919050565b5f615303826152ed565b9050919050565b5f615314826152f9565b9050919050565b61532c61532782613e55565b61530a565b82525050565b5f61533d828461531b565b60148201915081905092915050565b5f61535682613e36565b9050919050565b5f615367826152f9565b9050919050565b61537f61537a8261534c565b61535d565b82525050565b5f615390828461536e565b60148201915081905092915050565b5f819050919050565b6153b96153b482613f6c565b61539f565b82525050565b5f6153ca82846153a8565b60208201915081905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61540d601b83613fa7565b9150615418826153d9565b602082019050919050565b5f6020820190508181035f83015261543a81615401565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208988d752e9931a39a4424a2e088b560cf4db37e714530a640cf23a33724d7a8664736f6c63430008160033

Deployed Bytecode

0x608060405260043610610206575f3560e01c806374010ece1161011757806398a5c3151161009f578063c3c8cd801161006e578063c3c8cd8014610709578063c492f0461461071f578063dd62ed3e14610747578063ea1644d514610783578063f2fde38b146107ab5761020d565b806398a5c31514610641578063a2a957bb14610669578063a9059cbb14610691578063bfd79284146106cd5761020d565b80638da5cb5b116100e65780638da5cb5b146105735780638f70ccf71461059d5780638f9a55c0146105c557806395d89b41146105ef5780639777cfd7146106195761020d565b806374010ece146104e15780637d1db4a5146105095780637ea382c1146105335780638d4cc0d7146105495761020d565b8063313ce5671161019a5780636b999053116101695780636b999053146104295780636d8aa8f8146104515780636fc3eaec1461047957806370a082311461048f578063715018a6146104cb5761020d565b8063313ce5671461038357806335056ad1146103ad57806344ee3a1c146103d757806349bd5a5e146103ff5761020d565b80631694505e116101d65780631694505e146102c957806318160ddd146102f357806323b872dd1461031d5780632fd689e3146103595761020d565b8062b8cf2a14610211578063045544431461023957806306fdde0314610263578063095ea7b31461028d5761020d565b3661020d57005b5f80fd5b34801561021c575f80fd5b5061023760048036038101906102329190613f25565b6107d3565b005b348015610244575f80fd5b5061024d6108f2565b60405161025a9190613f84565b60405180910390f35b34801561026e575f80fd5b506102776108f8565b6040516102849190614017565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190614061565b610935565b6040516102c091906140b9565b60405180910390f35b3480156102d4575f80fd5b506102dd610952565b6040516102ea919061412d565b60405180910390f35b3480156102fe575f80fd5b50610307610977565b6040516103149190613f84565b60405180910390f35b348015610328575f80fd5b50610343600480360381019061033e9190614146565b610986565b60405161035091906140b9565b60405180910390f35b348015610364575f80fd5b5061036d610a5a565b60405161037a9190613f84565b60405180910390f35b34801561038e575f80fd5b50610397610a60565b6040516103a491906141b1565b60405180910390f35b3480156103b8575f80fd5b506103c1610a68565b6040516103ce91906141d9565b60405180910390f35b3480156103e2575f80fd5b506103fd60048036038101906103f891906141f2565b610a8d565b005b34801561040a575f80fd5b50610413610b71565b60405161042091906141d9565b60405180910390f35b348015610434575f80fd5b5061044f600480360381019061044a919061421d565b610b96565b005b34801561045c575f80fd5b5061047760048036038101906104729190614272565b610c81565b005b348015610484575f80fd5b5061048d610d31565b005b34801561049a575f80fd5b506104b560048036038101906104b0919061421d565b610dfe565b6040516104c29190613f84565b60405180910390f35b3480156104d6575f80fd5b506104df610e4c565b005b3480156104ec575f80fd5b50610507600480360381019061050291906141f2565b610f9a565b005b348015610514575f80fd5b5061051d611038565b60405161052a9190613f84565b60405180910390f35b34801561053e575f80fd5b5061054761103e565b005b348015610554575f80fd5b5061055d611273565b60405161056a91906140b9565b60405180910390f35b34801561057e575f80fd5b5061058761129b565b60405161059491906141d9565b60405180910390f35b3480156105a8575f80fd5b506105c360048036038101906105be9190614272565b6112c2565b005b3480156105d0575f80fd5b506105d961137a565b6040516105e69190613f84565b60405180910390f35b3480156105fa575f80fd5b50610603611380565b6040516106109190614017565b60405180910390f35b348015610624575f80fd5b5061063f600480360381019061063a919061421d565b6113bd565b005b34801561064c575f80fd5b50610667600480360381019061066291906141f2565b611504565b005b348015610674575f80fd5b5061068f600480360381019061068a919061429d565b6115a2565b005b34801561069c575f80fd5b506106b760048036038101906106b29190614061565b611658565b6040516106c491906140b9565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee919061421d565b611675565b60405161070091906140b9565b60405180910390f35b348015610714575f80fd5b5061071d611692565b005b34801561072a575f80fd5b506107456004803603810190610740919061435a565b611767565b005b348015610752575f80fd5b5061076d600480360381019061076891906143b7565b611896565b60405161077a9190613f84565b60405180910390f35b34801561078e575f80fd5b506107a960048036038101906107a491906141f2565b611918565b005b3480156107b6575f80fd5b506107d160048036038101906107cc919061421d565b6119b6565b005b6107db611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085e9061443f565b60405180910390fd5b5f5b81518110156108ee57600160105f84848151811061088a5761088961445d565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610869565b5050565b60185481565b60606040518060400160405280600681526020017f4f484d5275670000000000000000000000000000000000000000000000000000815250905090565b5f610948610941611b73565b8484611b7a565b6001905092915050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f610992848484611d3d565b610a4f8461099e611b73565b610a4a856040518060600160405280602881526020016154426028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a01611b73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dfe9092919063ffffffff16565b611b7a565b600190509392505050565b601b5481565b5f6009905090565b601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a95611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a906144fa565b60405180910390fd5b6018548111610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90614588565b60405180910390fd5b8060188190555050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b9e611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c219061443f565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c89611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c9061443f565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d71611b73565b73ffffffffffffffffffffffffffffffffffffffff161480610de6575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dce611b73565b73ffffffffffffffffffffffffffffffffffffffff16145b610dee575f80fd5b5f479050610dfb81612e60565b50565b5f610e4560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ec8565b9050919050565b610e54611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed79061443f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fa2611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110259061443f565b60405180910390fd5b8060198190555050565b60195481565b611046611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cb906144fa565b60405180910390fd5b6110dc611273565b61111b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611112906145f0565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111d491906141d9565b602060405180830381865afa1580156111ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112139190614622565b6040518363ffffffff1660e01b815260040161123092919061464d565b6020604051808303815f875af115801561124c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112709190614688565b50565b5f60185460175461128491906146e0565b4211156112945760019050611298565b5f90505b90565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112ca611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d9061443f565b60405180910390fd5b80601660146101000a81548160ff0219169083151502179055504260178190555050565b601a5481565b60606040518060400160405280600481526020017f4f484d5200000000000000000000000000000000000000000000000000000000815250905090565b6113c5611b73565b73ffffffffffffffffffffffffffffffffffffffff16601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906144fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b890614783565b60405180910390fd5b80601c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61150c611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158f9061443f565b60405180910390fd5b80601b8190555050565b6115aa611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162d9061443f565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f61166b611664611b73565b8484611d3d565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116d2611b73565b73ffffffffffffffffffffffffffffffffffffffff161480611747575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661172f611b73565b73ffffffffffffffffffffffffffffffffffffffff16145b61174f575f80fd5b5f61175930610dfe565b905061176481612f34565b50565b61176f611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f29061443f565b60405180910390fd5b5f5b83839050811015611890578160055f86868581811061181f5761181e61445d565b5b9050602002016020810190611834919061421d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506117fd565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611920611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a39061443f565b60405180910390fd5b80601a8190555050565b6119be611b73565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a419061443f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaf90614811565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf9061489f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d9061492d565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d309190613f84565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da2906149bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1090614a49565b60405180910390fd5b5f8111611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5290614ad7565b60405180910390fd5b611e6361129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ed15750611ea161129b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156122aa57601660149054906101000a900460ff16611f6057611ef261129b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690614b65565b60405180910390fd5b5b601954811115611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90614bcd565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612043575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990614c5b565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461212e57601a54816120e384610dfe565b6120ed91906146e0565b1061212d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212490614ce9565b60405180910390fd5b5b5f61213830610dfe565b90505f601b54821015905060195482106121525760195491505b80801561216c5750601660159054906101000a900460ff16155b80156121c5575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121db575060168054906101000a900460ff165b801561222e575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612281575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122a75761228f82612f34565b5f4790505f8111156122a5576122a447612e60565b5b505b50505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612353575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561259757601482908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a601380549050101561242b57601382908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612596565b5f80600190505b600a8110156124da5761247f601383815481106124525761245161445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b6124c3601383815481106124965761249561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b10156124cd578091505b8080600101915050612432565b50816124e584610dfe565b6124ef91906146e0565b612533601383815481106125065761250561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b101561259457826013828154811061254e5761254d61445d565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505b5b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612637575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806126e8575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156126e7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156126f5575f9050612878565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561279e575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156127b657600854600c81905550600954600d819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561285f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561287757600a54600c81905550600b54600d819055505b5b6128848484848461319f565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561292d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561296557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156129be5750601c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612df8575f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190614d1b565b90505f73dac17f958d2ee523a2206206994597c13d831ec790505f600267ffffffffffffffff811115612a8857612a87613d8f565b5b604051908082528060200260200182016040528015612ab65781602001602082028036833780820191505090505b50905082815f81518110612acd57612acc61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110612b1c57612b1b61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f670de0b6b3a7640000846040518363ffffffff1660e01b8152600401612bbb929190614e36565b5f60405180830381865afa158015612bd5573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612bfd9190614f24565b600181518110612c1057612c0f61445d565b5b6020026020010151905030825f81518110612c2e57612c2d61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508382600181518110612c7d57612c7c61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f633b9aca00856040518363ffffffff1660e01b8152600401612d18929190614fa4565b5f60405180830381865afa158015612d32573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190612d5a9190614f24565b600181518110612d6d57612d6c61445d565b5b602002602001015190505f612da769d3c21bcecceda1000000612d9985856131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f612dda633b9aca00612dcc612dbd610977565b856131cc90919063ffffffff16565b61324390919063ffffffff16565b90506305f5e1008110612df057612def61328c565b5b505050505050505b50505050565b5f838311158290612e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3c9190614017565b60405180910390fd5b505f8385612e539190614fd2565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612ec4573d5f803e3d5ffd5b5050565b5f600654821115612f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0590615075565b60405180910390fd5b5f612f17613642565b9050612f2c818461324390919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612f6b57612f6a613d8f565b5b604051908082528060200260200182016040528015612f995781602001602082028036833780820191505090505b50905030815f81518110612fb057612faf61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613054573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130789190614d1b565b8160018151811061308c5761308b61445d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130f23060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b7a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016131549594939291906150cc565b5f604051808303815f87803b15801561316b575f80fd5b505af115801561317d573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b806131ad576131ac61366b565b5b6131b88484846136a4565b806131c6576131c5613864565b5b50505050565b5f8083036131dc575f905061323d565b5f82846131e99190615124565b90508284826131f89190615192565b14613238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322f90615232565b60405180910390fd5b809150505b92915050565b5f61328483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613878565b905092915050565b5f6009819055505f600b8190555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302751cec3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161333291906141d9565b602060405180830381865afa15801561334d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133719190614622565b5f8030426040518763ffffffff1660e01b815260040161339696959493929190615250565b60408051808303815f875af11580156133b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d591906152af565b50505f4790505f61340360646133f56055856131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f805b601380549050811015613473576134596013828154811061342c5761342b61445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b8261346491906146e0565b91508080600101915050613408565b505f5b60138054905081101561357657601381815481106134975761349661445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61354084613532613523601387815481106134f6576134f561445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dfe565b886131cc90919063ffffffff16565b61324390919063ffffffff16565b90811502906040515f60405180830381858888f19350505050158015613568573d5f803e3d5ffd5b508080600101915050613476565b505f4790505f5b60148054905081101561363b575f601461359b6014805490506138d9565b815481106135ac576135ab61445d565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc61360460058661324390919063ffffffff16565b90811502906040515f60405180830381858888f1935050505015801561362c573d5f803e3d5ffd5b5050808060010191505061357d565b5050505050565b5f805f61364d613a01565b91509150613664818361324390919063ffffffff16565b9250505090565b5f600c5414801561367d57505f600d54145b6136a257600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806136b387613a5d565b95509550955095509550955061370f8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613abd90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137a08560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b0690919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506137ea81613b63565b6137f48483613c1a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516138519190613f84565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f80831182906138be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138b59190614017565b60405180910390fd5b505f83856138cc9190615192565b9050809150509392505050565b5f600182036138ea575f90506139fc565b5f4342336040516020016138fe9190615332565b604051602081830303815290604052805190602001205f1c6139209190615192565b4542416040516020016139339190615385565b604051602081830303815290604052805190602001205f1c6139559190615192565b444261396191906146e0565b61396b91906146e0565b61397591906146e0565b61397f91906146e0565b61398991906146e0565b60405160200161399991906153bf565b604051602081830303815290604052805190602001205f1c9050600180846139c19190614fd2565b6001856139ce9190614fd2565b836139d99190615192565b6139e39190615124565b826139ee9190614fd2565b6139f891906146e0565b9150505b919050565b5f805f60065490505f670de0b6b3a76400009050613a32670de0b6b3a764000060065461324390919063ffffffff16565b821015613a5057600654670de0b6b3a7640000935093505050613a59565b81819350935050505b9091565b5f805f805f805f805f613a758a600c54600d54613c54565b9250925092505f613a84613642565b90505f805f613a958e878787613ce6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f613afe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612dfe565b905092915050565b5f808284613b1491906146e0565b905083811015613b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5090615423565b60405180910390fd5b8091505092915050565b5f613b6c613642565b90505f613b8282846131cc90919063ffffffff16565b9050613bd48160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613b0690919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b613c2f82600654613abd90919063ffffffff16565b600681905550613c4a81600754613b0690919063ffffffff16565b6007819055505050565b5f805f80613c7e6064613c70888a6131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f613ca76064613c99888b6131cc90919063ffffffff16565b61324390919063ffffffff16565b90505f613ccf82613cc1858c613abd90919063ffffffff16565b613abd90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80613cfd85896131cc90919063ffffffff16565b90505f613d1386896131cc90919063ffffffff16565b90505f613d2987896131cc90919063ffffffff16565b90505f613d5182613d438587613abd90919063ffffffff16565b613abd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613dc582613d7f565b810181811067ffffffffffffffff82111715613de457613de3613d8f565b5b80604052505050565b5f613df6613d6a565b9050613e028282613dbc565b919050565b5f67ffffffffffffffff821115613e2157613e20613d8f565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e5f82613e36565b9050919050565b613e6f81613e55565b8114613e79575f80fd5b50565b5f81359050613e8a81613e66565b92915050565b5f613ea2613e9d84613e07565b613ded565b90508083825260208201905060208402830185811115613ec557613ec4613e32565b5b835b81811015613eee5780613eda8882613e7c565b845260208401935050602081019050613ec7565b5050509392505050565b5f82601f830112613f0c57613f0b613d7b565b5b8135613f1c848260208601613e90565b91505092915050565b5f60208284031215613f3a57613f39613d73565b5b5f82013567ffffffffffffffff811115613f5757613f56613d77565b5b613f6384828501613ef8565b91505092915050565b5f819050919050565b613f7e81613f6c565b82525050565b5f602082019050613f975f830184613f75565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613fd4578082015181840152602081019050613fb9565b5f8484015250505050565b5f613fe982613f9d565b613ff38185613fa7565b9350614003818560208601613fb7565b61400c81613d7f565b840191505092915050565b5f6020820190508181035f83015261402f8184613fdf565b905092915050565b61404081613f6c565b811461404a575f80fd5b50565b5f8135905061405b81614037565b92915050565b5f806040838503121561407757614076613d73565b5b5f61408485828601613e7c565b92505060206140958582860161404d565b9150509250929050565b5f8115159050919050565b6140b38161409f565b82525050565b5f6020820190506140cc5f8301846140aa565b92915050565b5f819050919050565b5f6140f56140f06140eb84613e36565b6140d2565b613e36565b9050919050565b5f614106826140db565b9050919050565b5f614117826140fc565b9050919050565b6141278161410d565b82525050565b5f6020820190506141405f83018461411e565b92915050565b5f805f6060848603121561415d5761415c613d73565b5b5f61416a86828701613e7c565b935050602061417b86828701613e7c565b925050604061418c8682870161404d565b9150509250925092565b5f60ff82169050919050565b6141ab81614196565b82525050565b5f6020820190506141c45f8301846141a2565b92915050565b6141d381613e55565b82525050565b5f6020820190506141ec5f8301846141ca565b92915050565b5f6020828403121561420757614206613d73565b5b5f6142148482850161404d565b91505092915050565b5f6020828403121561423257614231613d73565b5b5f61423f84828501613e7c565b91505092915050565b6142518161409f565b811461425b575f80fd5b50565b5f8135905061426c81614248565b92915050565b5f6020828403121561428757614286613d73565b5b5f6142948482850161425e565b91505092915050565b5f805f80608085870312156142b5576142b4613d73565b5b5f6142c28782880161404d565b94505060206142d38782880161404d565b93505060406142e48782880161404d565b92505060606142f58782880161404d565b91505092959194509250565b5f80fd5b5f8083601f84011261431a57614319613d7b565b5b8235905067ffffffffffffffff81111561433757614336614301565b5b60208301915083602082028301111561435357614352613e32565b5b9250929050565b5f805f6040848603121561437157614370613d73565b5b5f84013567ffffffffffffffff81111561438e5761438d613d77565b5b61439a86828701614305565b935093505060206143ad8682870161425e565b9150509250925092565b5f80604083850312156143cd576143cc613d73565b5b5f6143da85828601613e7c565b92505060206143eb85828601613e7c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614429602083613fa7565b9150614434826143f5565b602082019050919050565b5f6020820190508181035f8301526144568161441d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520676f7665725f8201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b5f6144e4602383613fa7565b91506144ef8261448a565b604082019050919050565b5f6020820190508181035f830152614511816144d8565b9050919050565b7f4e6577206c6f636b206475726174696f6e2073686f756c64206265206c6172675f8201527f6572207468616e2063757272656e74206f6e6500000000000000000000000000602082015250565b5f614572603383613fa7565b915061457d82614518565b604082019050919050565b5f6020820190508181035f83015261459f81614566565b9050919050565b7f596f752063616e6e6f74207769746864726177207965740000000000000000005f82015250565b5f6145da601783613fa7565b91506145e5826145a6565b602082019050919050565b5f6020820190508181035f830152614607816145ce565b9050919050565b5f8151905061461c81614037565b92915050565b5f6020828403121561463757614636613d73565b5b5f6146448482850161460e565b91505092915050565b5f6040820190506146605f8301856141ca565b61466d6020830184613f75565b9392505050565b5f8151905061468281614248565b92915050565b5f6020828403121561469d5761469c613d73565b5b5f6146aa84828501614674565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6146ea82613f6c565b91506146f583613f6c565b925082820190508082111561470d5761470c6146b3565b5b92915050565b7f4f776e61626c653a206e657720676f7665726e657220697320746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f61476d602983613fa7565b915061477882614713565b604082019050919050565b5f6020820190508181035f83015261479a81614761565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6147fb602683613fa7565b9150614806826147a1565b604082019050919050565b5f6020820190508181035f830152614828816147ef565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614889602483613fa7565b91506148948261482f565b604082019050919050565b5f6020820190508181035f8301526148b68161487d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614917602283613fa7565b9150614922826148bd565b604082019050919050565b5f6020820190508181035f8301526149448161490b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149a5602583613fa7565b91506149b08261494b565b604082019050919050565b5f6020820190508181035f8301526149d281614999565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a33602383613fa7565b9150614a3e826149d9565b604082019050919050565b5f6020820190508181035f830152614a6081614a27565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f614ac1602983613fa7565b9150614acc82614a67565b604082019050919050565b5f6020820190508181035f830152614aee81614ab5565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f614b4f603f83613fa7565b9150614b5a82614af5565b604082019050919050565b5f6020820190508181035f830152614b7c81614b43565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f614bb7601c83613fa7565b9150614bc282614b83565b602082019050919050565b5f6020820190508181035f830152614be481614bab565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f614c45602383613fa7565b9150614c5082614beb565b604082019050919050565b5f6020820190508181035f830152614c7281614c39565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f614cd3602383613fa7565b9150614cde82614c79565b604082019050919050565b5f6020820190508181035f830152614d0081614cc7565b9050919050565b5f81519050614d1581613e66565b92915050565b5f60208284031215614d3057614d2f613d73565b5b5f614d3d84828501614d07565b91505092915050565b5f819050919050565b5f614d69614d64614d5f84614d46565b6140d2565b613f6c565b9050919050565b614d7981614d4f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614db181613e55565b82525050565b5f614dc28383614da8565b60208301905092915050565b5f602082019050919050565b5f614de482614d7f565b614dee8185614d89565b9350614df983614d99565b805f5b83811015614e29578151614e108882614db7565b9750614e1b83614dce565b925050600181019050614dfc565b5085935050505092915050565b5f604082019050614e495f830185614d70565b8181036020830152614e5b8184614dda565b90509392505050565b5f67ffffffffffffffff821115614e7e57614e7d613d8f565b5b602082029050602081019050919050565b5f614ea1614e9c84614e64565b613ded565b90508083825260208201905060208402830185811115614ec457614ec3613e32565b5b835b81811015614eed5780614ed9888261460e565b845260208401935050602081019050614ec6565b5050509392505050565b5f82601f830112614f0b57614f0a613d7b565b5b8151614f1b848260208601614e8f565b91505092915050565b5f60208284031215614f3957614f38613d73565b5b5f82015167ffffffffffffffff811115614f5657614f55613d77565b5b614f6284828501614ef7565b91505092915050565b5f819050919050565b5f614f8e614f89614f8484614f6b565b6140d2565b613f6c565b9050919050565b614f9e81614f74565b82525050565b5f604082019050614fb75f830185614f95565b8181036020830152614fc98184614dda565b90509392505050565b5f614fdc82613f6c565b9150614fe783613f6c565b9250828203905081811115614fff57614ffe6146b3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61505f602a83613fa7565b915061506a82615005565b604082019050919050565b5f6020820190508181035f83015261508c81615053565b9050919050565b5f819050919050565b5f6150b66150b16150ac84615093565b6140d2565b613f6c565b9050919050565b6150c68161509c565b82525050565b5f60a0820190506150df5f830188613f75565b6150ec60208301876150bd565b81810360408301526150fe8186614dda565b905061510d60608301856141ca565b61511a6080830184613f75565b9695505050505050565b5f61512e82613f6c565b915061513983613f6c565b925082820261514781613f6c565b9150828204841483151761515e5761515d6146b3565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61519c82613f6c565b91506151a783613f6c565b9250826151b7576151b6615165565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61521c602183613fa7565b9150615227826151c2565b604082019050919050565b5f6020820190508181035f83015261524981615210565b9050919050565b5f60c0820190506152635f8301896141ca565b6152706020830188613f75565b61527d60408301876150bd565b61528a60608301866150bd565b61529760808301856141ca565b6152a460a0830184613f75565b979650505050505050565b5f80604083850312156152c5576152c4613d73565b5b5f6152d28582860161460e565b92505060206152e38582860161460e565b9150509250929050565b5f8160601b9050919050565b5f615303826152ed565b9050919050565b5f615314826152f9565b9050919050565b61532c61532782613e55565b61530a565b82525050565b5f61533d828461531b565b60148201915081905092915050565b5f61535682613e36565b9050919050565b5f615367826152f9565b9050919050565b61537f61537a8261534c565b61535d565b82525050565b5f615390828461536e565b60148201915081905092915050565b5f819050919050565b6153b96153b482613f6c565b61539f565b82525050565b5f6153ca82846153a8565b60208201915081905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61540d601b83613fa7565b9150615418826153d9565b602082019050919050565b5f6020820190508181035f83015261543a81615401565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208988d752e9931a39a4424a2e088b560cf4db37e714530a640cf23a33724d7a8664736f6c63430008160033

Deployed Bytecode Sourcemap

6722:18031:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19926:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8233:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9394:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10319:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7994:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9671:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10520:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8387:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9580:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8446:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18461:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8042:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20103:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24135:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19683:235;;;;;;;;;;;;;:::i;:::-;;9774:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3671:148;;;;;;;;;;;;;:::i;:::-;;24275:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8279:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18211:242;;;;;;;;;;;;;:::i;:::-;;17764:228;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3457:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19286:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8332:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9485:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18000:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23944:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23601:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9920:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7778:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19439:236;;;;;;;;;;;;;:::i;:::-;;24514:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10127:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24391:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3827:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19926:169;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20002:9:::1;19997:91;20021:5;:12;20017:1;:16;19997:91;;;20072:4;20055;:14;20060:5;20066:1;20060:8;;;;;;;;:::i;:::-;;;;;;;;20055:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;20035:3;;;;;;;19997:91;;;;19926:169:::0;:::o;8233:37::-;;;;:::o;9394:83::-;9431:13;9464:5;;;;;;;;;;;;;;;;;9457:12;;9394:83;:::o;10319:193::-;10421:4;10443:39;10452:12;:10;:12::i;:::-;10466:7;10475:6;10443:8;:39::i;:::-;10500:4;10493:11;;10319:193;;;;:::o;7994:41::-;;;;;;;;;;;;;:::o;9671:95::-;9724:7;7278:18;9744:14;;9671:95;:::o;10520:446::-;10652:4;10669:36;10679:6;10687:9;10698:6;10669:9;:36::i;:::-;10716:220;10739:6;10760:12;:10;:12::i;:::-;10787:138;10843:6;10787:138;;;;;;;;;;;;;;;;;:11;:19;10799:6;10787:19;;;;;;;;;;;;;;;:33;10807:12;:10;:12::i;:::-;10787:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;10716:8;:220::i;:::-;10954:4;10947:11;;10520:446;;;;;:::o;8387:50::-;;;;:::o;9580:83::-;9621:5;6952:1;9639:16;;9580:83;:::o;8446:24::-;;;;;;;;;;;;;:::o;18461:219::-;8535:12;:10;:12::i;:::-;8522:25;;:9;;;;;;;;;;;:25;;;8514:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18563:12:::1;;18545:15;:30;18537:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;18657:15;18642:12;:30;;;;18461:219:::0;:::o;8042:28::-;;;;;;;;;;;;;:::o;20103:92::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20182:5:::1;20167:4;:12;20172:6;20167:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;20103:92:::0;:::o;24135:101::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24216:12:::1;24202:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;24135:101:::0;:::o;19683:235::-;19749:19;;;;;;;;;;;19733:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19788:17;;;;;;;;;;;19772:33;;:12;:10;:12::i;:::-;:33;;;19733:72;19725:81;;;;;;19817:26;19846:21;19817:50;;19878:32;19891:18;19878:12;:32::i;:::-;19714:204;19683:235::o;9774:138::-;9840:7;9867:37;9887:7;:16;9895:7;9887:16;;;;;;;;;;;;;;;;9867:19;:37::i;:::-;9860:44;;9774:138;;;:::o;3671:148::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3778:1:::1;3741:40;;3762:6;::::0;::::1;;;;;;;;3741:40;;;;;;;;;;;;3809:1;3792:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3671:148::o:0;24275:108::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24364:11:::1;24349:12;:26;;;;24275:108:::0;:::o;8279:46::-;;;;:::o;18211:242::-;8535:12;:10;:12::i;:::-;8522:25;;:9;;;;;;;;;;;:25;;;8514:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18279:22:::1;:20;:22::i;:::-;18271:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;18355:13;;;;;;;;;;;18340:38;;;18379:9;;;;;;;;;;;18405:13;;;;;;;;;;;18390:39;;;18438:4;18390:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18340:105;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18211:242::o:0;17764:228::-;17845:4;17907:12;;17889:15;;:30;;;;:::i;:::-;17871:15;:48;17867:92;;;17943:4;17936:11;;;;17867:92;17979:5;17971:13;;17764:228;;:::o;3457:79::-;3495:7;3522:6;;;;;;;;;;;3515:13;;3457:79;:::o;19286:145::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19367:12:::1;19353:11;;:26;;;;;;;;;;;;;;;;;;19408:15;19390;:33;;;;19286:145:::0;:::o;8332:48::-;;;;:::o;9485:87::-;9524:13;9557:7;;;;;;;;;;;;;;;;;9550:14;;9485:87;:::o;18000:203::-;8535:12;:10;:12::i;:::-;8522:25;;:9;;;;;;;;;;;:25;;;8514:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18113:1:::1;18090:25;;:11;:25;;::::0;18082:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18184:11;18172:9;;:23;;;;;;;;;;;;;;;;;;18000:203:::0;:::o;23944:139::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24057:18:::1;24035:19;:40;;;;23944:139:::0;:::o;23601:291::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23752:13:::1;23735:14;:30;;;;23794:14;23776:15;:32;;;;23834:11;23819:12;:26;;;;23872:12;23856:13;:28;;;;23601:291:::0;;;;:::o;9920:199::-;10025:4;10047:42;10057:12;:10;:12::i;:::-;10071:9;10082:6;10047:9;:42::i;:::-;10107:4;10100:11;;9920:199;;;;:::o;7778:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;19439:236::-;19505:19;;;;;;;;;;;19489:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;19544:17;;;;;;;;;;;19528:33;;:12;:10;:12::i;:::-;:33;;;19489:72;19481:81;;;;;;19573:23;19599:24;19617:4;19599:9;:24::i;:::-;19573:50;;19634:33;19651:15;19634:16;:33::i;:::-;19470:205;19439:236::o;24514:234::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24631:9:::1;24627:114;24650:8;;:15;;24646:1;:19;24627:114;;;24721:8;24687:18;:31;24706:8;;24715:1;24706:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24687:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;24667:3;;;;;;;24627:114;;;;24514:234:::0;;;:::o;10127:184::-;10244:7;10276:11;:18;10288:5;10276:18;;;;;;;;;;;;;;;:27;10295:7;10276:27;;;;;;;;;;;;;;;;10269:34;;10127:184;;;;:::o;24391:115::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24485:13:::1;24468:14;:30;;;;24391:115:::0;:::o;3827:244::-;3594:12;:10;:12::i;:::-;3584:22;;:6;;;;;;;;;;:22;;;3576:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3936:1:::1;3916:22;;:8;:22;;::::0;3908:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4026:8;3997:38;;4018:6;::::0;::::1;;;;;;;;3997:38;;;;;;;;;;;;4055:8;4046:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3827:244:::0;:::o;2216:98::-;2269:7;2296:10;2289:17;;2216:98;:::o;11657:369::-;11801:1;11784:19;;:5;:19;;;11776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11882:1;11863:21;;:7;:21;;;11855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11964:6;11934:11;:18;11946:5;11934:18;;;;;;;;;;;;;;;:27;11953:7;11934:27;;;;;;;;;;;;;;;:36;;;;12002:7;11986:32;;11995:5;11986:32;;;12011:6;11986:32;;;;;;:::i;:::-;;;;;;;;11657:369;;;:::o;12034:4042::-;12172:1;12156:18;;:4;:18;;;12148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12249:1;12235:16;;:2;:16;;;12227:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:1;12310:6;:10;12302:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12391:7;:5;:7::i;:::-;12383:15;;:4;:15;;;;:32;;;;;12408:7;:5;:7::i;:::-;12402:13;;:2;:13;;;;12383:32;12379:1259;;;12472:11;;;;;;;;;;;12467:144;;12520:7;:5;:7::i;:::-;12512:15;;:4;:15;;;12504:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12467:144;12645:12;;12635:6;:22;;12627:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12714:4;:10;12719:4;12714:10;;;;;;;;;;;;;;;;;;;;;;;;;12713:11;:24;;;;;12729:4;:8;12734:2;12729:8;;;;;;;;;;;;;;;;;;;;;;;;;12728:9;12713:24;12705:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12803:13;;;;;;;;;;;12797:19;;:2;:19;;;12794:146;;12870:14;;12861:6;12845:13;12855:2;12845:9;:13::i;:::-;:22;;;;:::i;:::-;:39;12837:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12794:146;12956:28;12987:24;13005:4;12987:9;:24::i;:::-;12956:55;;13026:12;13065:19;;13041:20;:43;;13026:58;;13128:12;;13104:20;:36;13101:124;;13197:12;;13174:35;;13101:124;13245:7;:18;;;;;13257:6;;;;;;;;;;;13256:7;13245:18;:43;;;;;13275:13;;;;;;;;;;;13267:21;;:4;:21;;;;13245:43;:58;;;;;13292:11;;;;;;;;;;13245:58;:87;;;;;13308:18;:24;13327:4;13308:24;;;;;;;;;;;;;;;;;;;;;;;;;13307:25;13245:87;:114;;;;;13337:18;:22;13356:2;13337:22;;;;;;;;;;;;;;;;;;;;;;;;;13336:23;13245:114;13241:386;;;13380:38;13397:20;13380:16;:38::i;:::-;13437:26;13466:21;13437:50;;13531:1;13510:18;:22;13506:106;;;13557:35;13570:21;13557:12;:35::i;:::-;13506:106;13361:266;13241:386;12417:1221;;12379:1259;13661:13;;;;;;;;;;;13653:21;;:4;:21;;;:55;;;;;13692:15;;;;;;;;;;;13678:30;;:2;:30;;;;13653:55;13650:699;;;13725:7;13738:2;13725:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13820:2;13800:10;:17;;;;:22;13796:542;;;13843:10;13859:2;13843:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13796:542;;;13903:22;13953:9;13965:1;13953:13;;13948:215;13972:2;13968:1;:6;13948:215;;;14036:37;14046:10;14057:14;14046:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14036:9;:37::i;:::-;14009:24;14019:10;14030:1;14019:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14009:9;:24::i;:::-;:64;14005:139;;;14119:1;14102:18;;14005:139;13976:4;;;;;;;13948:215;;;;14241:6;14225:13;14235:2;14225:9;:13::i;:::-;:22;;;;:::i;:::-;14185:37;14195:10;14206:14;14195:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14185:9;:37::i;:::-;:62;14181:142;;;14301:2;14272:10;14283:14;14272:26;;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14181:142;13884:454;13796:542;13650:699;14361:12;14376:4;14361:19;;14425:18;:24;14444:4;14425:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14453:18;:22;14472:2;14453:22;;;;;;;;;;;;;;;;;;;;;;;;;14425:50;14424:102;;;;14489:13;;;;;;;;;;;14481:21;;:4;:21;;;;:44;;;;;14512:13;;;;;;;;;;;14506:19;;:2;:19;;;;14481:44;14424:102;14420:594;;;14553:5;14543:15;;14420:594;;;14636:13;;;;;;;;;;;14628:21;;:4;:21;;;:55;;;;;14667:15;;;;;;;;;;;14653:30;;:2;:30;;;;14628:55;14625:162;;;14716:14;;14704:9;:26;;;;14759:12;;14749:7;:22;;;;14625:162;14846:13;;;;;;;;;;;14840:19;;:2;:19;;;:55;;;;;14879:15;;;;;;;;;;;14863:32;;:4;:32;;;;14840:55;14836:165;;;14928:15;;14916:9;:27;;;;14972:13;;14962:7;:23;;;;14836:165;14420:594;15026:41;15041:4;15047:2;15051:6;15059:7;15026:14;:41::i;:::-;15148:13;;;;;;;;;;;15140:21;;:4;:21;;;:55;;;;;15179:15;;;;;;;;;;;15165:30;;:2;:30;;;;15140:55;:78;;;;;15213:4;15199:19;;:2;:19;;;;15140:78;:97;;;;;15228:9;;;;;;;;;;;15222:15;;:2;:15;;;;15140:97;15137:932;;;15254:12;15269:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15254:37;;15306:12;15329:42;15306:66;;15387:21;15425:1;15411:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15387:40;;15452:4;15442;15447:1;15442:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;15481:4;15471;15476:1;15471:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;15500:17;15520:15;;;;;;;;;;;:29;;;15550:8;15560:4;15520:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15566:1;15520:48;;;;;;;;:::i;:::-;;;;;;;;15500:68;;15601:4;15583;15588:1;15583:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15631:4;15621;15626:1;15621:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;15650:18;15671:15;;;;;;;;;;;:29;;;15701:7;15710:4;15671:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15716:1;15671:47;;;;;;;;:::i;:::-;;;;;;;;15650:68;;15733:17;15753:39;15783:8;15753:25;15768:9;15753:10;:14;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;15733:59;;15807:17;15827:41;15860:7;15827:28;15841:13;:11;:13::i;:::-;15827:9;:13;;:28;;;;:::i;:::-;:32;;:41;;;;:::i;:::-;15807:61;;15902:9;15889;:22;15885:173;;16024:18;:16;:18::i;:::-;15885:173;15239:830;;;;;;;15137:932;12137:3939;12034:4042;;;:::o;4435:224::-;4555:7;4588:1;4583;:6;;4591:12;4575:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4615:9;4631:1;4627;:5;;;;:::i;:::-;4615:17;;4650:1;4643:8;;;4435:224;;;;;:::o;19179:99::-;19236:17;;;;;;;;;;;:26;;:34;19263:6;19236:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19179:99;:::o;10974:323::-;11069:7;11127;;11116;:18;;11094:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11215:19;11237:10;:8;:10::i;:::-;11215:32;;11265:24;11277:11;11265:7;:11;;:24;;;;:::i;:::-;11258:31;;;10974:323;;;:::o;18688:483::-;8709:4;8700:6;;:13;;;;;;;;;;;;;;;;;;18766:21:::1;18804:1;18790:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18766:40;;18835:4;18817;18822:1;18817:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18861:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18851:4;18856:1;18851:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;18894:62;18911:4;18926:15;;;;;;;;;;;18944:11;18894:8;:62::i;:::-;18967:15;;;;;;;;;;;:66;;;19048:11;19074:1;19090:4;19117;19137:15;18967:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18755:416;8745:5:::0;8736:6;;:14;;;;;;;;;;;;;;;;;;18688:483;:::o;20203:282::-;20359:7;20354:28;;20368:14;:12;:14::i;:::-;20354:28;20393:44;20411:6;20419:9;20430:6;20393:17;:44::i;:::-;20453:7;20448:29;;20462:15;:13;:15::i;:::-;20448:29;20203:282;;;;:::o;4667:246::-;4725:7;4754:1;4749;:6;4745:47;;4779:1;4772:8;;;;4745:47;4802:9;4818:1;4814;:5;;;;:::i;:::-;4802:17;;4847:1;4842;4838;:5;;;;:::i;:::-;:10;4830:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4904:1;4897:8;;;4667:246;;;;;:::o;4921:132::-;4979:7;5006:39;5010:1;5013;5006:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4999:46;;4921:132;;;;:::o;16675:1081::-;16768:1;16753:12;:16;;;;16796:1;16780:13;:17;;;;16808:15;;;;;;;;;;;:34;;;16851:4;16873:13;;;;;;;;;;;16858:39;;;16906:4;16858:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16914:1;16917;16928:4;16935:15;16808:143;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16962:17;16982:21;16962:41;;17057:24;17084:26;17106:3;17084:17;17098:2;17084:9;:13;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;17057:53;;17121:13;17154:9;17149:109;17173:10;:17;;;;17169:1;:21;17149:109;;;17222:24;17232:10;17243:1;17232:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17222:9;:24::i;:::-;17213:33;;;;;:::i;:::-;;;17192:4;;;;;;;17149:109;;;;17273:9;17268:166;17292:10;:17;;;;17288:1;:21;17268:166;;;17340:10;17351:1;17340:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17332:31;;:90;17364:57;17415:5;17364:46;17385:24;17395:10;17406:1;17395:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17385:9;:24::i;:::-;17364:16;:20;;:46;;;;:::i;:::-;:50;;:57;;;;:::i;:::-;17332:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17311:4;;;;;;;17268:166;;;;17485:26;17514:21;17485:50;;17551:9;17546:203;17570:7;:14;;;;17566:1;:18;17546:203;;;17607:27;17645:7;17653:20;17658:7;:14;;;;17653:4;:20::i;:::-;17645:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17607:68;;17690:11;:20;;:47;17711:25;17734:1;17711:18;:22;;:25;;;;:::i;:::-;17690:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17592:157;17586:4;;;;;;;17546:203;;;;16711:1045;;;;16675:1081::o;23164:164::-;23206:7;23227:15;23244;23263:19;:17;:19::i;:::-;23226:56;;;;23300:20;23312:7;23300;:11;;:20;;;;:::i;:::-;23293:27;;;;23164:164;:::o;11305:219::-;11365:1;11352:9;;:14;:30;;;;;11381:1;11370:7;;:12;11352:30;11384:7;11348:43;11423:9;;11403:17;:29;;;;11461:7;;11443:15;:25;;;;11493:1;11481:9;:13;;;;11515:1;11505:7;:11;;;;11305:219;:::o;20493:610::-;20640:15;20670:23;20708:12;20735:23;20773:12;20800:13;20827:19;20838:7;20827:10;:19::i;:::-;20625:221;;;;;;;;;;;;20875:28;20895:7;20875;:15;20883:6;20875:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20857:7;:15;20865:6;20857:15;;;;;;;;;;;;;;;:46;;;;20935:39;20958:15;20935:7;:18;20943:9;20935:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;20914:7;:18;20922:9;20914:18;;;;;;;;;;;;;;;:60;;;;20985:16;20995:5;20985:9;:16::i;:::-;21012:23;21024:4;21030;21012:11;:23::i;:::-;21068:9;21051:44;;21060:6;21051:44;;;21079:15;21051:44;;;;;;:::i;:::-;;;;;;;;20614:489;;;;;;20493:610;;;:::o;11532:117::-;11588:17;;11576:9;:29;;;;11626:15;;11616:7;:25;;;;11532:117::o;5061:223::-;5181:7;5213:1;5209;:5;5216:12;5201:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5240:9;5256:1;5252;:5;;;;:::i;:::-;5240:17;;5275:1;5268:8;;;5061:223;;;;;:::o;16084:583::-;16159:7;16195:1;16188:3;:8;16184:49;;16220:1;16213:8;;;;16184:49;16245:12;16569;16536:15;16518:10;16501:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;16491:39;;;;;;16483:48;;16482:70;;;;:::i;:::-;16451:14;16418:15;16396:14;16379:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;16369:43;;;;;;16361:52;;16360:74;;;;:::i;:::-;16327:16;16309:15;:34;;;;:::i;:::-;:126;;;;:::i;:::-;:156;;;;:::i;:::-;:244;;;;:::i;:::-;:272;;;;:::i;:::-;16278:314;;;;;;;;:::i;:::-;;;;;;;;;;;;;16268:325;;;;;;16260:334;;16245:349;;16658:1;16651;16645:3;:7;;;;:::i;:::-;16638:1;16632:3;:7;;;;:::i;:::-;16624:4;:16;;;;:::i;:::-;16623:30;;;;:::i;:::-;16615:4;:39;;;;:::i;:::-;16614:45;;;;:::i;:::-;16607:52;;;16084:583;;;;:::o;23336:257::-;23387:7;23396;23416:15;23434:7;;23416:25;;23452:15;7278:18;23452:25;;23502:20;7278:18;23502:7;;:11;;:20;;;;:::i;:::-;23492:7;:30;23488:61;;;23532:7;;7278:18;23524:25;;;;;;;;23488:61;23568:7;23577;23560:25;;;;;;23336:257;;;:::o;21522:615::-;21622:7;21644;21666;21688;21710;21732;21768:23;21793:12;21807:13;21837:40;21849:7;21858:9;;21869:7;;21837:11;:40::i;:::-;21767:110;;;;;;21888:19;21910:10;:8;:10::i;:::-;21888:32;;21932:15;21949:23;21974:12;22003:46;22015:7;22024:4;22030:5;22037:11;22003;:46::i;:::-;21931:118;;;;;;22068:7;22077:15;22094:4;22100:15;22117:4;22123:5;22060:69;;;;;;;;;;;;;;;;;;;21522:615;;;;;;;:::o;4291:136::-;4349:7;4376:43;4380:1;4383;4376:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4369:50;;4291:136;;;;:::o;4104:179::-;4162:7;4182:9;4198:1;4194;:5;;;;:::i;:::-;4182:17;;4223:1;4218;:6;;4210:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4274:1;4267:8;;;4104:179;;;;:::o;21111:211::-;21164:19;21186:10;:8;:10::i;:::-;21164:32;;21207:13;21223:22;21233:11;21223:5;:9;;:22;;;;:::i;:::-;21207:38;;21281:33;21308:5;21281:7;:22;21297:4;21281:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;21256:7;:22;21272:4;21256:22;;;;;;;;;;;;;;;:58;;;;21153:169;;21111:211;:::o;21330:147::-;21408:17;21420:4;21408:7;;:11;;:17;;;;:::i;:::-;21398:7;:27;;;;21449:20;21464:4;21449:10;;:14;;:20;;;;:::i;:::-;21436:10;:33;;;;21330:147;;:::o;22145:469::-;22314:7;22336;22358;22393:12;22408:30;22434:3;22408:21;22420:8;22408:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;22393:45;;22449:13;22465:28;22489:3;22465:19;22477:6;22465:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;22449:44;;22504:23;22530:28;22552:5;22530:17;22542:4;22530:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;22504:54;;22577:15;22594:4;22600:5;22569:37;;;;;;;;;22145:469;;;;;;;:::o;22622:534::-;22816:7;22838;22860;22895:15;22913:24;22925:11;22913:7;:11;;:24;;;;:::i;:::-;22895:42;;22948:12;22963:21;22972:11;22963:4;:8;;:21;;;;:::i;:::-;22948:36;;22995:13;23011:22;23021:11;23011:5;:9;;:22;;;;:::i;:::-;22995:38;;23044:23;23070:28;23092:5;23070:17;23082:4;23070:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;23044:54;;23117:7;23126:15;23143:4;23109:39;;;;;;;;;;22622:534;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:77::-;3828:7;3857:5;3846:16;;3791:77;;;:::o;3874:118::-;3961:24;3979:5;3961:24;:::i;:::-;3956:3;3949:37;3874:118;;:::o;3998:222::-;4091:4;4129:2;4118:9;4114:18;4106:26;;4142:71;4210:1;4199:9;4195:17;4186:6;4142:71;:::i;:::-;3998:222;;;;:::o;4226:99::-;4278:6;4312:5;4306:12;4296:22;;4226:99;;;:::o;4331:169::-;4415:11;4449:6;4444:3;4437:19;4489:4;4484:3;4480:14;4465:29;;4331:169;;;;:::o;4506:246::-;4587:1;4597:113;4611:6;4608:1;4605:13;4597:113;;;4696:1;4691:3;4687:11;4681:18;4677:1;4672:3;4668:11;4661:39;4633:2;4630:1;4626:10;4621:15;;4597:113;;;4744:1;4735:6;4730:3;4726:16;4719:27;4568:184;4506:246;;;:::o;4758:377::-;4846:3;4874:39;4907:5;4874:39;:::i;:::-;4929:71;4993:6;4988:3;4929:71;:::i;:::-;4922:78;;5009:65;5067:6;5062:3;5055:4;5048:5;5044:16;5009:65;:::i;:::-;5099:29;5121:6;5099:29;:::i;:::-;5094:3;5090:39;5083:46;;4850:285;4758:377;;;;:::o;5141:313::-;5254:4;5292:2;5281:9;5277:18;5269:26;;5341:9;5335:4;5331:20;5327:1;5316:9;5312:17;5305:47;5369:78;5442:4;5433:6;5369:78;:::i;:::-;5361:86;;5141:313;;;;:::o;5460:122::-;5533:24;5551:5;5533:24;:::i;:::-;5526:5;5523:35;5513:63;;5572:1;5569;5562:12;5513:63;5460:122;:::o;5588:139::-;5634:5;5672:6;5659:20;5650:29;;5688:33;5715:5;5688:33;:::i;:::-;5588:139;;;;:::o;5733:474::-;5801:6;5809;5858:2;5846:9;5837:7;5833:23;5829:32;5826:119;;;5864:79;;:::i;:::-;5826:119;5984:1;6009:53;6054:7;6045:6;6034:9;6030:22;6009:53;:::i;:::-;5999:63;;5955:117;6111:2;6137:53;6182:7;6173:6;6162:9;6158:22;6137:53;:::i;:::-;6127:63;;6082:118;5733:474;;;;;:::o;6213:90::-;6247:7;6290:5;6283:13;6276:21;6265:32;;6213:90;;;:::o;6309:109::-;6390:21;6405:5;6390:21;:::i;:::-;6385:3;6378:34;6309:109;;:::o;6424:210::-;6511:4;6549:2;6538:9;6534:18;6526:26;;6562:65;6624:1;6613:9;6609:17;6600:6;6562:65;:::i;:::-;6424:210;;;;:::o;6640:60::-;6668:3;6689:5;6682:12;;6640:60;;;:::o;6706:142::-;6756:9;6789:53;6807:34;6816:24;6834:5;6816:24;:::i;:::-;6807:34;:::i;:::-;6789:53;:::i;:::-;6776:66;;6706:142;;;:::o;6854:126::-;6904:9;6937:37;6968:5;6937:37;:::i;:::-;6924:50;;6854:126;;;:::o;6986:152::-;7062:9;7095:37;7126:5;7095:37;:::i;:::-;7082:50;;6986:152;;;:::o;7144:183::-;7257:63;7314:5;7257:63;:::i;:::-;7252:3;7245:76;7144:183;;:::o;7333:274::-;7452:4;7490:2;7479:9;7475:18;7467:26;;7503:97;7597:1;7586:9;7582:17;7573:6;7503:97;:::i;:::-;7333:274;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:::-;9414:6;9463:2;9451:9;9442:7;9438:23;9434:32;9431:119;;;9469:79;;:::i;:::-;9431:119;9589:1;9614:53;9659:7;9650:6;9639:9;9635:22;9614:53;:::i;:::-;9604:63;;9560:117;9355:329;;;;:::o;9690:116::-;9760:21;9775:5;9760:21;:::i;:::-;9753:5;9750:32;9740:60;;9796:1;9793;9786:12;9740:60;9690:116;:::o;9812:133::-;9855:5;9893:6;9880:20;9871:29;;9909:30;9933:5;9909:30;:::i;:::-;9812:133;;;;:::o;9951:323::-;10007:6;10056:2;10044:9;10035:7;10031:23;10027:32;10024:119;;;10062:79;;:::i;:::-;10024:119;10182:1;10207:50;10249:7;10240:6;10229:9;10225:22;10207:50;:::i;:::-;10197:60;;10153:114;9951:323;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:222;14260:34;14256:1;14248:6;14244:14;14237:58;14329:5;14324:2;14316:6;14312:15;14305:30;14120:222;:::o;14348:366::-;14490:3;14511:67;14575:2;14570:3;14511:67;:::i;:::-;14504:74;;14587:93;14676:3;14587:93;:::i;:::-;14705:2;14700:3;14696:12;14689:19;;14348:366;;;:::o;14720:419::-;14886:4;14924:2;14913:9;14909:18;14901:26;;14973:9;14967:4;14963:20;14959:1;14948:9;14944:17;14937:47;15001:131;15127:4;15001:131;:::i;:::-;14993:139;;14720:419;;;:::o;15145:238::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:21;15349:2;15341:6;15337:15;15330:46;15145:238;:::o;15389:366::-;15531:3;15552:67;15616:2;15611:3;15552:67;:::i;:::-;15545:74;;15628:93;15717:3;15628:93;:::i;:::-;15746:2;15741:3;15737:12;15730:19;;15389:366;;;:::o;15761:419::-;15927:4;15965:2;15954:9;15950:18;15942:26;;16014:9;16008:4;16004:20;16000:1;15989:9;15985:17;15978:47;16042:131;16168:4;16042:131;:::i;:::-;16034:139;;15761:419;;;:::o;16186:173::-;16326:25;16322:1;16314:6;16310:14;16303:49;16186:173;:::o;16365:366::-;16507:3;16528:67;16592:2;16587:3;16528:67;:::i;:::-;16521:74;;16604:93;16693:3;16604:93;:::i;:::-;16722:2;16717:3;16713:12;16706:19;;16365:366;;;:::o;16737:419::-;16903:4;16941:2;16930:9;16926:18;16918:26;;16990:9;16984:4;16980:20;16976:1;16965:9;16961:17;16954:47;17018:131;17144:4;17018:131;:::i;:::-;17010:139;;16737:419;;;:::o;17162:143::-;17219:5;17250:6;17244:13;17235:22;;17266:33;17293:5;17266:33;:::i;:::-;17162:143;;;;:::o;17311:351::-;17381:6;17430:2;17418:9;17409:7;17405:23;17401:32;17398:119;;;17436:79;;:::i;:::-;17398:119;17556:1;17581:64;17637:7;17628:6;17617:9;17613:22;17581:64;:::i;:::-;17571:74;;17527:128;17311:351;;;;:::o;17668:332::-;17789:4;17827:2;17816:9;17812:18;17804:26;;17840:71;17908:1;17897:9;17893:17;17884:6;17840:71;:::i;:::-;17921:72;17989:2;17978:9;17974:18;17965:6;17921:72;:::i;:::-;17668:332;;;;;:::o;18006:137::-;18060:5;18091:6;18085:13;18076:22;;18107:30;18131:5;18107:30;:::i;:::-;18006:137;;;;:::o;18149:345::-;18216:6;18265:2;18253:9;18244:7;18240:23;18236:32;18233:119;;;18271:79;;:::i;:::-;18233:119;18391:1;18416:61;18469:7;18460:6;18449:9;18445:22;18416:61;:::i;:::-;18406:71;;18362:125;18149:345;;;;:::o;18500:180::-;18548:77;18545:1;18538:88;18645:4;18642:1;18635:15;18669:4;18666:1;18659:15;18686:191;18726:3;18745:20;18763:1;18745:20;:::i;:::-;18740:25;;18779:20;18797:1;18779:20;:::i;:::-;18774:25;;18822:1;18819;18815:9;18808:16;;18843:3;18840:1;18837:10;18834:36;;;18850:18;;:::i;:::-;18834:36;18686:191;;;;:::o;18883:228::-;19023:34;19019:1;19011:6;19007:14;19000:58;19092:11;19087:2;19079:6;19075:15;19068:36;18883:228;:::o;19117:366::-;19259:3;19280:67;19344:2;19339:3;19280:67;:::i;:::-;19273:74;;19356:93;19445:3;19356:93;:::i;:::-;19474:2;19469:3;19465:12;19458:19;;19117:366;;;:::o;19489:419::-;19655:4;19693:2;19682:9;19678:18;19670:26;;19742:9;19736:4;19732:20;19728:1;19717:9;19713:17;19706:47;19770:131;19896:4;19770:131;:::i;:::-;19762:139;;19489:419;;;:::o;19914:225::-;20054:34;20050:1;20042:6;20038:14;20031:58;20123:8;20118:2;20110:6;20106:15;20099:33;19914:225;:::o;20145:366::-;20287:3;20308:67;20372:2;20367:3;20308:67;:::i;:::-;20301:74;;20384:93;20473:3;20384:93;:::i;:::-;20502:2;20497:3;20493:12;20486:19;;20145:366;;;:::o;20517:419::-;20683:4;20721:2;20710:9;20706:18;20698:26;;20770:9;20764:4;20760:20;20756:1;20745:9;20741:17;20734:47;20798:131;20924:4;20798:131;:::i;:::-;20790:139;;20517:419;;;:::o;20942:223::-;21082:34;21078:1;21070:6;21066:14;21059:58;21151:6;21146:2;21138:6;21134:15;21127:31;20942:223;:::o;21171:366::-;21313:3;21334:67;21398:2;21393:3;21334:67;:::i;:::-;21327:74;;21410:93;21499:3;21410:93;:::i;:::-;21528:2;21523:3;21519:12;21512:19;;21171:366;;;:::o;21543:419::-;21709:4;21747:2;21736:9;21732:18;21724:26;;21796:9;21790:4;21786:20;21782:1;21771:9;21767:17;21760:47;21824:131;21950:4;21824:131;:::i;:::-;21816:139;;21543:419;;;:::o;21968:221::-;22108:34;22104:1;22096:6;22092:14;22085:58;22177:4;22172:2;22164:6;22160:15;22153:29;21968:221;:::o;22195:366::-;22337:3;22358:67;22422:2;22417:3;22358:67;:::i;:::-;22351:74;;22434:93;22523:3;22434:93;:::i;:::-;22552:2;22547:3;22543:12;22536:19;;22195:366;;;:::o;22567:419::-;22733:4;22771:2;22760:9;22756:18;22748:26;;22820:9;22814:4;22810:20;22806:1;22795:9;22791:17;22784:47;22848:131;22974:4;22848:131;:::i;:::-;22840:139;;22567:419;;;:::o;22992:224::-;23132:34;23128:1;23120:6;23116:14;23109:58;23201:7;23196:2;23188:6;23184:15;23177:32;22992:224;:::o;23222:366::-;23364:3;23385:67;23449:2;23444:3;23385:67;:::i;:::-;23378:74;;23461:93;23550:3;23461:93;:::i;:::-;23579:2;23574:3;23570:12;23563:19;;23222:366;;;:::o;23594:419::-;23760:4;23798:2;23787:9;23783:18;23775:26;;23847:9;23841:4;23837:20;23833:1;23822:9;23818:17;23811:47;23875:131;24001:4;23875:131;:::i;:::-;23867:139;;23594:419;;;:::o;24019:222::-;24159:34;24155:1;24147:6;24143:14;24136:58;24228:5;24223:2;24215:6;24211:15;24204:30;24019:222;:::o;24247:366::-;24389:3;24410:67;24474:2;24469:3;24410:67;:::i;:::-;24403:74;;24486:93;24575:3;24486:93;:::i;:::-;24604:2;24599:3;24595:12;24588:19;;24247:366;;;:::o;24619:419::-;24785:4;24823:2;24812:9;24808:18;24800:26;;24872:9;24866:4;24862:20;24858:1;24847:9;24843:17;24836:47;24900:131;25026:4;24900:131;:::i;:::-;24892:139;;24619:419;;;:::o;25044:228::-;25184:34;25180:1;25172:6;25168:14;25161:58;25253:11;25248:2;25240:6;25236:15;25229:36;25044:228;:::o;25278:366::-;25420:3;25441:67;25505:2;25500:3;25441:67;:::i;:::-;25434:74;;25517:93;25606:3;25517:93;:::i;:::-;25635:2;25630:3;25626:12;25619:19;;25278:366;;;:::o;25650:419::-;25816:4;25854:2;25843:9;25839:18;25831:26;;25903:9;25897:4;25893:20;25889:1;25878:9;25874:17;25867:47;25931:131;26057:4;25931:131;:::i;:::-;25923:139;;25650:419;;;:::o;26075:250::-;26215:34;26211:1;26203:6;26199:14;26192:58;26284:33;26279:2;26271:6;26267:15;26260:58;26075:250;:::o;26331:366::-;26473:3;26494:67;26558:2;26553:3;26494:67;:::i;:::-;26487:74;;26570:93;26659:3;26570:93;:::i;:::-;26688:2;26683:3;26679:12;26672:19;;26331:366;;;:::o;26703:419::-;26869:4;26907:2;26896:9;26892:18;26884:26;;26956:9;26950:4;26946:20;26942:1;26931:9;26927:17;26920:47;26984:131;27110:4;26984:131;:::i;:::-;26976:139;;26703:419;;;:::o;27128:178::-;27268:30;27264:1;27256:6;27252:14;27245:54;27128:178;:::o;27312:366::-;27454:3;27475:67;27539:2;27534:3;27475:67;:::i;:::-;27468:74;;27551:93;27640:3;27551:93;:::i;:::-;27669:2;27664:3;27660:12;27653:19;;27312:366;;;:::o;27684:419::-;27850:4;27888:2;27877:9;27873:18;27865:26;;27937:9;27931:4;27927:20;27923:1;27912:9;27908:17;27901:47;27965:131;28091:4;27965:131;:::i;:::-;27957:139;;27684:419;;;:::o;28109:222::-;28249:34;28245:1;28237:6;28233:14;28226:58;28318:5;28313:2;28305:6;28301:15;28294:30;28109:222;:::o;28337:366::-;28479:3;28500:67;28564:2;28559:3;28500:67;:::i;:::-;28493:74;;28576:93;28665:3;28576:93;:::i;:::-;28694:2;28689:3;28685:12;28678:19;;28337:366;;;:::o;28709:419::-;28875:4;28913:2;28902:9;28898:18;28890:26;;28962:9;28956:4;28952:20;28948:1;28937:9;28933:17;28926:47;28990:131;29116:4;28990:131;:::i;:::-;28982:139;;28709:419;;;:::o;29134:222::-;29274:34;29270:1;29262:6;29258:14;29251:58;29343:5;29338:2;29330:6;29326:15;29319:30;29134:222;:::o;29362:366::-;29504:3;29525:67;29589:2;29584:3;29525:67;:::i;:::-;29518:74;;29601:93;29690:3;29601:93;:::i;:::-;29719:2;29714:3;29710:12;29703:19;;29362:366;;;:::o;29734:419::-;29900:4;29938:2;29927:9;29923:18;29915:26;;29987:9;29981:4;29977:20;29973:1;29962:9;29958:17;29951:47;30015:131;30141:4;30015:131;:::i;:::-;30007:139;;29734:419;;;:::o;30159:143::-;30216:5;30247:6;30241:13;30232:22;;30263:33;30290:5;30263:33;:::i;:::-;30159:143;;;;:::o;30308:351::-;30378:6;30427:2;30415:9;30406:7;30402:23;30398:32;30395:119;;;30433:79;;:::i;:::-;30395:119;30553:1;30578:64;30634:7;30625:6;30614:9;30610:22;30578:64;:::i;:::-;30568:74;;30524:128;30308:351;;;;:::o;30665:103::-;30728:7;30757:5;30746:16;;30665:103;;;:::o;30774:194::-;30850:9;30883:79;30901:60;30910:50;30954:5;30910:50;:::i;:::-;30901:60;:::i;:::-;30883:79;:::i;:::-;30870:92;;30774:194;;;:::o;30974:183::-;31087:63;31144:5;31087:63;:::i;:::-;31082:3;31075:76;30974:183;;:::o;31163:114::-;31230:6;31264:5;31258:12;31248:22;;31163:114;;;:::o;31283:184::-;31382:11;31416:6;31411:3;31404:19;31456:4;31451:3;31447:14;31432:29;;31283:184;;;;:::o;31473:132::-;31540:4;31563:3;31555:11;;31593:4;31588:3;31584:14;31576:22;;31473:132;;;:::o;31611:108::-;31688:24;31706:5;31688:24;:::i;:::-;31683:3;31676:37;31611:108;;:::o;31725:179::-;31794:10;31815:46;31857:3;31849:6;31815:46;:::i;:::-;31893:4;31888:3;31884:14;31870:28;;31725:179;;;;:::o;31910:113::-;31980:4;32012;32007:3;32003:14;31995:22;;31910:113;;;:::o;32059:732::-;32178:3;32207:54;32255:5;32207:54;:::i;:::-;32277:86;32356:6;32351:3;32277:86;:::i;:::-;32270:93;;32387:56;32437:5;32387:56;:::i;:::-;32466:7;32497:1;32482:284;32507:6;32504:1;32501:13;32482:284;;;32583:6;32577:13;32610:63;32669:3;32654:13;32610:63;:::i;:::-;32603:70;;32696:60;32749:6;32696:60;:::i;:::-;32686:70;;32542:224;32529:1;32526;32522:9;32517:14;;32482:284;;;32486:14;32782:3;32775:10;;32183:608;;;32059:732;;;;:::o;32797:535::-;32994:4;33032:2;33021:9;33017:18;33009:26;;33045:97;33139:1;33128:9;33124:17;33115:6;33045:97;:::i;:::-;33189:9;33183:4;33179:20;33174:2;33163:9;33159:18;33152:48;33217:108;33320:4;33311:6;33217:108;:::i;:::-;33209:116;;32797:535;;;;;:::o;33338:311::-;33415:4;33505:18;33497:6;33494:30;33491:56;;;33527:18;;:::i;:::-;33491:56;33577:4;33569:6;33565:17;33557:25;;33637:4;33631;33627:15;33619:23;;33338:311;;;:::o;33672:732::-;33779:5;33804:81;33820:64;33877:6;33820:64;:::i;:::-;33804:81;:::i;:::-;33795:90;;33905:5;33934:6;33927:5;33920:21;33968:4;33961:5;33957:16;33950:23;;34021:4;34013:6;34009:17;34001:6;33997:30;34050:3;34042:6;34039:15;34036:122;;;34069:79;;:::i;:::-;34036:122;34184:6;34167:231;34201:6;34196:3;34193:15;34167:231;;;34276:3;34305:48;34349:3;34337:10;34305:48;:::i;:::-;34300:3;34293:61;34383:4;34378:3;34374:14;34367:21;;34243:155;34227:4;34222:3;34218:14;34211:21;;34167:231;;;34171:21;33785:619;;33672:732;;;;;:::o;34427:385::-;34509:5;34558:3;34551:4;34543:6;34539:17;34535:27;34525:122;;34566:79;;:::i;:::-;34525:122;34676:6;34670:13;34701:105;34802:3;34794:6;34787:4;34779:6;34775:17;34701:105;:::i;:::-;34692:114;;34515:297;34427:385;;;;:::o;34818:554::-;34913:6;34962:2;34950:9;34941:7;34937:23;34933:32;34930:119;;;34968:79;;:::i;:::-;34930:119;35109:1;35098:9;35094:17;35088:24;35139:18;35131:6;35128:30;35125:117;;;35161:79;;:::i;:::-;35125:117;35266:89;35347:7;35338:6;35327:9;35323:22;35266:89;:::i;:::-;35256:99;;35059:306;34818:554;;;;:::o;35378:94::-;35432:7;35461:5;35450:16;;35378:94;;;:::o;35478:176::-;35545:9;35578:70;35596:51;35605:41;35640:5;35605:41;:::i;:::-;35596:51;:::i;:::-;35578:70;:::i;:::-;35565:83;;35478:176;;;:::o;35660:165::-;35764:54;35812:5;35764:54;:::i;:::-;35759:3;35752:67;35660:165;;:::o;35831:517::-;36019:4;36057:2;36046:9;36042:18;36034:26;;36070:88;36155:1;36144:9;36140:17;36131:6;36070:88;:::i;:::-;36205:9;36199:4;36195:20;36190:2;36179:9;36175:18;36168:48;36233:108;36336:4;36327:6;36233:108;:::i;:::-;36225:116;;35831:517;;;;;:::o;36354:194::-;36394:4;36414:20;36432:1;36414:20;:::i;:::-;36409:25;;36448:20;36466:1;36448:20;:::i;:::-;36443:25;;36492:1;36489;36485:9;36477:17;;36516:1;36510:4;36507:11;36504:37;;;36521:18;;:::i;:::-;36504:37;36354:194;;;;:::o;36554:229::-;36694:34;36690:1;36682:6;36678:14;36671:58;36763:12;36758:2;36750:6;36746:15;36739:37;36554:229;:::o;36789:366::-;36931:3;36952:67;37016:2;37011:3;36952:67;:::i;:::-;36945:74;;37028:93;37117:3;37028:93;:::i;:::-;37146:2;37141:3;37137:12;37130:19;;36789:366;;;:::o;37161:419::-;37327:4;37365:2;37354:9;37350:18;37342:26;;37414:9;37408:4;37404:20;37400:1;37389:9;37385:17;37378:47;37442:131;37568:4;37442:131;:::i;:::-;37434:139;;37161:419;;;:::o;37586:85::-;37631:7;37660:5;37649:16;;37586:85;;;:::o;37677:158::-;37735:9;37768:61;37786:42;37795:32;37821:5;37795:32;:::i;:::-;37786:42;:::i;:::-;37768:61;:::i;:::-;37755:74;;37677:158;;;:::o;37841:147::-;37936:45;37975:5;37936:45;:::i;:::-;37931:3;37924:58;37841:147;;:::o;37994:831::-;38257:4;38295:3;38284:9;38280:19;38272:27;;38309:71;38377:1;38366:9;38362:17;38353:6;38309:71;:::i;:::-;38390:80;38466:2;38455:9;38451:18;38442:6;38390:80;:::i;:::-;38517:9;38511:4;38507:20;38502:2;38491:9;38487:18;38480:48;38545:108;38648:4;38639:6;38545:108;:::i;:::-;38537:116;;38663:72;38731:2;38720:9;38716:18;38707:6;38663:72;:::i;:::-;38745:73;38813:3;38802:9;38798:19;38789:6;38745:73;:::i;:::-;37994:831;;;;;;;;:::o;38831:410::-;38871:7;38894:20;38912:1;38894:20;:::i;:::-;38889:25;;38928:20;38946:1;38928:20;:::i;:::-;38923:25;;38983:1;38980;38976:9;39005:30;39023:11;39005:30;:::i;:::-;38994:41;;39184:1;39175:7;39171:15;39168:1;39165:22;39145:1;39138:9;39118:83;39095:139;;39214:18;;:::i;:::-;39095:139;38879:362;38831:410;;;;:::o;39247:180::-;39295:77;39292:1;39285:88;39392:4;39389:1;39382:15;39416:4;39413:1;39406:15;39433:185;39473:1;39490:20;39508:1;39490:20;:::i;:::-;39485:25;;39524:20;39542:1;39524:20;:::i;:::-;39519:25;;39563:1;39553:35;;39568:18;;:::i;:::-;39553:35;39610:1;39607;39603:9;39598:14;;39433:185;;;;:::o;39624:220::-;39764:34;39760:1;39752:6;39748:14;39741:58;39833:3;39828:2;39820:6;39816:15;39809:28;39624:220;:::o;39850:366::-;39992:3;40013:67;40077:2;40072:3;40013:67;:::i;:::-;40006:74;;40089:93;40178:3;40089:93;:::i;:::-;40207:2;40202:3;40198:12;40191:19;;39850:366;;;:::o;40222:419::-;40388:4;40426:2;40415:9;40411:18;40403:26;;40475:9;40469:4;40465:20;40461:1;40450:9;40446:17;40439:47;40503:131;40629:4;40503:131;:::i;:::-;40495:139;;40222:419;;;:::o;40647:807::-;40896:4;40934:3;40923:9;40919:19;40911:27;;40948:71;41016:1;41005:9;41001:17;40992:6;40948:71;:::i;:::-;41029:72;41097:2;41086:9;41082:18;41073:6;41029:72;:::i;:::-;41111:80;41187:2;41176:9;41172:18;41163:6;41111:80;:::i;:::-;41201;41277:2;41266:9;41262:18;41253:6;41201:80;:::i;:::-;41291:73;41359:3;41348:9;41344:19;41335:6;41291:73;:::i;:::-;41374;41442:3;41431:9;41427:19;41418:6;41374:73;:::i;:::-;40647:807;;;;;;;;;:::o;41460:507::-;41539:6;41547;41596:2;41584:9;41575:7;41571:23;41567:32;41564:119;;;41602:79;;:::i;:::-;41564:119;41722:1;41747:64;41803:7;41794:6;41783:9;41779:22;41747:64;:::i;:::-;41737:74;;41693:128;41860:2;41886:64;41942:7;41933:6;41922:9;41918:22;41886:64;:::i;:::-;41876:74;;41831:129;41460:507;;;;;:::o;41973:94::-;42006:8;42054:5;42050:2;42046:14;42025:35;;41973:94;;;:::o;42073:::-;42112:7;42141:20;42155:5;42141:20;:::i;:::-;42130:31;;42073:94;;;:::o;42173:100::-;42212:7;42241:26;42261:5;42241:26;:::i;:::-;42230:37;;42173:100;;;:::o;42279:157::-;42384:45;42404:24;42422:5;42404:24;:::i;:::-;42384:45;:::i;:::-;42379:3;42372:58;42279:157;;:::o;42442:256::-;42554:3;42569:75;42640:3;42631:6;42569:75;:::i;:::-;42669:2;42664:3;42660:12;42653:19;;42689:3;42682:10;;42442:256;;;;:::o;42704:104::-;42749:7;42778:24;42796:5;42778:24;:::i;:::-;42767:35;;42704:104;;;:::o;42814:108::-;42861:7;42890:26;42910:5;42890:26;:::i;:::-;42879:37;;42814:108;;;:::o;42928:189::-;43049:61;43077:32;43103:5;43077:32;:::i;:::-;43049:61;:::i;:::-;43044:3;43037:74;42928:189;;:::o;43123:288::-;43251:3;43266:91;43353:3;43344:6;43266:91;:::i;:::-;43382:2;43377:3;43373:12;43366:19;;43402:3;43395:10;;43123:288;;;;:::o;43417:79::-;43456:7;43485:5;43474:16;;43417:79;;;:::o;43502:157::-;43607:45;43627:24;43645:5;43627:24;:::i;:::-;43607:45;:::i;:::-;43602:3;43595:58;43502:157;;:::o;43665:256::-;43777:3;43792:75;43863:3;43854:6;43792:75;:::i;:::-;43892:2;43887:3;43883:12;43876:19;;43912:3;43905:10;;43665:256;;;;:::o;43927:177::-;44067:29;44063:1;44055:6;44051:14;44044:53;43927:177;:::o;44110:366::-;44252:3;44273:67;44337:2;44332:3;44273:67;:::i;:::-;44266:74;;44349:93;44438:3;44349:93;:::i;:::-;44467:2;44462:3;44458:12;44451:19;;44110:366;;;:::o;44482:419::-;44648:4;44686:2;44675:9;44671:18;44663:26;;44735:9;44729:4;44725:20;44721:1;44710:9;44706:17;44699:47;44763:131;44889:4;44763:131;:::i;:::-;44755:139;;44482:419;;;:::o

Swarm Source

ipfs://8988d752e9931a39a4424a2e088b560cf4db37e714530a640cf23a33724d7a86
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.