ETH Price: $3,401.47 (-0.46%)
Gas: 12 Gwei

Token

Dispersion (DPS)
 

Overview

Max Total Supply

1,000,000 DPS

Holders

413

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DispersionERC20

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-12
*/

/*
    TELEGRAM - https://t.me/Dispersionapp
    TWITTER - https://x.com/dispersion_app/
    WEBSITE - dispersion.app
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
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 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
        );
}
contract DispersionERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Dispersion";
    string private constant _symbol = "DPS";
    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 = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private BuyFees = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private SellFees = 60;
 
    //Original Fee
    uint256 private _redisFee = 0;
    uint256 private _taxFee = SellFees;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable public _developmentAddress;
    address payable public  _marketingAddress;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000 * 10**9; 
    uint256 public _maxWalletSize = 20000 * 10**9; 
    uint256 public _swapTokensAtAmount = 7500 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _developmentAddress = payable(_msgSender());
        _marketingAddress = payable(0xAed880B72d26Abcf27086eC1FEC2cA0952D0942a);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        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: 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 >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        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 = BuyFees;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = SellFees;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    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 {
        _developmentAddress.transfer(amount/2);
        _marketingAddress.transfer(amount/2);
        
    }
    function launch() public onlyOwner {
        tradingOpen = true;
    }
    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 BlockWallets(address[] memory addys) public onlyOwner {
        for (uint256 i = 0; i < addys.length; i++) {
            bots[addys[i]] = true;
        }
    }
    function unBlockWallet(address _addy) public onlyOwner {
        bots[_addy] = 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 _changeFees(uint256 __buy, uint256 __sell) public onlyOwner {
        BuyFees = __buy;
        SellFees = __sell;
    }
    function _changeSwapbackThreshold(uint256 _amount) public onlyOwner {
        _swapTokensAtAmount = _amount;
    }
    function _toggleSwapback(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    function _excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function _setupWallet(address _marketing,address _development) public onlyOwner{
        _marketingAddress = payable(_marketing);
        _developmentAddress = payable(_development);
    }
    function _changeMaxTx(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;       
    }
    function _changeMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
    function _removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
}

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":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"BlockWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"__buy","type":"uint256"},{"internalType":"uint256","name":"__sell","type":"uint256"}],"name":"_changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"_changeSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"_excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","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":"_removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"_setupWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addy","type":"address"}],"name":"unBlockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680005f196200001a9190620006d7565b5f196200002891906200073b565b6006555f600855601e6009555f600a55603c600b555f600c55600b54600d55600c54600e55600d54600f555f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506512309ce540006016556512309ce540006017556506d23ad5f800601855348015620000b1575f80fd5b505f620000c36200067360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620001756200067360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027a9190620007da565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003069190620007da565b6040518363ffffffff1660e01b8152600401620003259291906200081b565b6020604051808303815f875af115801562000342573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003689190620007da565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b76200067360201b60201c565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aed880b72d26abcf27086ec1fec2ca0952d0942a60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200045f6200067a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005ff6200067360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000664919062000857565b60405180910390a35062000872565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006e382620006a1565b9150620006f083620006a1565b925082620007035762000702620006aa565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200074782620006a1565b91506200075483620006a1565b92508282039050818111156200076f576200076e6200070e565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007a48262000779565b9050919050565b620007b68162000798565b8114620007c1575f80fd5b50565b5f81519050620007d481620007ab565b92915050565b5f60208284031215620007f257620007f162000775565b5b5f6200080184828501620007c4565b91505092915050565b620008158162000798565b82525050565b5f604082019050620008305f8301856200080a565b6200083f60208301846200080a565b9392505050565b6200085181620006a1565b82525050565b5f6020820190506200086c5f83018462000846565b92915050565b613f0380620008805f395ff3fe6080604052600436106101fc575f3560e01c8063715018a61161010c578063bfd792841161009f578063c767d9f11161006e578063c767d9f1146106c3578063caac7934146106eb578063dd62ed3e14610715578063ecff272314610751578063f2fde38b1461077957610203565b8063bfd7928414610621578063c365d73c1461065d578063c3c2cb7e14610685578063c3c8cd80146106ad57610203565b80638f9a55c0116100db5780638f9a55c01461056957806395d89b4114610593578063a107a708146105bd578063a9059cbb146105e557610203565b8063715018a6146104c35780637d1db4a5146104d95780637f2feddc146105035780638da5cb5b1461053f57610203565b80632f10cfb11161018f57806349bd5a5e1161015e57806349bd5a5e146104095780634a30b386146104335780635c67d12d146104495780636fc3eaec1461047157806370a082311461048757610203565b80632f10cfb1146103635780632fd689e31461038b578063313ce567146103b55780633d6a9afe146103df57610203565b80631361805c116101cb5780631361805c146102ab5780631694505e146102d357806318160ddd146102fd57806323b872dd1461032757610203565b806301339c211461020757806306fdde031461021d57806308b897f514610247578063095ea7b31461026f57610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b005b348015610228575f80fd5b50610231610852565b60405161023e9190612e5a565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612ebe565b61088f565b005b34801561027a575f80fd5b5061029560048036038101906102909190612f43565b61092d565b6040516102a29190612f9b565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612fb4565b61094a565b005b3480156102de575f80fd5b506102e76109f0565b6040516102f4919061304d565b60405180910390f35b348015610308575f80fd5b50610311610a15565b60405161031e9190613075565b60405180910390f35b348015610332575f80fd5b5061034d6004803603810190610348919061308e565b610a23565b60405161035a9190612f9b565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190613169565b610af7565b005b348015610396575f80fd5b5061039f610c26565b6040516103ac9190613075565b60405180910390f35b3480156103c0575f80fd5b506103c9610c2c565b6040516103d691906131e1565b60405180910390f35b3480156103ea575f80fd5b506103f3610c34565b604051610400919061321a565b60405180910390f35b348015610414575f80fd5b5061041d610c59565b60405161042a9190613242565b60405180910390f35b34801561043e575f80fd5b50610447610c7e565b005b348015610454575f80fd5b5061046f600480360381019061046a919061325b565b610d30565b005b34801561047c575f80fd5b50610485610de1565b005b348015610492575f80fd5b506104ad60048036038101906104a89190613286565b610eae565b6040516104ba9190613075565b60405180910390f35b3480156104ce575f80fd5b506104d7610efc565b005b3480156104e4575f80fd5b506104ed61104a565b6040516104fa9190613075565b60405180910390f35b34801561050e575f80fd5b5061052960048036038101906105249190613286565b611050565b6040516105369190613075565b60405180910390f35b34801561054a575f80fd5b50610553611065565b6040516105609190613242565b60405180910390f35b348015610574575f80fd5b5061057d61108c565b60405161058a9190613075565b60405180910390f35b34801561059e575f80fd5b506105a7611092565b6040516105b49190612e5a565b60405180910390f35b3480156105c8575f80fd5b506105e360048036038101906105de91906132b1565b6110cf565b005b3480156105f0575f80fd5b5061060b60048036038101906106069190612f43565b6111e7565b6040516106189190612f9b565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613286565b611204565b6040516106549190612f9b565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190612ebe565b611221565b005b348015610690575f80fd5b506106ab60048036038101906106a69190613427565b6112bf565b005b3480156106b8575f80fd5b506106c16113de565b005b3480156106ce575f80fd5b506106e960048036038101906106e49190613286565b6114b3565b005b3480156106f6575f80fd5b506106ff61159e565b60405161070c919061321a565b60405180910390f35b348015610720575f80fd5b5061073b600480360381019061073691906132b1565b6115c3565b6040516107489190613075565b60405180910390f35b34801561075c575f80fd5b5061077760048036038101906107729190612ebe565b611645565b005b348015610784575f80fd5b5061079f600480360381019061079a9190613286565b6116e3565b005b6107a96118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c906134b8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60606040518060400160405280600a81526020017f44697370657273696f6e00000000000000000000000000000000000000000000815250905090565b6108976118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a906134b8565b60405180910390fd5b8060168190555050565b5f6109406109396118a0565b84846118a7565b6001905092915050565b6109526118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906134b8565b60405180910390fd5b8160098190555080600b819055505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f610a2f848484611a6a565b610aec84610a3b6118a0565b610ae785604051806060016040528060288152602001613ea66028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a9e6118a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ca9092919063ffffffff16565b6118a7565b600190509392505050565b610aff6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b82906134b8565b60405180910390fd5b5f5b83839050811015610c20578160055f868685818110610baf57610bae6134d6565b5b9050602002016020810190610bc49190613286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b8d565b50505050565b60185481565b5f6009905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c866118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906134b8565b60405180910390fd5b66038d7ea4c6800060168190555066038d7ea4c68000601781905550565b610d386118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906134b8565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e216118a0565b73ffffffffffffffffffffffffffffffffffffffff161480610e96575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7e6118a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610e9e575f80fd5b5f479050610eab8161232c565b50565b5f610ef560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612411565b9050919050565b610f046118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906134b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4450530000000000000000000000000000000000000000000000000000000000815250905090565b6110d76118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a906134b8565b60405180910390fd5b8160135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6111fa6111f36118a0565b8484611a6a565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b6112296118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac906134b8565b60405180910390fd5b8060178190555050565b6112c76118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a906134b8565b60405180910390fd5b5f5b81518110156113da57600160105f848481518110611376576113756134d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611355565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661141e6118a0565b73ffffffffffffffffffffffffffffffffffffffff161480611493575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147b6118a0565b73ffffffffffffffffffffffffffffffffffffffff16145b61149b575f80fd5b5f6114a530610eae565b90506114b08161247d565b50565b6114bb6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906134b8565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61164d6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b8565b60405180910390fd5b8060188190555050565b6116eb6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906134b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613573565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190c90613601565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a9061368f565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a5d9190613075565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf9061371d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d906137ab565b60405180910390fd5b5f8111611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f90613839565b60405180910390fd5b611b90611065565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bfe5750611bce611065565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fd757601560149054906101000a900460ff16611c8d57611c1f611065565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c83906138c7565b60405180910390fd5b5b601654811115611cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc99061392f565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d70575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da6906139bd565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e5b5760175481611e1084610eae565b611e1a9190613a08565b10611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190613aab565b60405180910390fd5b5b5f611e6530610eae565b90505f60185482101590506018548210611e7f5760185491505b808015611e97575060158054906101000a900460ff16155b8015611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f085750601560169054906101000a900460ff165b8015611f5b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fae575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fd457611fbc8261247d565b5f4790505f811115611fd257611fd14761232c565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612077575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612128575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612127575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612135575f90506122b8565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121de575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121f657600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561229f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122b757600a54600c81905550600b54600d819055505b5b6122c4848484846126e6565b50505050565b5f838311158290612311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123089190612e5a565b60405180910390fd5b505f838561231f9190613ac9565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836123749190613b29565b90811502906040515f60405180830381858888f1935050505015801561239c573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836123e59190613b29565b90811502906040515f60405180830381858888f1935050505015801561240d573d5f803e3d5ffd5b5050565b5f600654821115612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613bc9565b60405180910390fd5b5f612460612713565b9050612475818461273c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156124b3576124b26132ef565b5b6040519080825280602002602001820160405280156124e15781602001602082028036833780820191505090505b50905030815f815181106124f8576124f76134d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c09190613bfb565b816001815181106125d4576125d36134d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061263a3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118a7565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161269c959493929190613d16565b5f604051808303815f87803b1580156126b3575f80fd5b505af11580156126c5573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806126f4576126f3612785565b5b6126ff8484846127be565b8061270d5761270c61297e565b5b50505050565b5f805f61271e612992565b91509150612735818361273c90919063ffffffff16565b9250505090565b5f61277d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129eb565b905092915050565b5f600c5414801561279757505f600d54145b6127bc57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806127cd87612a4c565b9550955095509550955095506128298660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aac90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128ba8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af590919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061290481612b52565b61290e8483612c09565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161296b9190613075565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c6800090506129c166038d7ea4c6800060065461273c90919063ffffffff16565b8210156129de5760065466038d7ea4c680009350935050506129e7565b81819350935050505b9091565b5f8083118290612a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a289190612e5a565b60405180910390fd5b505f8385612a3f9190613b29565b9050809150509392505050565b5f805f805f805f805f612a648a600c54600d54612c43565b9250925092505f612a73612713565b90505f805f612a848e878787612cd5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ca565b905092915050565b5f808284612b039190613a08565b905083811015612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90613db8565b60405180910390fd5b8091505092915050565b5f612b5b612713565b90505f612b718284612d5990919063ffffffff16565b9050612bc38160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612c1e82600654612aac90919063ffffffff16565b600681905550612c3981600754612af590919063ffffffff16565b6007819055505050565b5f805f80612c6d6064612c5f888a612d5990919063ffffffff16565b61273c90919063ffffffff16565b90505f612c966064612c88888b612d5990919063ffffffff16565b61273c90919063ffffffff16565b90505f612cbe82612cb0858c612aac90919063ffffffff16565b612aac90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612cec8589612d5990919063ffffffff16565b90505f612d028689612d5990919063ffffffff16565b90505f612d188789612d5990919063ffffffff16565b90505f612d4082612d328587612aac90919063ffffffff16565b612aac90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612d69575f9050612dca565b5f8284612d769190613dd6565b9050828482612d859190613b29565b14612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc90613e87565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e07578082015181840152602081019050612dec565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e2c82612dd0565b612e368185612dda565b9350612e46818560208601612dea565b612e4f81612e12565b840191505092915050565b5f6020820190508181035f830152612e728184612e22565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612e9d81612e8b565b8114612ea7575f80fd5b50565b5f81359050612eb881612e94565b92915050565b5f60208284031215612ed357612ed2612e83565b5b5f612ee084828501612eaa565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f1282612ee9565b9050919050565b612f2281612f08565b8114612f2c575f80fd5b50565b5f81359050612f3d81612f19565b92915050565b5f8060408385031215612f5957612f58612e83565b5b5f612f6685828601612f2f565b9250506020612f7785828601612eaa565b9150509250929050565b5f8115159050919050565b612f9581612f81565b82525050565b5f602082019050612fae5f830184612f8c565b92915050565b5f8060408385031215612fca57612fc9612e83565b5b5f612fd785828601612eaa565b9250506020612fe885828601612eaa565b9150509250929050565b5f819050919050565b5f61301561301061300b84612ee9565b612ff2565b612ee9565b9050919050565b5f61302682612ffb565b9050919050565b5f6130378261301c565b9050919050565b6130478161302d565b82525050565b5f6020820190506130605f83018461303e565b92915050565b61306f81612e8b565b82525050565b5f6020820190506130885f830184613066565b92915050565b5f805f606084860312156130a5576130a4612e83565b5b5f6130b286828701612f2f565b93505060206130c386828701612f2f565b92505060406130d486828701612eaa565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126130ff576130fe6130de565b5b8235905067ffffffffffffffff81111561311c5761311b6130e2565b5b602083019150836020820283011115613138576131376130e6565b5b9250929050565b61314881612f81565b8114613152575f80fd5b50565b5f813590506131638161313f565b92915050565b5f805f604084860312156131805761317f612e83565b5b5f84013567ffffffffffffffff81111561319d5761319c612e87565b5b6131a9868287016130ea565b935093505060206131bc86828701613155565b9150509250925092565b5f60ff82169050919050565b6131db816131c6565b82525050565b5f6020820190506131f45f8301846131d2565b92915050565b5f61320482612ee9565b9050919050565b613214816131fa565b82525050565b5f60208201905061322d5f83018461320b565b92915050565b61323c81612f08565b82525050565b5f6020820190506132555f830184613233565b92915050565b5f602082840312156132705761326f612e83565b5b5f61327d84828501613155565b91505092915050565b5f6020828403121561329b5761329a612e83565b5b5f6132a884828501612f2f565b91505092915050565b5f80604083850312156132c7576132c6612e83565b5b5f6132d485828601612f2f565b92505060206132e585828601612f2f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61332582612e12565b810181811067ffffffffffffffff82111715613344576133436132ef565b5b80604052505050565b5f613356612e7a565b9050613362828261331c565b919050565b5f67ffffffffffffffff821115613381576133806132ef565b5b602082029050602081019050919050565b5f6133a461339f84613367565b61334d565b905080838252602082019050602084028301858111156133c7576133c66130e6565b5b835b818110156133f057806133dc8882612f2f565b8452602084019350506020810190506133c9565b5050509392505050565b5f82601f83011261340e5761340d6130de565b5b813561341e848260208601613392565b91505092915050565b5f6020828403121561343c5761343b612e83565b5b5f82013567ffffffffffffffff81111561345957613458612e87565b5b613465848285016133fa565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134a2602083612dda565b91506134ad8261346e565b602082019050919050565b5f6020820190508181035f8301526134cf81613496565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61355d602683612dda565b915061356882613503565b604082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135eb602483612dda565b91506135f682613591565b604082019050919050565b5f6020820190508181035f830152613618816135df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613679602283612dda565b91506136848261361f565b604082019050919050565b5f6020820190508181035f8301526136a68161366d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613707602583612dda565b9150613712826136ad565b604082019050919050565b5f6020820190508181035f830152613734816136fb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613795602383612dda565b91506137a08261373b565b604082019050919050565b5f6020820190508181035f8301526137c281613789565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613823602983612dda565b915061382e826137c9565b604082019050919050565b5f6020820190508181035f83015261385081613817565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6138b1603283612dda565b91506138bc82613857565b604082019050919050565b5f6020820190508181035f8301526138de816138a5565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613919601c83612dda565b9150613924826138e5565b602082019050919050565b5f6020820190508181035f8301526139468161390d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139a7602383612dda565b91506139b28261394d565b604082019050919050565b5f6020820190508181035f8301526139d48161399b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a1282612e8b565b9150613a1d83612e8b565b9250828201905080821115613a3557613a346139db565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a95602383612dda565b9150613aa082613a3b565b604082019050919050565b5f6020820190508181035f830152613ac281613a89565b9050919050565b5f613ad382612e8b565b9150613ade83612e8b565b9250828203905081811115613af657613af56139db565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3382612e8b565b9150613b3e83612e8b565b925082613b4e57613b4d613afc565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613bb3602a83612dda565b9150613bbe82613b59565b604082019050919050565b5f6020820190508181035f830152613be081613ba7565b9050919050565b5f81519050613bf581612f19565b92915050565b5f60208284031215613c1057613c0f612e83565b5b5f613c1d84828501613be7565b91505092915050565b5f819050919050565b5f613c49613c44613c3f84613c26565b612ff2565b612e8b565b9050919050565b613c5981613c2f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c9181612f08565b82525050565b5f613ca28383613c88565b60208301905092915050565b5f602082019050919050565b5f613cc482613c5f565b613cce8185613c69565b9350613cd983613c79565b805f5b83811015613d09578151613cf08882613c97565b9750613cfb83613cae565b925050600181019050613cdc565b5085935050505092915050565b5f60a082019050613d295f830188613066565b613d366020830187613c50565b8181036040830152613d488186613cba565b9050613d576060830185613233565b613d646080830184613066565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613da2601b83612dda565b9150613dad82613d6e565b602082019050919050565b5f6020820190508181035f830152613dcf81613d96565b9050919050565b5f613de082612e8b565b9150613deb83612e8b565b9250828202613df981612e8b565b91508282048414831517613e1057613e0f6139db565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e71602183612dda565b9150613e7c82613e17565b604082019050919050565b5f6020820190508181035f830152613e9e81613e65565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089268e943f290c641f644e2d49001af44df25b9b0a5072e184d49a47e4a44e1764736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c8063715018a61161010c578063bfd792841161009f578063c767d9f11161006e578063c767d9f1146106c3578063caac7934146106eb578063dd62ed3e14610715578063ecff272314610751578063f2fde38b1461077957610203565b8063bfd7928414610621578063c365d73c1461065d578063c3c2cb7e14610685578063c3c8cd80146106ad57610203565b80638f9a55c0116100db5780638f9a55c01461056957806395d89b4114610593578063a107a708146105bd578063a9059cbb146105e557610203565b8063715018a6146104c35780637d1db4a5146104d95780637f2feddc146105035780638da5cb5b1461053f57610203565b80632f10cfb11161018f57806349bd5a5e1161015e57806349bd5a5e146104095780634a30b386146104335780635c67d12d146104495780636fc3eaec1461047157806370a082311461048757610203565b80632f10cfb1146103635780632fd689e31461038b578063313ce567146103b55780633d6a9afe146103df57610203565b80631361805c116101cb5780631361805c146102ab5780631694505e146102d357806318160ddd146102fd57806323b872dd1461032757610203565b806301339c211461020757806306fdde031461021d57806308b897f514610247578063095ea7b31461026f57610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b005b348015610228575f80fd5b50610231610852565b60405161023e9190612e5a565b60405180910390f35b348015610252575f80fd5b5061026d60048036038101906102689190612ebe565b61088f565b005b34801561027a575f80fd5b5061029560048036038101906102909190612f43565b61092d565b6040516102a29190612f9b565b60405180910390f35b3480156102b6575f80fd5b506102d160048036038101906102cc9190612fb4565b61094a565b005b3480156102de575f80fd5b506102e76109f0565b6040516102f4919061304d565b60405180910390f35b348015610308575f80fd5b50610311610a15565b60405161031e9190613075565b60405180910390f35b348015610332575f80fd5b5061034d6004803603810190610348919061308e565b610a23565b60405161035a9190612f9b565b60405180910390f35b34801561036e575f80fd5b5061038960048036038101906103849190613169565b610af7565b005b348015610396575f80fd5b5061039f610c26565b6040516103ac9190613075565b60405180910390f35b3480156103c0575f80fd5b506103c9610c2c565b6040516103d691906131e1565b60405180910390f35b3480156103ea575f80fd5b506103f3610c34565b604051610400919061321a565b60405180910390f35b348015610414575f80fd5b5061041d610c59565b60405161042a9190613242565b60405180910390f35b34801561043e575f80fd5b50610447610c7e565b005b348015610454575f80fd5b5061046f600480360381019061046a919061325b565b610d30565b005b34801561047c575f80fd5b50610485610de1565b005b348015610492575f80fd5b506104ad60048036038101906104a89190613286565b610eae565b6040516104ba9190613075565b60405180910390f35b3480156104ce575f80fd5b506104d7610efc565b005b3480156104e4575f80fd5b506104ed61104a565b6040516104fa9190613075565b60405180910390f35b34801561050e575f80fd5b5061052960048036038101906105249190613286565b611050565b6040516105369190613075565b60405180910390f35b34801561054a575f80fd5b50610553611065565b6040516105609190613242565b60405180910390f35b348015610574575f80fd5b5061057d61108c565b60405161058a9190613075565b60405180910390f35b34801561059e575f80fd5b506105a7611092565b6040516105b49190612e5a565b60405180910390f35b3480156105c8575f80fd5b506105e360048036038101906105de91906132b1565b6110cf565b005b3480156105f0575f80fd5b5061060b60048036038101906106069190612f43565b6111e7565b6040516106189190612f9b565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613286565b611204565b6040516106549190612f9b565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190612ebe565b611221565b005b348015610690575f80fd5b506106ab60048036038101906106a69190613427565b6112bf565b005b3480156106b8575f80fd5b506106c16113de565b005b3480156106ce575f80fd5b506106e960048036038101906106e49190613286565b6114b3565b005b3480156106f6575f80fd5b506106ff61159e565b60405161070c919061321a565b60405180910390f35b348015610720575f80fd5b5061073b600480360381019061073691906132b1565b6115c3565b6040516107489190613075565b60405180910390f35b34801561075c575f80fd5b5061077760048036038101906107729190612ebe565b611645565b005b348015610784575f80fd5b5061079f600480360381019061079a9190613286565b6116e3565b005b6107a96118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082c906134b8565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60606040518060400160405280600a81526020017f44697370657273696f6e00000000000000000000000000000000000000000000815250905090565b6108976118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091a906134b8565b60405180910390fd5b8060168190555050565b5f6109406109396118a0565b84846118a7565b6001905092915050565b6109526118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d5906134b8565b60405180910390fd5b8160098190555080600b819055505050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f610a2f848484611a6a565b610aec84610a3b6118a0565b610ae785604051806060016040528060288152602001613ea66028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a9e6118a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ca9092919063ffffffff16565b6118a7565b600190509392505050565b610aff6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b82906134b8565b60405180910390fd5b5f5b83839050811015610c20578160055f868685818110610baf57610bae6134d6565b5b9050602002016020810190610bc49190613286565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b8d565b50505050565b60185481565b5f6009905090565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c866118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d09906134b8565b60405180910390fd5b66038d7ea4c6800060168190555066038d7ea4c68000601781905550565b610d386118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906134b8565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e216118a0565b73ffffffffffffffffffffffffffffffffffffffff161480610e96575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7e6118a0565b73ffffffffffffffffffffffffffffffffffffffff16145b610e9e575f80fd5b5f479050610eab8161232c565b50565b5f610ef560025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612411565b9050919050565b610f046118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f87906134b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f4450530000000000000000000000000000000000000000000000000000000000815250905090565b6110d76118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a906134b8565b60405180910390fd5b8160135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f6111fa6111f36118a0565b8484611a6a565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b6112296118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac906134b8565b60405180910390fd5b8060178190555050565b6112c76118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a906134b8565b60405180910390fd5b5f5b81518110156113da57600160105f848481518110611376576113756134d6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611355565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661141e6118a0565b73ffffffffffffffffffffffffffffffffffffffff161480611493575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661147b6118a0565b73ffffffffffffffffffffffffffffffffffffffff16145b61149b575f80fd5b5f6114a530610eae565b90506114b08161247d565b50565b6114bb6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153e906134b8565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61164d6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d0906134b8565b60405180910390fd5b8060188190555050565b6116eb6118a0565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906134b8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90613573565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190c90613601565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197a9061368f565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a5d9190613075565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf9061371d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d906137ab565b60405180910390fd5b5f8111611b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7f90613839565b60405180910390fd5b611b90611065565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bfe5750611bce611065565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fd757601560149054906101000a900460ff16611c8d57611c1f611065565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c83906138c7565b60405180910390fd5b5b601654811115611cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc99061392f565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d70575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da6906139bd565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e5b5760175481611e1084610eae565b611e1a9190613a08565b10611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5190613aab565b60405180910390fd5b5b5f611e6530610eae565b90505f60185482101590506018548210611e7f5760185491505b808015611e97575060158054906101000a900460ff16155b8015611ef0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f085750601560169054906101000a900460ff165b8015611f5b575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611fae575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fd457611fbc8261247d565b5f4790505f811115611fd257611fd14761232c565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612077575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612128575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612127575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612135575f90506122b8565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121de575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121f657600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561229f575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122b757600a54600c81905550600b54600d819055505b5b6122c4848484846126e6565b50505050565b5f838311158290612311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123089190612e5a565b60405180910390fd5b505f838561231f9190613ac9565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836123749190613b29565b90811502906040515f60405180830381858888f1935050505015801561239c573d5f803e3d5ffd5b5060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6002836123e59190613b29565b90811502906040515f60405180830381858888f1935050505015801561240d573d5f803e3d5ffd5b5050565b5f600654821115612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90613bc9565b60405180910390fd5b5f612460612713565b9050612475818461273c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156124b3576124b26132ef565b5b6040519080825280602002602001820160405280156124e15781602001602082028036833780820191505090505b50905030815f815181106124f8576124f76134d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c09190613bfb565b816001815181106125d4576125d36134d6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061263a3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846118a7565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161269c959493929190613d16565b5f604051808303815f87803b1580156126b3575f80fd5b505af11580156126c5573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806126f4576126f3612785565b5b6126ff8484846127be565b8061270d5761270c61297e565b5b50505050565b5f805f61271e612992565b91509150612735818361273c90919063ffffffff16565b9250505090565b5f61277d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129eb565b905092915050565b5f600c5414801561279757505f600d54145b6127bc57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806127cd87612a4c565b9550955095509550955095506128298660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612aac90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128ba8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af590919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061290481612b52565b61290e8483612c09565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161296b9190613075565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c6800090506129c166038d7ea4c6800060065461273c90919063ffffffff16565b8210156129de5760065466038d7ea4c680009350935050506129e7565b81819350935050505b9091565b5f8083118290612a31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a289190612e5a565b60405180910390fd5b505f8385612a3f9190613b29565b9050809150509392505050565b5f805f805f805f805f612a648a600c54600d54612c43565b9250925092505f612a73612713565b90505f805f612a848e878787612cd5565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612aed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ca565b905092915050565b5f808284612b039190613a08565b905083811015612b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3f90613db8565b60405180910390fd5b8091505092915050565b5f612b5b612713565b90505f612b718284612d5990919063ffffffff16565b9050612bc38160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612c1e82600654612aac90919063ffffffff16565b600681905550612c3981600754612af590919063ffffffff16565b6007819055505050565b5f805f80612c6d6064612c5f888a612d5990919063ffffffff16565b61273c90919063ffffffff16565b90505f612c966064612c88888b612d5990919063ffffffff16565b61273c90919063ffffffff16565b90505f612cbe82612cb0858c612aac90919063ffffffff16565b612aac90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612cec8589612d5990919063ffffffff16565b90505f612d028689612d5990919063ffffffff16565b90505f612d188789612d5990919063ffffffff16565b90505f612d4082612d328587612aac90919063ffffffff16565b612aac90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612d69575f9050612dca565b5f8284612d769190613dd6565b9050828482612d859190613b29565b14612dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbc90613e87565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e07578082015181840152602081019050612dec565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e2c82612dd0565b612e368185612dda565b9350612e46818560208601612dea565b612e4f81612e12565b840191505092915050565b5f6020820190508181035f830152612e728184612e22565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612e9d81612e8b565b8114612ea7575f80fd5b50565b5f81359050612eb881612e94565b92915050565b5f60208284031215612ed357612ed2612e83565b5b5f612ee084828501612eaa565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f1282612ee9565b9050919050565b612f2281612f08565b8114612f2c575f80fd5b50565b5f81359050612f3d81612f19565b92915050565b5f8060408385031215612f5957612f58612e83565b5b5f612f6685828601612f2f565b9250506020612f7785828601612eaa565b9150509250929050565b5f8115159050919050565b612f9581612f81565b82525050565b5f602082019050612fae5f830184612f8c565b92915050565b5f8060408385031215612fca57612fc9612e83565b5b5f612fd785828601612eaa565b9250506020612fe885828601612eaa565b9150509250929050565b5f819050919050565b5f61301561301061300b84612ee9565b612ff2565b612ee9565b9050919050565b5f61302682612ffb565b9050919050565b5f6130378261301c565b9050919050565b6130478161302d565b82525050565b5f6020820190506130605f83018461303e565b92915050565b61306f81612e8b565b82525050565b5f6020820190506130885f830184613066565b92915050565b5f805f606084860312156130a5576130a4612e83565b5b5f6130b286828701612f2f565b93505060206130c386828701612f2f565b92505060406130d486828701612eaa565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126130ff576130fe6130de565b5b8235905067ffffffffffffffff81111561311c5761311b6130e2565b5b602083019150836020820283011115613138576131376130e6565b5b9250929050565b61314881612f81565b8114613152575f80fd5b50565b5f813590506131638161313f565b92915050565b5f805f604084860312156131805761317f612e83565b5b5f84013567ffffffffffffffff81111561319d5761319c612e87565b5b6131a9868287016130ea565b935093505060206131bc86828701613155565b9150509250925092565b5f60ff82169050919050565b6131db816131c6565b82525050565b5f6020820190506131f45f8301846131d2565b92915050565b5f61320482612ee9565b9050919050565b613214816131fa565b82525050565b5f60208201905061322d5f83018461320b565b92915050565b61323c81612f08565b82525050565b5f6020820190506132555f830184613233565b92915050565b5f602082840312156132705761326f612e83565b5b5f61327d84828501613155565b91505092915050565b5f6020828403121561329b5761329a612e83565b5b5f6132a884828501612f2f565b91505092915050565b5f80604083850312156132c7576132c6612e83565b5b5f6132d485828601612f2f565b92505060206132e585828601612f2f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61332582612e12565b810181811067ffffffffffffffff82111715613344576133436132ef565b5b80604052505050565b5f613356612e7a565b9050613362828261331c565b919050565b5f67ffffffffffffffff821115613381576133806132ef565b5b602082029050602081019050919050565b5f6133a461339f84613367565b61334d565b905080838252602082019050602084028301858111156133c7576133c66130e6565b5b835b818110156133f057806133dc8882612f2f565b8452602084019350506020810190506133c9565b5050509392505050565b5f82601f83011261340e5761340d6130de565b5b813561341e848260208601613392565b91505092915050565b5f6020828403121561343c5761343b612e83565b5b5f82013567ffffffffffffffff81111561345957613458612e87565b5b613465848285016133fa565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134a2602083612dda565b91506134ad8261346e565b602082019050919050565b5f6020820190508181035f8301526134cf81613496565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61355d602683612dda565b915061356882613503565b604082019050919050565b5f6020820190508181035f83015261358a81613551565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6135eb602483612dda565b91506135f682613591565b604082019050919050565b5f6020820190508181035f830152613618816135df565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613679602283612dda565b91506136848261361f565b604082019050919050565b5f6020820190508181035f8301526136a68161366d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613707602583612dda565b9150613712826136ad565b604082019050919050565b5f6020820190508181035f830152613734816136fb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613795602383612dda565b91506137a08261373b565b604082019050919050565b5f6020820190508181035f8301526137c281613789565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613823602983612dda565b915061382e826137c9565b604082019050919050565b5f6020820190508181035f83015261385081613817565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6138b1603283612dda565b91506138bc82613857565b604082019050919050565b5f6020820190508181035f8301526138de816138a5565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613919601c83612dda565b9150613924826138e5565b602082019050919050565b5f6020820190508181035f8301526139468161390d565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139a7602383612dda565b91506139b28261394d565b604082019050919050565b5f6020820190508181035f8301526139d48161399b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a1282612e8b565b9150613a1d83612e8b565b9250828201905080821115613a3557613a346139db565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a95602383612dda565b9150613aa082613a3b565b604082019050919050565b5f6020820190508181035f830152613ac281613a89565b9050919050565b5f613ad382612e8b565b9150613ade83612e8b565b9250828203905081811115613af657613af56139db565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b3382612e8b565b9150613b3e83612e8b565b925082613b4e57613b4d613afc565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613bb3602a83612dda565b9150613bbe82613b59565b604082019050919050565b5f6020820190508181035f830152613be081613ba7565b9050919050565b5f81519050613bf581612f19565b92915050565b5f60208284031215613c1057613c0f612e83565b5b5f613c1d84828501613be7565b91505092915050565b5f819050919050565b5f613c49613c44613c3f84613c26565b612ff2565b612e8b565b9050919050565b613c5981613c2f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c9181612f08565b82525050565b5f613ca28383613c88565b60208301905092915050565b5f602082019050919050565b5f613cc482613c5f565b613cce8185613c69565b9350613cd983613c79565b805f5b83811015613d09578151613cf08882613c97565b9750613cfb83613cae565b925050600181019050613cdc565b5085935050505092915050565b5f60a082019050613d295f830188613066565b613d366020830187613c50565b8181036040830152613d488186613cba565b9050613d576060830185613233565b613d646080830184613066565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613da2601b83612dda565b9150613dad82613d6e565b602082019050919050565b5f6020820190508181035f830152613dcf81613d96565b9050919050565b5f613de082612e8b565b9150613deb83612e8b565b9250828202613df981612e8b565b91508282048414831517613e1057613e0f6139db565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e71602183612dda565b9150613e7c82613e17565b604082019050919050565b5f6020820190508181035f830152613e9e81613e65565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122089268e943f290c641f644e2d49001af44df25b9b0a5072e184d49a47e4a44e1764736f6c63430008160033

Deployed Bytecode Sourcemap

4144:13571:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12285:72;;;;;;;;;;;;;:::i;:::-;;6629:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17346:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7561:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16537:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5359:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6909:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7763:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16908:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5655:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6817:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5259:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5407:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17588:118;;;;;;;;;;;;;:::i;:::-;;16796:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12608:235;;;;;;;;;;;;;:::i;:::-;;7013:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1656:148;;;;;;;;;;;;;:::i;:::-;;5551:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1446:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5602:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6721:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17149:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7160:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5170:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17467:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12852:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12363:236;;;;;;;;;;;;;:::i;:::-;;13030:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5308:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7368:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16674:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1813:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12285:72;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12345:4:::1;12331:11;;:18;;;;;;;;;;;;;;;;;;12285:72::o:0;6629:83::-;6666:13;6699:5;;;;;;;;;;;;;;;;;6692:12;;6629:83;:::o;17346:115::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17435:11:::1;17420:12;:26;;;;17346:115:::0;:::o;7561:193::-;7663:4;7685:39;7694:12;:10;:12::i;:::-;7708:7;7717:6;7685:8;:39::i;:::-;7742:4;7735:11;;7561:193;;;;:::o;16537:131::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16627:5:::1;16617:7;:15;;;;16654:6;16643:8;:17;;;;16537:131:::0;;:::o;5359:41::-;;;;;;;;;;;;;:::o;6909:95::-;6962:7;4693:15;6982:14;;6909:95;:::o;7763:446::-;7895:4;7912:36;7922:6;7930:9;7941:6;7912:9;:36::i;:::-;7959:220;7982:6;8003:12;:10;:12::i;:::-;8030:138;8086:6;8030:138;;;;;;;;;;;;;;;;;:11;:19;8042:6;8030:19;;;;;;;;;;;;;;;:33;8050:12;:10;:12::i;:::-;8030:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7959:8;:220::i;:::-;8197:4;8190:11;;7763:446;;;;;:::o;16908:235::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17026:9:::1;17022:114;17045:8;;:15;;17041:1;:19;17022:114;;;17116:8;17082:18;:31;17101:8;;17110:1;17101:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17082:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17062:3;;;;;;;17022:114;;;;16908:235:::0;;;:::o;5655:49::-;;;;:::o;6817:83::-;6858:5;4369:1;6876:16;;6817:83;:::o;5259:42::-;;;;;;;;;;;;;:::o;5407:28::-;;;;;;;;;;;;;:::o;17588:118::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4693:15:::1;17641:12;:22;;;;4693:15;17674:14;:24;;;;17588:118::o:0;16796:106::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16882:12:::1;16868:11;;:26;;;;;;;;;;;;;;;;;;16796:106:::0;:::o;12608:235::-;12674:19;;;;;;;;;;;12658:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12713:17;;;;;;;;;;;12697:33;;:12;:10;:12::i;:::-;:33;;;12658:72;12650:81;;;;;;12742:26;12771:21;12742:50;;12803:32;12816:18;12803:12;:32::i;:::-;12639:204;12608:235::o;7013:138::-;7079:7;7106:37;7126:7;:16;7134:7;7126:16;;;;;;;;;;;;;;;;7106:19;:37::i;:::-;7099:44;;7013:138;;;:::o;1656:148::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1763:1:::1;1726:40;;1747:6;::::0;::::1;;;;;;;;1726:40;;;;;;;;;;;;1794:1;1777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1656:148::o:0;5551:43::-;;;;:::o;5208:::-;;;;;;;;;;;;;;;;;:::o;1446:79::-;1484:7;1511:6;;;;;;;;;;;1504:13;;1446:79;:::o;5602:45::-;;;;:::o;6721:87::-;6760:13;6793:7;;;;;;;;;;;;;;;;;6786:14;;6721:87;:::o;17149:191::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17267:10:::1;17239:17;;:39;;;;;;;;;;;;;;;;;;17319:12;17289:19;;:43;;;;;;;;;;;;;;;;;;17149:191:::0;;:::o;7160:199::-;7265:4;7287:42;7297:12;:10;:12::i;:::-;7311:9;7322:6;7287:9;:42::i;:::-;7347:4;7340:11;;7160:199;;;;:::o;5170:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17467:115::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17561:13:::1;17544:14;:30;;;;17467:115:::0;:::o;12852:172::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12931:9:::1;12926:91;12950:5;:12;12946:1;:16;12926:91;;;13001:4;12984;:14;12989:5;12995:1;12989:8;;;;;;;;:::i;:::-;;;;;;;;12984:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12964:3;;;;;;;12926:91;;;;12852:172:::0;:::o;12363:236::-;12429:19;;;;;;;;;;;12413:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12468:17;;;;;;;;;;;12452:33;;:12;:10;:12::i;:::-;:33;;;12413:72;12405:81;;;;;;12497:23;12523:24;12541:4;12523:9;:24::i;:::-;12497:50;;12558:33;12575:15;12558:16;:33::i;:::-;12394:205;12363:236::o;13030:93::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13110:5:::1;13096:4;:11;13101:5;13096:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13030:93:::0;:::o;5308:41::-;;;;;;;;;;;;;:::o;7368:184::-;7485:7;7517:11;:18;7529:5;7517:18;;;;;;;;;;;;;;;:27;7536:7;7517:27;;;;;;;;;;;;;;;;7510:34;;7368:184;;;;:::o;16674:116::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16775:7:::1;16753:19;:29;;;;16674:116:::0;:::o;1813:244::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1922:1:::1;1902:22;;:8;:22;;::::0;1894:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2012:8;1983:38;;2004:6;::::0;::::1;;;;;;;;1983:38;;;;;;;;;;;;2041:8;2032:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1813:244:::0;:::o;225:98::-;278:7;305:10;298:17;;225:98;:::o;8906:369::-;9050:1;9033:19;;:5;:19;;;9025:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9131:1;9112:21;;:7;:21;;;9104:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9213:6;9183:11;:18;9195:5;9183:18;;;;;;;;;;;;;;;:27;9202:7;9183:27;;;;;;;;;;;;;;;:36;;;;9251:7;9235:32;;9244:5;9235:32;;;9260:6;9235:32;;;;;;:::i;:::-;;;;;;;;8906:369;;;:::o;9284:2334::-;9422:1;9406:18;;:4;:18;;;9398:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:1;9485:16;;:2;:16;;;9477:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9569:1;9560:6;:10;9552:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9642:7;:5;:7::i;:::-;9634:15;;:4;:15;;;;:32;;;;;9659:7;:5;:7::i;:::-;9653:13;;:2;:13;;;;9634:32;9630:1266;;;9724:11;;;;;;;;;;;9719:131;;9772:7;:5;:7::i;:::-;9764:15;;:4;:15;;;9756:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9719:131;9885:12;;9875:6;:22;;9867:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9954:4;:10;9959:4;9954:10;;;;;;;;;;;;;;;;;;;;;;;;;9953:11;:24;;;;;9969:4;:8;9974:2;9969:8;;;;;;;;;;;;;;;;;;;;;;;;;9968:9;9953:24;9945:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10044:13;;;;;;;;;;;10038:19;;:2;:19;;;10035:146;;10111:14;;10102:6;10086:13;10096:2;10086:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10078:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10035:146;10198:28;10229:24;10247:4;10229:9;:24::i;:::-;10198:55;;10268:12;10307:19;;10283:20;:43;;10268:58;;10371:19;;10347:20;:43;10344:138;;10447:19;;10424:42;;10344:138;10503:7;:18;;;;;10515:6;;;;;;;;;;10514:7;10503:18;:43;;;;;10533:13;;;;;;;;;;;10525:21;;:4;:21;;;;10503:43;:58;;;;;10550:11;;;;;;;;;;;10503:58;:87;;;;;10566:18;:24;10585:4;10566:24;;;;;;;;;;;;;;;;;;;;;;;;;10565:25;10503:87;:114;;;;;10595:18;:22;10614:2;10595:22;;;;;;;;;;;;;;;;;;;;;;;;;10594:23;10503:114;10499:386;;;10638:38;10655:20;10638:16;:38::i;:::-;10695:26;10724:21;10695:50;;10789:1;10768:18;:22;10764:106;;;10815:35;10828:21;10815:12;:35::i;:::-;10764:106;10619:266;10499:386;9668:1228;;9630:1266;10909:12;10924:4;10909:19;;10974:18;:24;10993:4;10974:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11002:18;:22;11021:2;11002:22;;;;;;;;;;;;;;;;;;;;;;;;;10974:50;10973:102;;;;11038:13;;;;;;;;;;;11030:21;;:4;:21;;;;:44;;;;;11061:13;;;;;;;;;;;11055:19;;:2;:19;;;;11030:44;10973:102;10969:587;;;11102:5;11092:15;;10969:587;;;11186:13;;;;;;;;;;;11178:21;;:4;:21;;;:55;;;;;11217:15;;;;;;;;;;;11203:30;;:2;:30;;;;11178:55;11175:157;;;11266:14;;11254:9;:26;;;;11309:7;;11299;:17;;;;11175:157;11392:13;;;;;;;;;;;11386:19;;:2;:19;;;:55;;;;;11425:15;;;;;;;;;;;11409:32;;:4;:32;;;;11386:55;11382:160;;;11474:15;;11462:9;:27;;;;11518:8;;11508:7;:18;;;;11382:160;10969:587;11569:41;11584:4;11590:2;11594:6;11602:7;11569:14;:41::i;:::-;9387:2231;9284:2334;;;:::o;2413:224::-;2533:7;2566:1;2561;:6;;2569:12;2553:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2593:9;2609:1;2605;:5;;;;:::i;:::-;2593:17;;2628:1;2621:8;;;2413:224;;;;;:::o;12119:160::-;12176:19;;;;;;;;;;;:28;;:38;12212:1;12205:6;:8;;;;:::i;:::-;12176:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12225:17;;;;;;;;;;;:26;;:36;12259:1;12252:6;:8;;;;:::i;:::-;12225:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12119:160;:::o;8218:323::-;8313:7;8371;;8360;:18;;8338:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8459:19;8481:10;:8;:10::i;:::-;8459:32;;8509:24;8521:11;8509:7;:11;;:24;;;;:::i;:::-;8502:31;;;8218:323;;;:::o;11627:483::-;5808:4;5799:6;;:13;;;;;;;;;;;;;;;;;;11705:21:::1;11743:1;11729:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11705:40;;11774:4;11756;11761:1;11756:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11800:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11790:4;11795:1;11790:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11833:62;11850:4;11865:15;;;;;;;;;;;11883:11;11833:8;:62::i;:::-;11906:15;;;;;;;;;;;:66;;;11987:11;12013:1;12029:4;12056;12076:15;11906:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11694:416;5844:5:::0;5835:6;;:14;;;;;;;;;;;;;;;;;;11627:483;:::o;13129:282::-;13285:7;13280:28;;13294:14;:12;:14::i;:::-;13280:28;13319:44;13337:6;13345:9;13356:6;13319:17;:44::i;:::-;13379:7;13374:29;;13388:15;:13;:15::i;:::-;13374:29;13129:282;;;;:::o;16098:164::-;16140:7;16161:15;16178;16197:19;:17;:19::i;:::-;16160:56;;;;16234:20;16246:7;16234;:11;;:20;;;;:::i;:::-;16227:27;;;;16098:164;:::o;2895:132::-;2953:7;2980:39;2984:1;2987;2980:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2973:46;;2895:132;;;;:::o;8550:221::-;8610:1;8597:9;;:14;:30;;;;;8626:1;8615:7;;:12;8597:30;8629:7;8593:43;8669:9;;8649:17;:29;;;;8707:7;;8689:15;:25;;;;8740:1;8728:9;:13;;;;8762:1;8752:7;:11;;;;8550:221;:::o;13420:610::-;13567:15;13597:23;13635:12;13662:23;13700:12;13727:13;13754:19;13765:7;13754:10;:19::i;:::-;13552:221;;;;;;;;;;;;13802:28;13822:7;13802;:15;13810:6;13802:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13784:7;:15;13792:6;13784:15;;;;;;;;;;;;;;;:46;;;;13862:39;13885:15;13862:7;:18;13870:9;13862:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13841:7;:18;13849:9;13841:18;;;;;;;;;;;;;;;:60;;;;13912:16;13922:5;13912:9;:16::i;:::-;13939:23;13951:4;13957;13939:11;:23::i;:::-;13995:9;13978:44;;13987:6;13978:44;;;14006:15;13978:44;;;;;;:::i;:::-;;;;;;;;13541:489;;;;;;13420:610;;;:::o;8780:117::-;8836:17;;8824:9;:29;;;;8874:15;;8864:7;:25;;;;8780:117::o;16271:257::-;16322:7;16331;16351:15;16369:7;;16351:25;;16387:15;4693;16387:25;;16437:20;4693:15;16437:7;;:11;;:20;;;;:::i;:::-;16427:7;:30;16423:61;;;16467:7;;4693:15;16459:25;;;;;;;;16423:61;16503:7;16512;16495:25;;;;;;16271:257;;;:::o;3033:223::-;3153:7;3185:1;3181;:5;3188:12;3173:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3212:9;3228:1;3224;:5;;;;:::i;:::-;3212:17;;3247:1;3240:8;;;3033:223;;;;;:::o;14453:615::-;14553:7;14575;14597;14619;14641;14663;14699:23;14724:12;14738:13;14768:40;14780:7;14789:9;;14800:7;;14768:11;:40::i;:::-;14698:110;;;;;;14819:19;14841:10;:8;:10::i;:::-;14819:32;;14863:15;14880:23;14905:12;14934:46;14946:7;14955:4;14961:5;14968:11;14934;:46::i;:::-;14862:118;;;;;;14999:7;15008:15;15025:4;15031:15;15048:4;15054:5;14991:69;;;;;;;;;;;;;;;;;;;14453:615;;;;;;;:::o;2271:136::-;2329:7;2356:43;2360:1;2363;2356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2349:50;;2271:136;;;;:::o;2086:179::-;2144:7;2164:9;2180:1;2176;:5;;;;:::i;:::-;2164:17;;2205:1;2200;:6;;2192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2256:1;2249:8;;;2086:179;;;;:::o;14039:211::-;14092:19;14114:10;:8;:10::i;:::-;14092:32;;14135:13;14151:22;14161:11;14151:5;:9;;:22;;;;:::i;:::-;14135:38;;14209:33;14236:5;14209:7;:22;14225:4;14209:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14184:7;:22;14200:4;14184:22;;;;;;;;;;;;;;;:58;;;;14081:169;;14039:211;:::o;14259:147::-;14337:17;14349:4;14337:7;;:11;;:17;;;;:::i;:::-;14327:7;:27;;;;14378:20;14393:4;14378:10;;:14;;:20;;;;:::i;:::-;14365:10;:33;;;;14259:147;;:::o;15077:469::-;15246:7;15268;15290;15325:12;15340:30;15366:3;15340:21;15352:8;15340:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15325:45;;15381:13;15397:28;15421:3;15397:19;15409:6;15397:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15381:44;;15436:23;15462:28;15484:5;15462:17;15474:4;15462:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15436:54;;15509:15;15526:4;15532:5;15501:37;;;;;;;;;15077:469;;;;;;;:::o;15555:534::-;15749:7;15771;15793;15828:15;15846:24;15858:11;15846:7;:11;;:24;;;;:::i;:::-;15828:42;;15881:12;15896:21;15905:11;15896:4;:8;;:21;;;;:::i;:::-;15881:36;;15928:13;15944:22;15954:11;15944:5;:9;;:22;;;;:::i;:::-;15928:38;;15977:23;16003:28;16025:5;16003:17;16015:4;16003:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15977:54;;16050:7;16059:15;16076:4;16042:39;;;;;;;;;;15555:534;;;;;;;;:::o;2643:246::-;2701:7;2730:1;2725;:6;2721:47;;2755:1;2748:8;;;;2721:47;2778:9;2794:1;2790;:5;;;;:::i;:::-;2778:17;;2823:1;2818;2814;:5;;;;:::i;:::-;:10;2806:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2880:1;2873:8;;;2643:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:329::-;2091:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:119;;;2146:79;;:::i;:::-;2108:119;2266:1;2291:53;2336:7;2327:6;2316:9;2312:22;2291:53;:::i;:::-;2281:63;;2237:117;2032:329;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:474::-;3849:6;3857;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;4159:2;4185:53;4230:7;4221:6;4210:9;4206:22;4185:53;:::i;:::-;4175:63;;4130:118;3781:474;;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:152::-;4683:9;4716:37;4747:5;4716:37;:::i;:::-;4703:50;;4607:152;;;:::o;4765:183::-;4878:63;4935:5;4878:63;:::i;:::-;4873:3;4866:76;4765:183;;:::o;4954:274::-;5073:4;5111:2;5100:9;5096:18;5088:26;;5124:97;5218:1;5207:9;5203:17;5194:6;5124:97;:::i;:::-;4954:274;;;;:::o;5234:118::-;5321:24;5339:5;5321:24;:::i;:::-;5316:3;5309:37;5234:118;;:::o;5358:222::-;5451:4;5489:2;5478:9;5474:18;5466:26;;5502:71;5570:1;5559:9;5555:17;5546:6;5502:71;:::i;:::-;5358:222;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:117::-;6320:1;6317;6310:12;6334:117;6443:1;6440;6433:12;6457:117;6566:1;6563;6556:12;6597:568;6670:8;6680:6;6730:3;6723:4;6715:6;6711:17;6707:27;6697:122;;6738:79;;:::i;:::-;6697:122;6851:6;6838:20;6828:30;;6881:18;6873:6;6870:30;6867:117;;;6903:79;;:::i;:::-;6867:117;7017:4;7009:6;7005:17;6993:29;;7071:3;7063:4;7055:6;7051:17;7041:8;7037:32;7034:41;7031:128;;;7078:79;;:::i;:::-;7031:128;6597:568;;;;;:::o;7171:116::-;7241:21;7256:5;7241:21;:::i;:::-;7234:5;7231:32;7221:60;;7277:1;7274;7267:12;7221:60;7171:116;:::o;7293:133::-;7336:5;7374:6;7361:20;7352:29;;7390:30;7414:5;7390:30;:::i;:::-;7293:133;;;;:::o;7432:698::-;7524:6;7532;7540;7589:2;7577:9;7568:7;7564:23;7560:32;7557:119;;;7595:79;;:::i;:::-;7557:119;7743:1;7732:9;7728:17;7715:31;7773:18;7765:6;7762:30;7759:117;;;7795:79;;:::i;:::-;7759:117;7908:80;7980:7;7971:6;7960:9;7956:22;7908:80;:::i;:::-;7890:98;;;;7686:312;8037:2;8063:50;8105:7;8096:6;8085:9;8081:22;8063:50;:::i;:::-;8053:60;;8008:115;7432:698;;;;;:::o;8136:86::-;8171:7;8211:4;8204:5;8200:16;8189:27;;8136:86;;;:::o;8228:112::-;8311:22;8327:5;8311:22;:::i;:::-;8306:3;8299:35;8228:112;;:::o;8346:214::-;8435:4;8473:2;8462:9;8458:18;8450:26;;8486:67;8550:1;8539:9;8535:17;8526:6;8486:67;:::i;:::-;8346:214;;;;:::o;8566:104::-;8611:7;8640:24;8658:5;8640:24;:::i;:::-;8629:35;;8566:104;;;:::o;8676:142::-;8779:32;8805:5;8779:32;:::i;:::-;8774:3;8767:45;8676:142;;:::o;8824:254::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:87;9068:1;9057:9;9053:17;9044:6;8984:87;:::i;:::-;8824:254;;;;:::o;9084:118::-;9171:24;9189:5;9171:24;:::i;:::-;9166:3;9159:37;9084:118;;:::o;9208:222::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9352:71;9420:1;9409:9;9405:17;9396:6;9352:71;:::i;:::-;9208:222;;;;:::o;9436:323::-;9492:6;9541:2;9529:9;9520:7;9516:23;9512:32;9509:119;;;9547:79;;:::i;:::-;9509:119;9667:1;9692:50;9734:7;9725:6;9714:9;9710:22;9692:50;:::i;:::-;9682:60;;9638:114;9436:323;;;;:::o;9765:329::-;9824:6;9873:2;9861:9;9852:7;9848:23;9844:32;9841:119;;;9879:79;;:::i;:::-;9841:119;9999:1;10024:53;10069:7;10060:6;10049:9;10045:22;10024:53;:::i;:::-;10014:63;;9970:117;9765:329;;;;:::o;10100:474::-;10168:6;10176;10225:2;10213:9;10204:7;10200:23;10196:32;10193:119;;;10231:79;;:::i;:::-;10193:119;10351:1;10376:53;10421:7;10412:6;10401:9;10397:22;10376:53;:::i;:::-;10366:63;;10322:117;10478:2;10504:53;10549:7;10540:6;10529:9;10525:22;10504:53;:::i;:::-;10494:63;;10449:118;10100:474;;;;;:::o;10580:180::-;10628:77;10625:1;10618:88;10725:4;10722:1;10715:15;10749:4;10746:1;10739:15;10766:281;10849:27;10871:4;10849:27;:::i;:::-;10841:6;10837:40;10979:6;10967:10;10964:22;10943:18;10931:10;10928:34;10925:62;10922:88;;;10990:18;;:::i;:::-;10922:88;11030:10;11026:2;11019:22;10809:238;10766:281;;:::o;11053:129::-;11087:6;11114:20;;:::i;:::-;11104:30;;11143:33;11171:4;11163:6;11143:33;:::i;:::-;11053:129;;;:::o;11188:311::-;11265:4;11355:18;11347:6;11344:30;11341:56;;;11377:18;;:::i;:::-;11341:56;11427:4;11419:6;11415:17;11407:25;;11487:4;11481;11477:15;11469:23;;11188:311;;;:::o;11522:710::-;11618:5;11643:81;11659:64;11716:6;11659:64;:::i;:::-;11643:81;:::i;:::-;11634:90;;11744:5;11773:6;11766:5;11759:21;11807:4;11800:5;11796:16;11789:23;;11860:4;11852:6;11848:17;11840:6;11836:30;11889:3;11881:6;11878:15;11875:122;;;11908:79;;:::i;:::-;11875:122;12023:6;12006:220;12040:6;12035:3;12032:15;12006:220;;;12115:3;12144:37;12177:3;12165:10;12144:37;:::i;:::-;12139:3;12132:50;12211:4;12206:3;12202:14;12195:21;;12082:144;12066:4;12061:3;12057:14;12050:21;;12006:220;;;12010:21;11624:608;;11522:710;;;;;:::o;12255:370::-;12326:5;12375:3;12368:4;12360:6;12356:17;12352:27;12342:122;;12383:79;;:::i;:::-;12342:122;12500:6;12487:20;12525:94;12615:3;12607:6;12600:4;12592:6;12588:17;12525:94;:::i;:::-;12516:103;;12332:293;12255:370;;;;:::o;12631:539::-;12715:6;12764:2;12752:9;12743:7;12739:23;12735:32;12732:119;;;12770:79;;:::i;:::-;12732:119;12918:1;12907:9;12903:17;12890:31;12948:18;12940:6;12937:30;12934:117;;;12970:79;;:::i;:::-;12934:117;13075:78;13145:7;13136:6;13125:9;13121:22;13075:78;:::i;:::-;13065:88;;12861:302;12631:539;;;;:::o;13176:182::-;13316:34;13312:1;13304:6;13300:14;13293:58;13176:182;:::o;13364:366::-;13506:3;13527:67;13591:2;13586:3;13527:67;:::i;:::-;13520:74;;13603:93;13692:3;13603:93;:::i;:::-;13721:2;13716:3;13712:12;13705:19;;13364:366;;;:::o;13736:419::-;13902:4;13940:2;13929:9;13925:18;13917:26;;13989:9;13983:4;13979:20;13975:1;13964:9;13960:17;13953:47;14017:131;14143:4;14017:131;:::i;:::-;14009:139;;13736:419;;;:::o;14161:180::-;14209:77;14206:1;14199:88;14306:4;14303:1;14296:15;14330:4;14327:1;14320:15;14347:225;14487:34;14483:1;14475:6;14471:14;14464:58;14556:8;14551:2;14543:6;14539:15;14532:33;14347:225;:::o;14578:366::-;14720:3;14741:67;14805:2;14800:3;14741:67;:::i;:::-;14734:74;;14817:93;14906:3;14817:93;:::i;:::-;14935:2;14930:3;14926:12;14919:19;;14578:366;;;:::o;14950:419::-;15116:4;15154:2;15143:9;15139:18;15131:26;;15203:9;15197:4;15193:20;15189:1;15178:9;15174:17;15167:47;15231:131;15357:4;15231:131;:::i;:::-;15223:139;;14950:419;;;:::o;15375:223::-;15515:34;15511:1;15503:6;15499:14;15492:58;15584:6;15579:2;15571:6;15567:15;15560:31;15375:223;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:221::-;16541:34;16537:1;16529:6;16525:14;16518:58;16610:4;16605:2;16597:6;16593:15;16586:29;16401:221;:::o;16628:366::-;16770:3;16791:67;16855:2;16850:3;16791:67;:::i;:::-;16784:74;;16867:93;16956:3;16867:93;:::i;:::-;16985:2;16980:3;16976:12;16969:19;;16628:366;;;:::o;17000:419::-;17166:4;17204:2;17193:9;17189:18;17181:26;;17253:9;17247:4;17243:20;17239:1;17228:9;17224:17;17217:47;17281:131;17407:4;17281:131;:::i;:::-;17273:139;;17000:419;;;:::o;17425:224::-;17565:34;17561:1;17553:6;17549:14;17542:58;17634:7;17629:2;17621:6;17617:15;17610:32;17425:224;:::o;17655:366::-;17797:3;17818:67;17882:2;17877:3;17818:67;:::i;:::-;17811:74;;17894:93;17983:3;17894:93;:::i;:::-;18012:2;18007:3;18003:12;17996:19;;17655:366;;;:::o;18027:419::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18280:9;18274:4;18270:20;18266:1;18255:9;18251:17;18244:47;18308:131;18434:4;18308:131;:::i;:::-;18300:139;;18027:419;;;:::o;18452:222::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:5;18656:2;18648:6;18644:15;18637:30;18452:222;:::o;18680:366::-;18822:3;18843:67;18907:2;18902:3;18843:67;:::i;:::-;18836:74;;18919:93;19008:3;18919:93;:::i;:::-;19037:2;19032:3;19028:12;19021:19;;18680:366;;;:::o;19052:419::-;19218:4;19256:2;19245:9;19241:18;19233:26;;19305:9;19299:4;19295:20;19291:1;19280:9;19276:17;19269:47;19333:131;19459:4;19333:131;:::i;:::-;19325:139;;19052:419;;;:::o;19477:228::-;19617:34;19613:1;19605:6;19601:14;19594:58;19686:11;19681:2;19673:6;19669:15;19662:36;19477:228;:::o;19711:366::-;19853:3;19874:67;19938:2;19933:3;19874:67;:::i;:::-;19867:74;;19950:93;20039:3;19950:93;:::i;:::-;20068:2;20063:3;20059:12;20052:19;;19711:366;;;:::o;20083:419::-;20249:4;20287:2;20276:9;20272:18;20264:26;;20336:9;20330:4;20326:20;20322:1;20311:9;20307:17;20300:47;20364:131;20490:4;20364:131;:::i;:::-;20356:139;;20083:419;;;:::o;20508:237::-;20648:34;20644:1;20636:6;20632:14;20625:58;20717:20;20712:2;20704:6;20700:15;20693:45;20508:237;:::o;20751:366::-;20893:3;20914:67;20978:2;20973:3;20914:67;:::i;:::-;20907:74;;20990:93;21079:3;20990:93;:::i;:::-;21108:2;21103:3;21099:12;21092:19;;20751:366;;;:::o;21123:419::-;21289:4;21327:2;21316:9;21312:18;21304:26;;21376:9;21370:4;21366:20;21362:1;21351:9;21347:17;21340:47;21404:131;21530:4;21404:131;:::i;:::-;21396:139;;21123:419;;;:::o;21548:178::-;21688:30;21684:1;21676:6;21672:14;21665:54;21548:178;:::o;21732:366::-;21874:3;21895:67;21959:2;21954:3;21895:67;:::i;:::-;21888:74;;21971:93;22060:3;21971:93;:::i;:::-;22089:2;22084:3;22080:12;22073:19;;21732:366;;;:::o;22104:419::-;22270:4;22308:2;22297:9;22293:18;22285:26;;22357:9;22351:4;22347:20;22343:1;22332:9;22328:17;22321:47;22385:131;22511:4;22385:131;:::i;:::-;22377:139;;22104:419;;;:::o;22529:222::-;22669:34;22665:1;22657:6;22653:14;22646:58;22738:5;22733:2;22725:6;22721:15;22714:30;22529:222;:::o;22757:366::-;22899:3;22920:67;22984:2;22979:3;22920:67;:::i;:::-;22913:74;;22996:93;23085:3;22996:93;:::i;:::-;23114:2;23109:3;23105:12;23098:19;;22757:366;;;:::o;23129:419::-;23295:4;23333:2;23322:9;23318:18;23310:26;;23382:9;23376:4;23372:20;23368:1;23357:9;23353:17;23346:47;23410:131;23536:4;23410:131;:::i;:::-;23402:139;;23129:419;;;:::o;23554:180::-;23602:77;23599:1;23592:88;23699:4;23696:1;23689:15;23723:4;23720:1;23713:15;23740:191;23780:3;23799:20;23817:1;23799:20;:::i;:::-;23794:25;;23833:20;23851:1;23833:20;:::i;:::-;23828:25;;23876:1;23873;23869:9;23862:16;;23897:3;23894:1;23891:10;23888:36;;;23904:18;;:::i;:::-;23888:36;23740:191;;;;:::o;23937:222::-;24077:34;24073:1;24065:6;24061:14;24054:58;24146:5;24141:2;24133:6;24129:15;24122:30;23937:222;:::o;24165:366::-;24307:3;24328:67;24392:2;24387:3;24328:67;:::i;:::-;24321:74;;24404:93;24493:3;24404:93;:::i;:::-;24522:2;24517:3;24513:12;24506:19;;24165:366;;;:::o;24537:419::-;24703:4;24741:2;24730:9;24726:18;24718:26;;24790:9;24784:4;24780:20;24776:1;24765:9;24761:17;24754:47;24818:131;24944:4;24818:131;:::i;:::-;24810:139;;24537:419;;;:::o;24962:194::-;25002:4;25022:20;25040:1;25022:20;:::i;:::-;25017:25;;25056:20;25074:1;25056:20;:::i;:::-;25051:25;;25100:1;25097;25093:9;25085:17;;25124:1;25118:4;25115:11;25112:37;;;25129:18;;:::i;:::-;25112:37;24962:194;;;;:::o;25162:180::-;25210:77;25207:1;25200:88;25307:4;25304:1;25297:15;25331:4;25328:1;25321:15;25348:185;25388:1;25405:20;25423:1;25405:20;:::i;:::-;25400:25;;25439:20;25457:1;25439:20;:::i;:::-;25434:25;;25478:1;25468:35;;25483:18;;:::i;:::-;25468:35;25525:1;25522;25518:9;25513:14;;25348:185;;;;:::o;25539:229::-;25679:34;25675:1;25667:6;25663:14;25656:58;25748:12;25743:2;25735:6;25731:15;25724:37;25539:229;:::o;25774:366::-;25916:3;25937:67;26001:2;25996:3;25937:67;:::i;:::-;25930:74;;26013:93;26102:3;26013:93;:::i;:::-;26131:2;26126:3;26122:12;26115:19;;25774:366;;;:::o;26146:419::-;26312:4;26350:2;26339:9;26335:18;26327:26;;26399:9;26393:4;26389:20;26385:1;26374:9;26370:17;26363:47;26427:131;26553:4;26427:131;:::i;:::-;26419:139;;26146:419;;;:::o;26571:143::-;26628:5;26659:6;26653:13;26644:22;;26675:33;26702:5;26675:33;:::i;:::-;26571:143;;;;:::o;26720:351::-;26790:6;26839:2;26827:9;26818:7;26814:23;26810:32;26807:119;;;26845:79;;:::i;:::-;26807:119;26965:1;26990:64;27046:7;27037:6;27026:9;27022:22;26990:64;:::i;:::-;26980:74;;26936:128;26720:351;;;;:::o;27077:85::-;27122:7;27151:5;27140:16;;27077:85;;;:::o;27168:158::-;27226:9;27259:61;27277:42;27286:32;27312:5;27286:32;:::i;:::-;27277:42;:::i;:::-;27259:61;:::i;:::-;27246:74;;27168:158;;;:::o;27332:147::-;27427:45;27466:5;27427:45;:::i;:::-;27422:3;27415:58;27332:147;;:::o;27485:114::-;27552:6;27586:5;27580:12;27570:22;;27485:114;;;:::o;27605:184::-;27704:11;27738:6;27733:3;27726:19;27778:4;27773:3;27769:14;27754:29;;27605:184;;;;:::o;27795:132::-;27862:4;27885:3;27877:11;;27915:4;27910:3;27906:14;27898:22;;27795:132;;;:::o;27933:108::-;28010:24;28028:5;28010:24;:::i;:::-;28005:3;27998:37;27933:108;;:::o;28047:179::-;28116:10;28137:46;28179:3;28171:6;28137:46;:::i;:::-;28215:4;28210:3;28206:14;28192:28;;28047:179;;;;:::o;28232:113::-;28302:4;28334;28329:3;28325:14;28317:22;;28232:113;;;:::o;28381:732::-;28500:3;28529:54;28577:5;28529:54;:::i;:::-;28599:86;28678:6;28673:3;28599:86;:::i;:::-;28592:93;;28709:56;28759:5;28709:56;:::i;:::-;28788:7;28819:1;28804:284;28829:6;28826:1;28823:13;28804:284;;;28905:6;28899:13;28932:63;28991:3;28976:13;28932:63;:::i;:::-;28925:70;;29018:60;29071:6;29018:60;:::i;:::-;29008:70;;28864:224;28851:1;28848;28844:9;28839:14;;28804:284;;;28808:14;29104:3;29097:10;;28505:608;;;28381:732;;;;:::o;29119:831::-;29382:4;29420:3;29409:9;29405:19;29397:27;;29434:71;29502:1;29491:9;29487:17;29478:6;29434:71;:::i;:::-;29515:80;29591:2;29580:9;29576:18;29567:6;29515:80;:::i;:::-;29642:9;29636:4;29632:20;29627:2;29616:9;29612:18;29605:48;29670:108;29773:4;29764:6;29670:108;:::i;:::-;29662:116;;29788:72;29856:2;29845:9;29841:18;29832:6;29788:72;:::i;:::-;29870:73;29938:3;29927:9;29923:19;29914:6;29870:73;:::i;:::-;29119:831;;;;;;;;:::o;29956:177::-;30096:29;30092:1;30084:6;30080:14;30073:53;29956:177;:::o;30139:366::-;30281:3;30302:67;30366:2;30361:3;30302:67;:::i;:::-;30295:74;;30378:93;30467:3;30378:93;:::i;:::-;30496:2;30491:3;30487:12;30480:19;;30139:366;;;:::o;30511:419::-;30677:4;30715:2;30704:9;30700:18;30692:26;;30764:9;30758:4;30754:20;30750:1;30739:9;30735:17;30728:47;30792:131;30918:4;30792:131;:::i;:::-;30784:139;;30511:419;;;:::o;30936:410::-;30976:7;30999:20;31017:1;30999:20;:::i;:::-;30994:25;;31033:20;31051:1;31033:20;:::i;:::-;31028:25;;31088:1;31085;31081:9;31110:30;31128:11;31110:30;:::i;:::-;31099:41;;31289:1;31280:7;31276:15;31273:1;31270:22;31250:1;31243:9;31223:83;31200:139;;31319:18;;:::i;:::-;31200:139;30984:362;30936:410;;;;:::o;31352:220::-;31492:34;31488:1;31480:6;31476:14;31469:58;31561:3;31556:2;31548:6;31544:15;31537:28;31352:220;:::o;31578:366::-;31720:3;31741:67;31805:2;31800:3;31741:67;:::i;:::-;31734:74;;31817:93;31906:3;31817:93;:::i;:::-;31935:2;31930:3;31926:12;31919:19;;31578:366;;;:::o;31950:419::-;32116:4;32154:2;32143:9;32139:18;32131:26;;32203:9;32197:4;32193:20;32189:1;32178:9;32174:17;32167:47;32231:131;32357:4;32231:131;:::i;:::-;32223:139;;31950:419;;;:::o

Swarm Source

ipfs://89268e943f290c641f644e2d49001af44df25b9b0a5072e184d49a47e4a44e17
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.