ETH Price: $2,461.72 (-1.88%)

Token

NOIꓕ∀⅂ՈꟽIS (SIMULATION)
 

Overview

Max Total Supply

10,000,000,000 SIMULATION

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
104,061,601.11179127 SIMULATION

Value
$0.00
0xAaDbe5476E044204dD4cE07797EDeB690b98Df6E
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:
SIMULATION

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-25
*/

/**

*/

/// SPDX-License-Identifier: Unlicensed

/*

https://twitter.com/s1mulation3rc

https://t.me/simulationportal

https://simulationerc.com

*/

pragma solidity ^0.8.20;



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 SIMULATION is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"NOIꓕ∀⅂ՈꟽIS";
    string private constant _symbol = "SIMULATION";
    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 = 10000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 60;

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

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0xDC8bea99fe657d888985c42A5E758800E4431ec7);
    address payable private _marketingAddress = payable(0x5568714B4C1f7c0ffe1FDc6a0312fe1D22B4a048);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 140000000 * 10**9;
    uint256 public _maxWalletSize = 140000000 * 10**9;
    uint256 public _swapTokensAtAmount = 7000000 * 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());

        _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: This account cannot send tokens until trading is enabled");
            }

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function activateTrading() public onlyOwner {
        tradingOpen = true;
    }

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

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

    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 updateFees(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        require((redisFeeOnBuy + taxFeeOnBuy) <= 40);
        require((redisFeeOnSell + taxFeeOnSell) <= 40);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

    //Set maximum transaction
    function setLimits(uint256 maxTxAmount, uint maxWalletSize) public onlyOwner {
        _maxTxAmount = maxTxAmount;
        _maxWalletSize = maxWalletSize;
    }

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

    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":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","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":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclogg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052678ac7230489e800005f196200001b9190620006ff565b5f1962000029919062000763565b6006555f60085560146009555f600a55603c600b55600a54600c55600b54600d55600c54600e55600d54600f5573dc8bea99fe657d888985c42a5e758800e4431ec760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735568714b4c1f7c0ffe1fdc6a0312fe1d22b4a04860135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506701f161421c8e00006016556701f161421c8e00006017556618de76816d80006018553480156200017b575f80fd5b505f6200018d6200069b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6200023f6200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000344919062000802565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003aa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d0919062000802565b6040518363ffffffff1660e01b8152600401620003ef92919062000843565b6020604051808303815f875af11580156200040c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000432919062000802565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f62000486620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006266200069b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200068c91906200087f565b60405180910390a3506200089a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070b82620006c9565b91506200071883620006c9565b9250826200072b576200072a620006d2565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076f82620006c9565b91506200077c83620006c9565b925082820390508181111562000797576200079662000736565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007cc82620007a1565b9050919050565b620007de81620007c0565b8114620007e9575f80fd5b50565b5f81519050620007fc81620007d3565b92915050565b5f602082840312156200081a57620008196200079d565b5b5f6200082984828501620007ec565b91505092915050565b6200083d81620007c0565b82525050565b5f604082019050620008585f83018562000832565b62000867602083018462000832565b9392505050565b6200087981620006c9565b82525050565b5f602082019050620008945f8301846200086e565b92915050565b6138b180620008a85f395ff3fe6080604052600436106101ba575f3560e01c8063751039fc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105b7578063c6616ba1146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b8063a9059cbb14610517578063bfd7928414610553578063c4590d3f1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104715780638f9a55c01461049b57806395d89b41146104c557806398a5c315146104ef576101c1565b8063751039fc146103f55780637d1db4a51461040b5780637f2feddc14610435576101c1565b80632fd689e311610158578063616eb63811610132578063616eb638146103655780636d8aa8f81461037b57806370a08231146103a3578063715018a6146103df576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b57806323b872dd146102955780632522958f146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128f1565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906129a6565b6106a8565b60405161022291906129fe565b60405180910390f35b348015610236575f80fd5b5061023f6106c5565b005b34801561024c575f80fd5b50610255610776565b6040516102629190612a72565b60405180910390f35b348015610276575f80fd5b5061027f61079b565b60405161028c9190612a9a565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612ab3565b6107aa565b6040516102c891906129fe565b60405180910390f35b3480156102dc575f80fd5b506102e561087e565b005b3480156102f2575f80fd5b506102fb610953565b6040516103089190612a9a565b60405180910390f35b34801561031c575f80fd5b50610325610959565b6040516103329190612b1e565b60405180910390f35b348015610346575f80fd5b5061034f610961565b60405161035c9190612b46565b60405180910390f35b348015610370575f80fd5b50610379610986565b005b348015610386575f80fd5b506103a1600480360381019061039c9190612b89565b610a53565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612bb4565b610b04565b6040516103d69190612a9a565b60405180910390f35b3480156103ea575f80fd5b506103f3610b52565b005b348015610400575f80fd5b50610409610ca0565b005b348015610416575f80fd5b5061041f610d54565b60405161042c9190612a9a565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612bb4565b610d5a565b6040516104689190612a9a565b60405180910390f35b34801561047c575f80fd5b50610485610d6f565b6040516104929190612b46565b60405180910390f35b3480156104a6575f80fd5b506104af610d96565b6040516104bc9190612a9a565b60405180910390f35b3480156104d0575f80fd5b506104d9610d9c565b6040516104e691906128f1565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612bdf565b610dd9565b005b348015610522575f80fd5b5061053d600480360381019061053891906129a6565b610e77565b60405161054a91906129fe565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612bb4565b610e94565b60405161058691906129fe565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c0a565b610eb1565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612ca9565b610f57565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612d06565b61108c565b005b348015610612575f80fd5b5061062d60048036038101906106289190612d6a565b611172565b60405161063a9190612a9a565b60405180910390f35b34801561064e575f80fd5b5061066960048036038101906106649190612bb4565b6111f4565b005b60606040518060400160405280601381526020017f4e4f49ea9395e28880e28582d588ea9fbd495300000000000000000000000000815250905090565b5f6106bb6106b46113b1565b84846113b8565b6001905092915050565b6106cd6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075090612df2565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f678ac7230489e80000905090565b5f6107b684848461157b565b610873846107c26113b1565b61086e856040518060600160405280602881526020016138546028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108256113b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ddb9092919063ffffffff16565b6113b8565b600190509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108be6113b1565b73ffffffffffffffffffffffffffffffffffffffff161480610933575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091b6113b1565b73ffffffffffffffffffffffffffffffffffffffff16145b61093b575f80fd5b5f61094530610b04565b905061095081611e3d565b50565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c66113b1565b73ffffffffffffffffffffffffffffffffffffffff161480610a3b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a236113b1565b73ffffffffffffffffffffffffffffffffffffffff16145b610a43575f80fd5b5f479050610a50816120a6565b50565b610a5b6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90612df2565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610b4b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210e565b9050919050565b610b5a6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd90612df2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca86113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90612df2565b60405180910390fd5b678ac7230489e80000601681905550678ac7230489e80000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600a81526020017f53494d554c4154494f4e00000000000000000000000000000000000000000000815250905090565b610de16113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490612df2565b60405180910390fd5b8060188190555050565b5f610e8a610e836113b1565b848461157b565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b610eb96113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612df2565b60405180910390fd5b81601681905550806017819055505050565b610f5f6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612df2565b60405180910390fd5b5f5b83839050811015611086578160055f86868581811061100f5761100e612e10565b5b90506020020160208101906110249190612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061107e90612e6a565b915050610fed565b50505050565b6110946113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612df2565b60405180910390fd5b6028828561112e9190612eb1565b1115611138575f80fd5b602881846111469190612eb1565b1115611150575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111fc6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612df2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90612f54565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90612fe2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90613070565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161156e9190612a9a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906130fe565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e9061318c565b60405180910390fd5b5f8111611699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116909061321a565b60405180910390fd5b6116a1610d6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170f57506116df610d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae857601560149054906101000a900460ff1661179e57611730610d6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906132a8565b60405180910390fd5b5b6016548111156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613310565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611881575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061339e565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461196c576017548161192184610b04565b61192b9190612eb1565b1061196b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119629061342c565b60405180910390fd5b5b5f61197630610b04565b90505f601854821015905060165482106119905760165491505b8080156119a8575060158054906101000a900460ff16155b8015611a01575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a195750601560169054906101000a900460ff165b8015611a6c575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611abf575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ae557611acd82611e3d565b5f4790505f811115611ae357611ae2476120a6565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b88575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c38575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c46575f9050611dc9565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cef575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0757600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dc857600a54600c81905550600b54600d819055505b5b611dd58484848461217a565b50505050565b5f838311158290611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1991906128f1565b60405180910390fd5b505f8385611e30919061344a565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e7357611e7261347d565b5b604051908082528060200260200182016040528015611ea15781602001602082028036833780820191505090505b50905030815f81518110611eb857611eb7612e10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8091906134be565b81600181518110611f9457611f93612e10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ffa3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113b8565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161205c9594939291906135d9565b5f604051808303815f87803b158015612073575f80fd5b505af1158015612085573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561210a573d5f803e3d5ffd5b5050565b5f600654821115612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214b906136a1565b60405180910390fd5b5f61215d6121a7565b905061217281846121d090919063ffffffff16565b915050919050565b8061218857612187612219565b5b612193848484612252565b806121a1576121a0612412565b5b50505050565b5f805f6121b2612426565b915091506121c981836121d090919063ffffffff16565b9250505090565b5f61221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612482565b905092915050565b5f600c5414801561222b57505f600d54145b61225057600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612261876124e3565b9550955095509550955095506122bd8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234e8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258c90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612398816125e9565b6123a284836126a0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ff9190612a9a565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f678ac7230489e800009050612457678ac7230489e800006006546121d090919063ffffffff16565b82101561247557600654678ac7230489e8000093509350505061247e565b81819350935050505b9091565b5f80831182906124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf91906128f1565b60405180910390fd5b505f83856124d691906136ec565b9050809150509392505050565b5f805f805f805f805f6124fb8a600c54600d546126da565b9250925092505f61250a6121a7565b90505f805f61251b8e87878761276c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61258483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ddb565b905092915050565b5f80828461259a9190612eb1565b9050838110156125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d690613766565b60405180910390fd5b8091505092915050565b5f6125f26121a7565b90505f61260882846127f090919063ffffffff16565b905061265a8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258c90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126b58260065461254390919063ffffffff16565b6006819055506126d08160075461258c90919063ffffffff16565b6007819055505050565b5f805f8061270460646126f6888a6127f090919063ffffffff16565b6121d090919063ffffffff16565b90505f61272d606461271f888b6127f090919063ffffffff16565b6121d090919063ffffffff16565b90505f61275582612747858c61254390919063ffffffff16565b61254390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061278385896127f090919063ffffffff16565b90505f61279986896127f090919063ffffffff16565b90505f6127af87896127f090919063ffffffff16565b90505f6127d7826127c9858761254390919063ffffffff16565b61254390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612800575f9050612861565b5f828461280d9190613784565b905082848261281c91906136ec565b1461285c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285390613835565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561289e578082015181840152602081019050612883565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128c382612867565b6128cd8185612871565b93506128dd818560208601612881565b6128e6816128a9565b840191505092915050565b5f6020820190508181035f83015261290981846128b9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294282612919565b9050919050565b61295281612938565b811461295c575f80fd5b50565b5f8135905061296d81612949565b92915050565b5f819050919050565b61298581612973565b811461298f575f80fd5b50565b5f813590506129a08161297c565b92915050565b5f80604083850312156129bc576129bb612911565b5b5f6129c98582860161295f565b92505060206129da85828601612992565b9150509250929050565b5f8115159050919050565b6129f8816129e4565b82525050565b5f602082019050612a115f8301846129ef565b92915050565b5f819050919050565b5f612a3a612a35612a3084612919565b612a17565b612919565b9050919050565b5f612a4b82612a20565b9050919050565b5f612a5c82612a41565b9050919050565b612a6c81612a52565b82525050565b5f602082019050612a855f830184612a63565b92915050565b612a9481612973565b82525050565b5f602082019050612aad5f830184612a8b565b92915050565b5f805f60608486031215612aca57612ac9612911565b5b5f612ad78682870161295f565b9350506020612ae88682870161295f565b9250506040612af986828701612992565b9150509250925092565b5f60ff82169050919050565b612b1881612b03565b82525050565b5f602082019050612b315f830184612b0f565b92915050565b612b4081612938565b82525050565b5f602082019050612b595f830184612b37565b92915050565b612b68816129e4565b8114612b72575f80fd5b50565b5f81359050612b8381612b5f565b92915050565b5f60208284031215612b9e57612b9d612911565b5b5f612bab84828501612b75565b91505092915050565b5f60208284031215612bc957612bc8612911565b5b5f612bd68482850161295f565b91505092915050565b5f60208284031215612bf457612bf3612911565b5b5f612c0184828501612992565b91505092915050565b5f8060408385031215612c2057612c1f612911565b5b5f612c2d85828601612992565b9250506020612c3e85828601612992565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c6957612c68612c48565b5b8235905067ffffffffffffffff811115612c8657612c85612c4c565b5b602083019150836020820283011115612ca257612ca1612c50565b5b9250929050565b5f805f60408486031215612cc057612cbf612911565b5b5f84013567ffffffffffffffff811115612cdd57612cdc612915565b5b612ce986828701612c54565b93509350506020612cfc86828701612b75565b9150509250925092565b5f805f8060808587031215612d1e57612d1d612911565b5b5f612d2b87828801612992565b9450506020612d3c87828801612992565b9350506040612d4d87828801612992565b9250506060612d5e87828801612992565b91505092959194509250565b5f8060408385031215612d8057612d7f612911565b5b5f612d8d8582860161295f565b9250506020612d9e8582860161295f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ddc602083612871565b9150612de782612da8565b602082019050919050565b5f6020820190508181035f830152612e0981612dd0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e7482612973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ea657612ea5612e3d565b5b600182019050919050565b5f612ebb82612973565b9150612ec683612973565b9250828201905080821115612ede57612edd612e3d565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f3e602683612871565b9150612f4982612ee4565b604082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fcc602483612871565b9150612fd782612f72565b604082019050919050565b5f6020820190508181035f830152612ff981612fc0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61305a602283612871565b915061306582613000565b604082019050919050565b5f6020820190508181035f8301526130878161304e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130e8602583612871565b91506130f38261308e565b604082019050919050565b5f6020820190508181035f830152613115816130dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613176602383612871565b91506131818261311c565b604082019050919050565b5f6020820190508181035f8301526131a38161316a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613204602983612871565b915061320f826131aa565b604082019050919050565b5f6020820190508181035f830152613231816131f8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613292603f83612871565b915061329d82613238565b604082019050919050565b5f6020820190508181035f8301526132bf81613286565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132fa601c83612871565b9150613305826132c6565b602082019050919050565b5f6020820190508181035f830152613327816132ee565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613388602383612871565b91506133938261332e565b604082019050919050565b5f6020820190508181035f8301526133b58161337c565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613416602383612871565b9150613421826133bc565b604082019050919050565b5f6020820190508181035f8301526134438161340a565b9050919050565b5f61345482612973565b915061345f83612973565b925082820390508181111561347757613476612e3d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506134b881612949565b92915050565b5f602082840312156134d3576134d2612911565b5b5f6134e0848285016134aa565b91505092915050565b5f819050919050565b5f61350c613507613502846134e9565b612a17565b612973565b9050919050565b61351c816134f2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355481612938565b82525050565b5f613565838361354b565b60208301905092915050565b5f602082019050919050565b5f61358782613522565b613591818561352c565b935061359c8361353c565b805f5b838110156135cc5781516135b3888261355a565b97506135be83613571565b92505060018101905061359f565b5085935050505092915050565b5f60a0820190506135ec5f830188612a8b565b6135f96020830187613513565b818103604083015261360b818661357d565b905061361a6060830185612b37565b6136276080830184612a8b565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61368b602a83612871565b915061369682613631565b604082019050919050565b5f6020820190508181035f8301526136b88161367f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136f682612973565b915061370183612973565b925082613711576137106136bf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613750601b83612871565b915061375b8261371c565b602082019050919050565b5f6020820190508181035f83015261377d81613744565b9050919050565b5f61378e82612973565b915061379983612973565b92508282026137a781612973565b915082820484148315176137be576137bd612e3d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61381f602183612871565b915061382a826137c5565b604082019050919050565b5f6020820190508181035f83015261384c81613813565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220149af67257ab535976dabd0eaee69c162f82eeb2529fd0b6f04419f44a765d5f64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c8063751039fc116100eb578063a9059cbb11610089578063c492f04611610063578063c492f046146105b7578063c6616ba1146105df578063dd62ed3e14610607578063f2fde38b14610643576101c1565b8063a9059cbb14610517578063bfd7928414610553578063c4590d3f1461058f576101c1565b80638da5cb5b116100c55780638da5cb5b146104715780638f9a55c01461049b57806395d89b41146104c557806398a5c315146104ef576101c1565b8063751039fc146103f55780637d1db4a51461040b5780637f2feddc14610435576101c1565b80632fd689e311610158578063616eb63811610132578063616eb638146103655780636d8aa8f81461037b57806370a08231146103a3578063715018a6146103df576101c1565b80632fd689e3146102e7578063313ce5671461031157806349bd5a5e1461033b576101c1565b80631694505e116101945780631694505e1461024157806318160ddd1461026b57806323b872dd146102955780632522958f146102d1576101c1565b806306fdde03146101c5578063095ea7b3146101ef5780630bd05b691461022b576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d961066b565b6040516101e691906128f1565b60405180910390f35b3480156101fa575f80fd5b50610215600480360381019061021091906129a6565b6106a8565b60405161022291906129fe565b60405180910390f35b348015610236575f80fd5b5061023f6106c5565b005b34801561024c575f80fd5b50610255610776565b6040516102629190612a72565b60405180910390f35b348015610276575f80fd5b5061027f61079b565b60405161028c9190612a9a565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612ab3565b6107aa565b6040516102c891906129fe565b60405180910390f35b3480156102dc575f80fd5b506102e561087e565b005b3480156102f2575f80fd5b506102fb610953565b6040516103089190612a9a565b60405180910390f35b34801561031c575f80fd5b50610325610959565b6040516103329190612b1e565b60405180910390f35b348015610346575f80fd5b5061034f610961565b60405161035c9190612b46565b60405180910390f35b348015610370575f80fd5b50610379610986565b005b348015610386575f80fd5b506103a1600480360381019061039c9190612b89565b610a53565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190612bb4565b610b04565b6040516103d69190612a9a565b60405180910390f35b3480156103ea575f80fd5b506103f3610b52565b005b348015610400575f80fd5b50610409610ca0565b005b348015610416575f80fd5b5061041f610d54565b60405161042c9190612a9a565b60405180910390f35b348015610440575f80fd5b5061045b60048036038101906104569190612bb4565b610d5a565b6040516104689190612a9a565b60405180910390f35b34801561047c575f80fd5b50610485610d6f565b6040516104929190612b46565b60405180910390f35b3480156104a6575f80fd5b506104af610d96565b6040516104bc9190612a9a565b60405180910390f35b3480156104d0575f80fd5b506104d9610d9c565b6040516104e691906128f1565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190612bdf565b610dd9565b005b348015610522575f80fd5b5061053d600480360381019061053891906129a6565b610e77565b60405161054a91906129fe565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612bb4565b610e94565b60405161058691906129fe565b60405180910390f35b34801561059a575f80fd5b506105b560048036038101906105b09190612c0a565b610eb1565b005b3480156105c2575f80fd5b506105dd60048036038101906105d89190612ca9565b610f57565b005b3480156105ea575f80fd5b5061060560048036038101906106009190612d06565b61108c565b005b348015610612575f80fd5b5061062d60048036038101906106289190612d6a565b611172565b60405161063a9190612a9a565b60405180910390f35b34801561064e575f80fd5b5061066960048036038101906106649190612bb4565b6111f4565b005b60606040518060400160405280601381526020017f4e4f49ea9395e28880e28582d588ea9fbd495300000000000000000000000000815250905090565b5f6106bb6106b46113b1565b84846113b8565b6001905092915050565b6106cd6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610759576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075090612df2565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f678ac7230489e80000905090565b5f6107b684848461157b565b610873846107c26113b1565b61086e856040518060600160405280602881526020016138546028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108256113b1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ddb9092919063ffffffff16565b6113b8565b600190509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108be6113b1565b73ffffffffffffffffffffffffffffffffffffffff161480610933575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091b6113b1565b73ffffffffffffffffffffffffffffffffffffffff16145b61093b575f80fd5b5f61094530610b04565b905061095081611e3d565b50565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c66113b1565b73ffffffffffffffffffffffffffffffffffffffff161480610a3b575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a236113b1565b73ffffffffffffffffffffffffffffffffffffffff16145b610a43575f80fd5b5f479050610a50816120a6565b50565b610a5b6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ade90612df2565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610b4b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210e565b9050919050565b610b5a6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd90612df2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca86113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b90612df2565b60405180910390fd5b678ac7230489e80000601681905550678ac7230489e80000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600a81526020017f53494d554c4154494f4e00000000000000000000000000000000000000000000815250905090565b610de16113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490612df2565b60405180910390fd5b8060188190555050565b5f610e8a610e836113b1565b848461157b565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b610eb96113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c90612df2565b60405180910390fd5b81601681905550806017819055505050565b610f5f6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612df2565b60405180910390fd5b5f5b83839050811015611086578160055f86868581811061100f5761100e612e10565b5b90506020020160208101906110249190612bb4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061107e90612e6a565b915050610fed565b50505050565b6110946113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611120576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111790612df2565b60405180910390fd5b6028828561112e9190612eb1565b1115611138575f80fd5b602881846111469190612eb1565b1115611150575f80fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6111fc6113b1565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612df2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed90612f54565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90612fe2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90613070565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161156e9190612a9a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e0906130fe565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164e9061318c565b60405180910390fd5b5f8111611699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116909061321a565b60405180910390fd5b6116a1610d6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170f57506116df610d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae857601560149054906101000a900460ff1661179e57611730610d6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611794906132a8565b60405180910390fd5b5b6016548111156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613310565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611881575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061339e565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461196c576017548161192184610b04565b61192b9190612eb1565b1061196b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119629061342c565b60405180910390fd5b5b5f61197630610b04565b90505f601854821015905060165482106119905760165491505b8080156119a8575060158054906101000a900460ff16155b8015611a01575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611a195750601560169054906101000a900460ff165b8015611a6c575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611abf575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ae557611acd82611e3d565b5f4790505f811115611ae357611ae2476120a6565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611b88575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611c39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c38575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c46575f9050611dc9565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cef575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d0757600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611db0575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dc857600a54600c81905550600b54600d819055505b5b611dd58484848461217a565b50505050565b5f838311158290611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1991906128f1565b60405180910390fd5b505f8385611e30919061344a565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e7357611e7261347d565b5b604051908082528060200260200182016040528015611ea15781602001602082028036833780820191505090505b50905030815f81518110611eb857611eb7612e10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8091906134be565b81600181518110611f9457611f93612e10565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ffa3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113b8565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161205c9594939291906135d9565b5f604051808303815f87803b158015612073575f80fd5b505af1158015612085573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561210a573d5f803e3d5ffd5b5050565b5f600654821115612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214b906136a1565b60405180910390fd5b5f61215d6121a7565b905061217281846121d090919063ffffffff16565b915050919050565b8061218857612187612219565b5b612193848484612252565b806121a1576121a0612412565b5b50505050565b5f805f6121b2612426565b915091506121c981836121d090919063ffffffff16565b9250505090565b5f61221183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612482565b905092915050565b5f600c5414801561222b57505f600d54145b61225057600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80612261876124e3565b9550955095509550955095506122bd8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061234e8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258c90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612398816125e9565b6123a284836126a0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ff9190612a9a565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f678ac7230489e800009050612457678ac7230489e800006006546121d090919063ffffffff16565b82101561247557600654678ac7230489e8000093509350505061247e565b81819350935050505b9091565b5f80831182906124c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bf91906128f1565b60405180910390fd5b505f83856124d691906136ec565b9050809150509392505050565b5f805f805f805f805f6124fb8a600c54600d546126da565b9250925092505f61250a6121a7565b90505f805f61251b8e87878761276c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61258483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ddb565b905092915050565b5f80828461259a9190612eb1565b9050838110156125df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d690613766565b60405180910390fd5b8091505092915050565b5f6125f26121a7565b90505f61260882846127f090919063ffffffff16565b905061265a8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461258c90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6126b58260065461254390919063ffffffff16565b6006819055506126d08160075461258c90919063ffffffff16565b6007819055505050565b5f805f8061270460646126f6888a6127f090919063ffffffff16565b6121d090919063ffffffff16565b90505f61272d606461271f888b6127f090919063ffffffff16565b6121d090919063ffffffff16565b90505f61275582612747858c61254390919063ffffffff16565b61254390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061278385896127f090919063ffffffff16565b90505f61279986896127f090919063ffffffff16565b90505f6127af87896127f090919063ffffffff16565b90505f6127d7826127c9858761254390919063ffffffff16565b61254390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612800575f9050612861565b5f828461280d9190613784565b905082848261281c91906136ec565b1461285c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285390613835565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561289e578082015181840152602081019050612883565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128c382612867565b6128cd8185612871565b93506128dd818560208601612881565b6128e6816128a9565b840191505092915050565b5f6020820190508181035f83015261290981846128b9565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61294282612919565b9050919050565b61295281612938565b811461295c575f80fd5b50565b5f8135905061296d81612949565b92915050565b5f819050919050565b61298581612973565b811461298f575f80fd5b50565b5f813590506129a08161297c565b92915050565b5f80604083850312156129bc576129bb612911565b5b5f6129c98582860161295f565b92505060206129da85828601612992565b9150509250929050565b5f8115159050919050565b6129f8816129e4565b82525050565b5f602082019050612a115f8301846129ef565b92915050565b5f819050919050565b5f612a3a612a35612a3084612919565b612a17565b612919565b9050919050565b5f612a4b82612a20565b9050919050565b5f612a5c82612a41565b9050919050565b612a6c81612a52565b82525050565b5f602082019050612a855f830184612a63565b92915050565b612a9481612973565b82525050565b5f602082019050612aad5f830184612a8b565b92915050565b5f805f60608486031215612aca57612ac9612911565b5b5f612ad78682870161295f565b9350506020612ae88682870161295f565b9250506040612af986828701612992565b9150509250925092565b5f60ff82169050919050565b612b1881612b03565b82525050565b5f602082019050612b315f830184612b0f565b92915050565b612b4081612938565b82525050565b5f602082019050612b595f830184612b37565b92915050565b612b68816129e4565b8114612b72575f80fd5b50565b5f81359050612b8381612b5f565b92915050565b5f60208284031215612b9e57612b9d612911565b5b5f612bab84828501612b75565b91505092915050565b5f60208284031215612bc957612bc8612911565b5b5f612bd68482850161295f565b91505092915050565b5f60208284031215612bf457612bf3612911565b5b5f612c0184828501612992565b91505092915050565b5f8060408385031215612c2057612c1f612911565b5b5f612c2d85828601612992565b9250506020612c3e85828601612992565b9150509250929050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612c6957612c68612c48565b5b8235905067ffffffffffffffff811115612c8657612c85612c4c565b5b602083019150836020820283011115612ca257612ca1612c50565b5b9250929050565b5f805f60408486031215612cc057612cbf612911565b5b5f84013567ffffffffffffffff811115612cdd57612cdc612915565b5b612ce986828701612c54565b93509350506020612cfc86828701612b75565b9150509250925092565b5f805f8060808587031215612d1e57612d1d612911565b5b5f612d2b87828801612992565b9450506020612d3c87828801612992565b9350506040612d4d87828801612992565b9250506060612d5e87828801612992565b91505092959194509250565b5f8060408385031215612d8057612d7f612911565b5b5f612d8d8582860161295f565b9250506020612d9e8582860161295f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ddc602083612871565b9150612de782612da8565b602082019050919050565b5f6020820190508181035f830152612e0981612dd0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e7482612973565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ea657612ea5612e3d565b5b600182019050919050565b5f612ebb82612973565b9150612ec683612973565b9250828201905080821115612ede57612edd612e3d565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f3e602683612871565b9150612f4982612ee4565b604082019050919050565b5f6020820190508181035f830152612f6b81612f32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fcc602483612871565b9150612fd782612f72565b604082019050919050565b5f6020820190508181035f830152612ff981612fc0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61305a602283612871565b915061306582613000565b604082019050919050565b5f6020820190508181035f8301526130878161304e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130e8602583612871565b91506130f38261308e565b604082019050919050565b5f6020820190508181035f830152613115816130dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613176602383612871565b91506131818261311c565b604082019050919050565b5f6020820190508181035f8301526131a38161316a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613204602983612871565b915061320f826131aa565b604082019050919050565b5f6020820190508181035f830152613231816131f8565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f613292603f83612871565b915061329d82613238565b604082019050919050565b5f6020820190508181035f8301526132bf81613286565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6132fa601c83612871565b9150613305826132c6565b602082019050919050565b5f6020820190508181035f830152613327816132ee565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613388602383612871565b91506133938261332e565b604082019050919050565b5f6020820190508181035f8301526133b58161337c565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613416602383612871565b9150613421826133bc565b604082019050919050565b5f6020820190508181035f8301526134438161340a565b9050919050565b5f61345482612973565b915061345f83612973565b925082820390508181111561347757613476612e3d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506134b881612949565b92915050565b5f602082840312156134d3576134d2612911565b5b5f6134e0848285016134aa565b91505092915050565b5f819050919050565b5f61350c613507613502846134e9565b612a17565b612973565b9050919050565b61351c816134f2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61355481612938565b82525050565b5f613565838361354b565b60208301905092915050565b5f602082019050919050565b5f61358782613522565b613591818561352c565b935061359c8361353c565b805f5b838110156135cc5781516135b3888261355a565b97506135be83613571565b92505060018101905061359f565b5085935050505092915050565b5f60a0820190506135ec5f830188612a8b565b6135f96020830187613513565b818103604083015261360b818661357d565b905061361a6060830185612b37565b6136276080830184612a8b565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61368b602a83612871565b915061369682613631565b604082019050919050565b5f6020820190508181035f8301526136b88161367f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136f682612973565b915061370183612973565b925082613711576137106136bf565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613750601b83612871565b915061375b8261371c565b602082019050919050565b5f6020820190508181035f83015261377d81613744565b9050919050565b5f61378e82612973565b915061379983612973565b92508282026137a781612973565b915082820484148315176137be576137bd612e3d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61381f602183612871565b915061382a826137c5565b604082019050919050565b5f6020820190508181035f83015261384c81613813565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220149af67257ab535976dabd0eaee69c162f82eeb2529fd0b6f04419f44a765d5f64736f6c63430008140033

Deployed Bytecode Sourcemap

4200:13405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6731:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7656:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12307:81;;;;;;;;;;;;;:::i;:::-;;5570:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7008:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7857:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12396:233;;;;;;;;;;;;;:::i;:::-;;5877:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6917:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5618:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12637:233;;;;;;;;;;;;;:::i;:::-;;16928:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7111:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1687:148;;;;;;;;;;;;;:::i;:::-;;17481:118;;;;;;;;;;;;;:::i;:::-;;5767:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5312:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1473:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6822:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16737:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7257:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5274:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17068:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17239:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16276:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7464:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1843:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6731:83;6768:13;6801:5;;;;;;;;;;;;;;;;;6794:12;;6731:83;:::o;7656:193::-;7758:4;7780:39;7789:12;:10;:12::i;:::-;7803:7;7812:6;7780:8;:39::i;:::-;7837:4;7830:11;;7656:193;;;;:::o;12307:81::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12376:4:::1;12362:11;;:18;;;;;;;;;;;;;;;;;;12307:81::o:0;5570:41::-;;;;;;;;;;;;;:::o;7008:95::-;7061:7;4773:19;7081:14;;7008:95;:::o;7857:446::-;7989:4;8006:36;8016:6;8024:9;8035:6;8006:9;:36::i;:::-;8053:220;8076:6;8097:12;:10;:12::i;:::-;8124:138;8180:6;8124:138;;;;;;;;;;;;;;;;;:11;:19;8136:6;8124:19;;;;;;;;;;;;;;;:33;8144:12;:10;:12::i;:::-;8124:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8053:8;:220::i;:::-;8291:4;8284:11;;7857:446;;;;;:::o;12396:233::-;12459:19;;;;;;;;;;;12443:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12498:17;;;;;;;;;;;12482:33;;:12;:10;:12::i;:::-;:33;;;12443:72;12435:81;;;;;;12527:23;12553:24;12571:4;12553:9;:24::i;:::-;12527:50;;12588:33;12605:15;12588:16;:33::i;:::-;12424:205;12396:233::o;5877:52::-;;;;:::o;6917:83::-;6958:5;4447:1;6976:16;;6917:83;:::o;5618:28::-;;;;;;;;;;;;;:::o;12637:233::-;12701:19;;;;;;;;;;;12685:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12740:17;;;;;;;;;;;12724:33;;:12;:10;:12::i;:::-;:33;;;12685:72;12677:81;;;;;;12769:26;12798:21;12769:50;;12830:32;12843:18;12830:12;:32::i;:::-;12666:204;12637:233::o;16928:101::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17009:12:::1;16995:11;;:26;;;;;;;;;;;;;;;;;;16928:101:::0;:::o;7111:138::-;7177:7;7204:37;7224:7;:16;7232:7;7224:16;;;;;;;;;;;;;;;;7204:19;:37::i;:::-;7197:44;;7111:138;;;:::o;1687:148::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1794:1:::1;1757:40;;1778:6;::::0;::::1;;;;;;;;1757:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1687:148::o:0;17481:118::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4773:19:::1;17534:12;:22;;;;4773:19;17567:14;:24;;;;17481:118::o:0;5767:47::-;;;;:::o;5312:43::-;;;;;;;;;;;;;;;;;:::o;1473:79::-;1511:7;1538:6;;;;;;;;;;;1531:13;;1473:79;:::o;5821:49::-;;;;:::o;6822:87::-;6861:13;6894:7;;;;;;;;;;;;;;;;;6887:14;;6822:87;:::o;16737:139::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16850:18:::1;16828:19;:40;;;;16737:139:::0;:::o;7257:199::-;7362:4;7384:42;7394:12;:10;:12::i;:::-;7408:9;7419:6;7384:9;:42::i;:::-;7444:4;7437:11;;7257:199;;;;:::o;5274:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17068:163::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17171:11:::1;17156:12;:26;;;;17210:13;17193:14;:30;;;;17068:163:::0;;:::o;17239:234::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17356:9:::1;17352:114;17375:8;;:15;;17371:1;:19;17352:114;;;17446:8;17412:18;:31;17431:8;;17440:1;17431:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17412:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17392:3;;;;;:::i;:::-;;;;17352:114;;;;17239:234:::0;;;:::o;16276:409::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16457:2:::1;16441:11;16425:13;:27;;;;:::i;:::-;16424:35;;16416:44;;;::::0;::::1;;16514:2;16497:12;16480:14;:29;;;;:::i;:::-;16479:37;;16471:46;;;::::0;::::1;;16545:13;16528:14;:30;;;;16587:14;16569:15;:32;;;;16627:11;16612:12;:26;;;;16665:12;16649:13;:28;;;;16276:409:::0;;;;:::o;7464:184::-;7581:7;7613:11;:18;7625:5;7613:18;;;;;;;;;;;;;;;:27;7632:7;7613:27;;;;;;;;;;;;;;;;7606:34;;7464:184;;;;:::o;1843:244::-;1610:12;:10;:12::i;:::-;1600:22;;:6;;;;;;;;;;:22;;;1592:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1952:1:::1;1932:22;;:8;:22;;::::0;1924:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2042:8;2013:38;;2034:6;::::0;::::1;;;;;;;;2013:38;;;;;;;;;;;;2071:8;2062:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1843:244:::0;:::o;232:98::-;285:7;312:10;305:17;;232:98;:::o;8994:369::-;9138:1;9121:19;;:5;:19;;;9113:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9219:1;9200:21;;:7;:21;;;9192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:6;9271:11;:18;9283:5;9271:18;;;;;;;;;;;;;;;:27;9290:7;9271:27;;;;;;;;;;;;;;;:36;;;;9339:7;9323:32;;9332:5;9323:32;;;9348:6;9323:32;;;;;;:::i;:::-;;;;;;;;8994:369;;;:::o;9371:2330::-;9509:1;9493:18;;:4;:18;;;9485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9586:1;9572:16;;:2;:16;;;9564:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9656:1;9647:6;:10;9639:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9728:7;:5;:7::i;:::-;9720:15;;:4;:15;;;;:32;;;;;9745:7;:5;:7::i;:::-;9739:13;;:2;:13;;;;9720:32;9716:1259;;;9809:11;;;;;;;;;;;9804:144;;9857:7;:5;:7::i;:::-;9849:15;;:4;:15;;;9841:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9804:144;9982:12;;9972:6;:22;;9964:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10051:4;:10;10056:4;10051:10;;;;;;;;;;;;;;;;;;;;;;;;;10050:11;:24;;;;;10066:4;:8;10071:2;10066:8;;;;;;;;;;;;;;;;;;;;;;;;;10065:9;10050:24;10042:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10140:13;;;;;;;;;;;10134:19;;:2;:19;;;10131:146;;10207:14;;10198:6;10182:13;10192:2;10182:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10174:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:146;10293:28;10324:24;10342:4;10324:9;:24::i;:::-;10293:55;;10363:12;10402:19;;10378:20;:43;;10363:58;;10465:12;;10441:20;:36;10438:124;;10534:12;;10511:35;;10438:124;10582:7;:18;;;;;10594:6;;;;;;;;;;10593:7;10582:18;:43;;;;;10612:13;;;;;;;;;;;10604:21;;:4;:21;;;;10582:43;:58;;;;;10629:11;;;;;;;;;;;10582:58;:87;;;;;10645:18;:24;10664:4;10645:24;;;;;;;;;;;;;;;;;;;;;;;;;10644:25;10582:87;:114;;;;;10674:18;:22;10693:2;10674:22;;;;;;;;;;;;;;;;;;;;;;;;;10673:23;10582:114;10578:386;;;10717:38;10734:20;10717:16;:38::i;:::-;10774:26;10803:21;10774:50;;10868:1;10847:18;:22;10843:106;;;10894:35;10907:21;10894:12;:35::i;:::-;10843:106;10698:266;10578:386;9754:1221;;9716:1259;10987:12;11002:4;10987:19;;11051:18;:24;11070:4;11051:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11079:18;:22;11098:2;11079:22;;;;;;;;;;;;;;;;;;;;;;;;;11051:50;11050:102;;;;11115:13;;;;;;;;;;;11107:21;;:4;:21;;;;:44;;;;;11138:13;;;;;;;;;;;11132:19;;:2;:19;;;;11107:44;11050:102;11046:594;;;11179:5;11169:15;;11046:594;;;11262:13;;;;;;;;;;;11254:21;;:4;:21;;;:55;;;;;11293:15;;;;;;;;;;;11279:30;;:2;:30;;;;11254:55;11251:162;;;11342:14;;11330:9;:26;;;;11385:12;;11375:7;:22;;;;11251:162;11472:13;;;;;;;;;;;11466:19;;:2;:19;;;:55;;;;;11505:15;;;;;;;;;;;11489:32;;:4;:32;;;;11466:55;11462:165;;;11554:15;;11542:9;:27;;;;11598:13;;11588:7;:23;;;;11462:165;11046:594;11652:41;11667:4;11673:2;11677:6;11685:7;11652:14;:41::i;:::-;9474:2227;9371:2330;;;:::o;2451:224::-;2571:7;2604:1;2599;:6;;2607:12;2591:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2631:9;2647:1;2643;:5;;;;:::i;:::-;2631:17;;2666:1;2659:8;;;2451:224;;;;;:::o;11709:483::-;6032:4;6023:6;;:13;;;;;;;;;;;;;;;;;;11787:21:::1;11825:1;11811:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11787:40;;11856:4;11838;11843:1;11838:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11882:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11872:4;11877:1;11872:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11915:62;11932:4;11947:15;;;;;;;;;;;11965:11;11915:8;:62::i;:::-;11988:15;;;;;;;;;;;:66;;;12069:11;12095:1;12111:4;12138;12158:15;11988:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11776:416;6068:5:::0;6059:6;;:14;;;;;;;;;;;;;;;;;;11709:483;:::o;12200:99::-;12257:17;;;;;;;;;;;:26;;:34;12284:6;12257:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12200:99;:::o;8311:323::-;8406:7;8464;;8453;:18;;8431:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8552:19;8574:10;:8;:10::i;:::-;8552:32;;8602:24;8614:11;8602:7;:11;;:24;;;;:::i;:::-;8595:31;;;8311:323;;;:::o;12878:282::-;13034:7;13029:28;;13043:14;:12;:14::i;:::-;13029:28;13068:44;13086:6;13094:9;13105:6;13068:17;:44::i;:::-;13128:7;13123:29;;13137:15;:13;:15::i;:::-;13123:29;12878:282;;;;:::o;15839:164::-;15881:7;15902:15;15919;15938:19;:17;:19::i;:::-;15901:56;;;;15975:20;15987:7;15975;:11;;:20;;;;:::i;:::-;15968:27;;;;15839:164;:::o;2937:132::-;2995:7;3022:39;3026:1;3029;3022:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3015:46;;2937:132;;;;:::o;8642:219::-;8702:1;8689:9;;:14;:30;;;;;8718:1;8707:7;;:12;8689:30;8721:7;8685:43;8760:9;;8740:17;:29;;;;8798:7;;8780:15;:25;;;;8830:1;8818:9;:13;;;;8852:1;8842:7;:11;;;;8642:219;:::o;13168:610::-;13315:15;13345:23;13383:12;13410:23;13448:12;13475:13;13502:19;13513:7;13502:10;:19::i;:::-;13300:221;;;;;;;;;;;;13550:28;13570:7;13550;:15;13558:6;13550:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13532:7;:15;13540:6;13532:15;;;;;;;;;;;;;;;:46;;;;13610:39;13633:15;13610:7;:18;13618:9;13610:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13589:7;:18;13597:9;13589:18;;;;;;;;;;;;;;;:60;;;;13660:16;13670:5;13660:9;:16::i;:::-;13687:23;13699:4;13705;13687:11;:23::i;:::-;13743:9;13726:44;;13735:6;13726:44;;;13754:15;13726:44;;;;;;:::i;:::-;;;;;;;;13289:489;;;;;;13168:610;;;:::o;8869:117::-;8925:17;;8913:9;:29;;;;8963:15;;8953:7;:25;;;;8869:117::o;16011:257::-;16062:7;16071;16091:15;16109:7;;16091:25;;16127:15;4773:19;16127:25;;16177:20;4773:19;16177:7;;:11;;:20;;;;:::i;:::-;16167:7;:30;16163:61;;;16207:7;;4773:19;16199:25;;;;;;;;16163:61;16243:7;16252;16235:25;;;;;;16011:257;;;:::o;3077:223::-;3197:7;3229:1;3225;:5;3232:12;3217:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3256:9;3272:1;3268;:5;;;;:::i;:::-;3256:17;;3291:1;3284:8;;;3077:223;;;;;:::o;14197:615::-;14297:7;14319;14341;14363;14385;14407;14443:23;14468:12;14482:13;14512:40;14524:7;14533:9;;14544:7;;14512:11;:40::i;:::-;14442:110;;;;;;14563:19;14585:10;:8;:10::i;:::-;14563:32;;14607:15;14624:23;14649:12;14678:46;14690:7;14699:4;14705:5;14712:11;14678;:46::i;:::-;14606:118;;;;;;14743:7;14752:15;14769:4;14775:15;14792:4;14798:5;14735:69;;;;;;;;;;;;;;;;;;;14197:615;;;;;;;:::o;2307:136::-;2365:7;2392:43;2396:1;2399;2392:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2385:50;;2307:136;;;;:::o;2120:179::-;2178:7;2198:9;2214:1;2210;:5;;;;:::i;:::-;2198:17;;2239:1;2234;:6;;2226:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2290:1;2283:8;;;2120:179;;;;:::o;13786:211::-;13839:19;13861:10;:8;:10::i;:::-;13839:32;;13882:13;13898:22;13908:11;13898:5;:9;;:22;;;;:::i;:::-;13882:38;;13956:33;13983:5;13956:7;:22;13972:4;13956:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13931:7;:22;13947:4;13931:22;;;;;;;;;;;;;;;:58;;;;13828:169;;13786:211;:::o;14005:147::-;14083:17;14095:4;14083:7;;:11;;:17;;;;:::i;:::-;14073:7;:27;;;;14124:20;14139:4;14124:10;;:14;;:20;;;;:::i;:::-;14111:10;:33;;;;14005:147;;:::o;14820:469::-;14989:7;15011;15033;15068:12;15083:30;15109:3;15083:21;15095:8;15083:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15068:45;;15124:13;15140:28;15164:3;15140:19;15152:6;15140:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15124:44;;15179:23;15205:28;15227:5;15205:17;15217:4;15205:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15179:54;;15252:15;15269:4;15275:5;15244:37;;;;;;;;;14820:469;;;;;;;:::o;15297:534::-;15491:7;15513;15535;15570:15;15588:24;15600:11;15588:7;:11;;:24;;;;:::i;:::-;15570:42;;15623:12;15638:21;15647:11;15638:4;:8;;:21;;;;:::i;:::-;15623:36;;15670:13;15686:22;15696:11;15686:5;:9;;:22;;;;:::i;:::-;15670:38;;15719:23;15745:28;15767:5;15745:17;15757:4;15745:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15719:54;;15792:7;15801:15;15818:4;15784:39;;;;;;;;;;15297:534;;;;;;;;:::o;2683:246::-;2741:7;2770:1;2765;:6;2761:47;;2795:1;2788:8;;;;2761:47;2818:9;2834:1;2830;:5;;;;:::i;:::-;2818:17;;2863:1;2858;2854;:5;;;;:::i;:::-;:10;2846:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2920:1;2913:8;;;2683: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;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:474::-;7506:6;7514;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7816:2;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7787:118;7438:474;;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:117;8150:1;8147;8140:12;8164:117;8273:1;8270;8263:12;8304:568;8377:8;8387:6;8437:3;8430:4;8422:6;8418:17;8414:27;8404:122;;8445:79;;:::i;:::-;8404:122;8558:6;8545:20;8535:30;;8588:18;8580:6;8577:30;8574:117;;;8610:79;;:::i;:::-;8574:117;8724:4;8716:6;8712:17;8700:29;;8778:3;8770:4;8762:6;8758:17;8748:8;8744:32;8741:41;8738:128;;;8785:79;;:::i;:::-;8738:128;8304:568;;;;;:::o;8878:698::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9189:1;9178:9;9174:17;9161:31;9219:18;9211:6;9208:30;9205:117;;;9241:79;;:::i;:::-;9205:117;9354:80;9426:7;9417:6;9406:9;9402:22;9354:80;:::i;:::-;9336:98;;;;9132:312;9483:2;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9454:115;8878:698;;;;;:::o;9582:765::-;9668:6;9676;9684;9692;9741:3;9729:9;9720:7;9716:23;9712:33;9709:120;;;9748:79;;:::i;:::-;9709:120;9868:1;9893:53;9938:7;9929:6;9918:9;9914:22;9893:53;:::i;:::-;9883:63;;9839:117;9995:2;10021:53;10066:7;10057:6;10046:9;10042:22;10021:53;:::i;:::-;10011:63;;9966:118;10123:2;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10094:118;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9582:765;;;;;;;:::o;10353:474::-;10421:6;10429;10478:2;10466:9;10457:7;10453:23;10449:32;10446:119;;;10484:79;;:::i;:::-;10446:119;10604:1;10629:53;10674:7;10665:6;10654:9;10650:22;10629:53;:::i;:::-;10619:63;;10575:117;10731:2;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10702:118;10353:474;;;;;:::o;10833:182::-;10973:34;10969:1;10961:6;10957:14;10950:58;10833:182;:::o;11021:366::-;11163:3;11184:67;11248:2;11243:3;11184:67;:::i;:::-;11177:74;;11260:93;11349:3;11260:93;:::i;:::-;11378:2;11373:3;11369:12;11362:19;;11021:366;;;:::o;11393:419::-;11559:4;11597:2;11586:9;11582:18;11574:26;;11646:9;11640:4;11636:20;11632:1;11621:9;11617:17;11610:47;11674:131;11800:4;11674:131;:::i;:::-;11666:139;;11393:419;;;:::o;11818:180::-;11866:77;11863:1;11856:88;11963:4;11960:1;11953:15;11987:4;11984:1;11977:15;12004:180;12052:77;12049:1;12042:88;12149:4;12146:1;12139:15;12173:4;12170:1;12163:15;12190:233;12229:3;12252:24;12270:5;12252:24;:::i;:::-;12243:33;;12298:66;12291:5;12288:77;12285:103;;12368:18;;:::i;:::-;12285:103;12415:1;12408:5;12404:13;12397:20;;12190:233;;;:::o;12429:191::-;12469:3;12488:20;12506:1;12488:20;:::i;:::-;12483:25;;12522:20;12540:1;12522:20;:::i;:::-;12517:25;;12565:1;12562;12558:9;12551:16;;12586:3;12583:1;12580:10;12577:36;;;12593:18;;:::i;:::-;12577:36;12429:191;;;;:::o;12626:225::-;12766:34;12762:1;12754:6;12750:14;12743:58;12835:8;12830:2;12822:6;12818:15;12811:33;12626:225;:::o;12857:366::-;12999:3;13020:67;13084:2;13079:3;13020:67;:::i;:::-;13013:74;;13096:93;13185:3;13096:93;:::i;:::-;13214:2;13209:3;13205:12;13198:19;;12857:366;;;:::o;13229:419::-;13395:4;13433:2;13422:9;13418:18;13410:26;;13482:9;13476:4;13472:20;13468:1;13457:9;13453:17;13446:47;13510:131;13636:4;13510:131;:::i;:::-;13502:139;;13229:419;;;:::o;13654:223::-;13794:34;13790:1;13782:6;13778:14;13771:58;13863:6;13858:2;13850:6;13846:15;13839:31;13654:223;:::o;13883:366::-;14025:3;14046:67;14110:2;14105:3;14046:67;:::i;:::-;14039:74;;14122:93;14211:3;14122:93;:::i;:::-;14240:2;14235:3;14231:12;14224:19;;13883:366;;;:::o;14255:419::-;14421:4;14459:2;14448:9;14444:18;14436:26;;14508:9;14502:4;14498:20;14494:1;14483:9;14479:17;14472:47;14536:131;14662:4;14536:131;:::i;:::-;14528:139;;14255:419;;;:::o;14680:221::-;14820:34;14816:1;14808:6;14804:14;14797:58;14889:4;14884:2;14876:6;14872:15;14865:29;14680:221;:::o;14907:366::-;15049:3;15070:67;15134:2;15129:3;15070:67;:::i;:::-;15063:74;;15146:93;15235:3;15146:93;:::i;:::-;15264:2;15259:3;15255:12;15248:19;;14907:366;;;:::o;15279:419::-;15445:4;15483:2;15472:9;15468:18;15460:26;;15532:9;15526:4;15522:20;15518:1;15507:9;15503:17;15496:47;15560:131;15686:4;15560:131;:::i;:::-;15552:139;;15279:419;;;:::o;15704:224::-;15844:34;15840:1;15832:6;15828:14;15821:58;15913:7;15908:2;15900:6;15896:15;15889:32;15704:224;:::o;15934:366::-;16076:3;16097:67;16161:2;16156:3;16097:67;:::i;:::-;16090:74;;16173:93;16262:3;16173:93;:::i;:::-;16291:2;16286:3;16282:12;16275:19;;15934:366;;;:::o;16306:419::-;16472:4;16510:2;16499:9;16495:18;16487:26;;16559:9;16553:4;16549:20;16545:1;16534:9;16530:17;16523:47;16587:131;16713:4;16587:131;:::i;:::-;16579:139;;16306:419;;;:::o;16731:222::-;16871:34;16867:1;16859:6;16855:14;16848:58;16940:5;16935:2;16927:6;16923:15;16916:30;16731:222;:::o;16959:366::-;17101:3;17122:67;17186:2;17181:3;17122:67;:::i;:::-;17115:74;;17198:93;17287:3;17198:93;:::i;:::-;17316:2;17311:3;17307:12;17300:19;;16959:366;;;:::o;17331:419::-;17497:4;17535:2;17524:9;17520:18;17512:26;;17584:9;17578:4;17574:20;17570:1;17559:9;17555:17;17548:47;17612:131;17738:4;17612:131;:::i;:::-;17604:139;;17331:419;;;:::o;17756:228::-;17896:34;17892:1;17884:6;17880:14;17873:58;17965:11;17960:2;17952:6;17948:15;17941:36;17756:228;:::o;17990:366::-;18132:3;18153:67;18217:2;18212:3;18153:67;:::i;:::-;18146:74;;18229:93;18318:3;18229:93;:::i;:::-;18347:2;18342:3;18338:12;18331:19;;17990:366;;;:::o;18362:419::-;18528:4;18566:2;18555:9;18551:18;18543:26;;18615:9;18609:4;18605:20;18601:1;18590:9;18586:17;18579:47;18643:131;18769:4;18643:131;:::i;:::-;18635:139;;18362:419;;;:::o;18787:250::-;18927:34;18923:1;18915:6;18911:14;18904:58;18996:33;18991:2;18983:6;18979:15;18972:58;18787:250;:::o;19043:366::-;19185:3;19206:67;19270:2;19265:3;19206:67;:::i;:::-;19199:74;;19282:93;19371:3;19282:93;:::i;:::-;19400:2;19395:3;19391:12;19384:19;;19043:366;;;:::o;19415:419::-;19581:4;19619:2;19608:9;19604:18;19596:26;;19668:9;19662:4;19658:20;19654:1;19643:9;19639:17;19632:47;19696:131;19822:4;19696:131;:::i;:::-;19688:139;;19415:419;;;:::o;19840:178::-;19980:30;19976:1;19968:6;19964:14;19957:54;19840:178;:::o;20024:366::-;20166:3;20187:67;20251:2;20246:3;20187:67;:::i;:::-;20180:74;;20263:93;20352:3;20263:93;:::i;:::-;20381:2;20376:3;20372:12;20365:19;;20024:366;;;:::o;20396:419::-;20562:4;20600:2;20589:9;20585:18;20577:26;;20649:9;20643:4;20639:20;20635:1;20624:9;20620:17;20613:47;20677:131;20803:4;20677:131;:::i;:::-;20669:139;;20396:419;;;:::o;20821:222::-;20961:34;20957:1;20949:6;20945:14;20938:58;21030:5;21025:2;21017:6;21013:15;21006:30;20821:222;:::o;21049:366::-;21191:3;21212:67;21276:2;21271:3;21212:67;:::i;:::-;21205:74;;21288:93;21377:3;21288:93;:::i;:::-;21406:2;21401:3;21397:12;21390:19;;21049:366;;;:::o;21421:419::-;21587:4;21625:2;21614:9;21610:18;21602:26;;21674:9;21668:4;21664:20;21660:1;21649:9;21645:17;21638:47;21702:131;21828:4;21702:131;:::i;:::-;21694:139;;21421:419;;;:::o;21846:222::-;21986:34;21982:1;21974:6;21970:14;21963:58;22055:5;22050:2;22042:6;22038:15;22031:30;21846:222;:::o;22074:366::-;22216:3;22237:67;22301:2;22296:3;22237:67;:::i;:::-;22230:74;;22313:93;22402:3;22313:93;:::i;:::-;22431:2;22426:3;22422:12;22415:19;;22074:366;;;:::o;22446:419::-;22612:4;22650:2;22639:9;22635:18;22627:26;;22699:9;22693:4;22689:20;22685:1;22674:9;22670:17;22663:47;22727:131;22853:4;22727:131;:::i;:::-;22719:139;;22446:419;;;:::o;22871:194::-;22911:4;22931:20;22949:1;22931:20;:::i;:::-;22926:25;;22965:20;22983:1;22965:20;:::i;:::-;22960:25;;23009:1;23006;23002:9;22994:17;;23033:1;23027:4;23024:11;23021:37;;;23038:18;;:::i;:::-;23021:37;22871:194;;;;:::o;23071:180::-;23119:77;23116:1;23109:88;23216:4;23213:1;23206:15;23240:4;23237:1;23230:15;23257:143;23314:5;23345:6;23339:13;23330:22;;23361:33;23388:5;23361:33;:::i;:::-;23257:143;;;;:::o;23406:351::-;23476:6;23525:2;23513:9;23504:7;23500:23;23496:32;23493:119;;;23531:79;;:::i;:::-;23493:119;23651:1;23676:64;23732:7;23723:6;23712:9;23708:22;23676:64;:::i;:::-;23666:74;;23622:128;23406:351;;;;:::o;23763:85::-;23808:7;23837:5;23826:16;;23763:85;;;:::o;23854:158::-;23912:9;23945:61;23963:42;23972:32;23998:5;23972:32;:::i;:::-;23963:42;:::i;:::-;23945:61;:::i;:::-;23932:74;;23854:158;;;:::o;24018:147::-;24113:45;24152:5;24113:45;:::i;:::-;24108:3;24101:58;24018:147;;:::o;24171:114::-;24238:6;24272:5;24266:12;24256:22;;24171:114;;;:::o;24291:184::-;24390:11;24424:6;24419:3;24412:19;24464:4;24459:3;24455:14;24440:29;;24291:184;;;;:::o;24481:132::-;24548:4;24571:3;24563:11;;24601:4;24596:3;24592:14;24584:22;;24481:132;;;:::o;24619:108::-;24696:24;24714:5;24696:24;:::i;:::-;24691:3;24684:37;24619:108;;:::o;24733:179::-;24802:10;24823:46;24865:3;24857:6;24823:46;:::i;:::-;24901:4;24896:3;24892:14;24878:28;;24733:179;;;;:::o;24918:113::-;24988:4;25020;25015:3;25011:14;25003:22;;24918:113;;;:::o;25067:732::-;25186:3;25215:54;25263:5;25215:54;:::i;:::-;25285:86;25364:6;25359:3;25285:86;:::i;:::-;25278:93;;25395:56;25445:5;25395:56;:::i;:::-;25474:7;25505:1;25490:284;25515:6;25512:1;25509:13;25490:284;;;25591:6;25585:13;25618:63;25677:3;25662:13;25618:63;:::i;:::-;25611:70;;25704:60;25757:6;25704:60;:::i;:::-;25694:70;;25550:224;25537:1;25534;25530:9;25525:14;;25490:284;;;25494:14;25790:3;25783:10;;25191:608;;;25067:732;;;;:::o;25805:831::-;26068:4;26106:3;26095:9;26091:19;26083:27;;26120:71;26188:1;26177:9;26173:17;26164:6;26120:71;:::i;:::-;26201:80;26277:2;26266:9;26262:18;26253:6;26201:80;:::i;:::-;26328:9;26322:4;26318:20;26313:2;26302:9;26298:18;26291:48;26356:108;26459:4;26450:6;26356:108;:::i;:::-;26348:116;;26474:72;26542:2;26531:9;26527:18;26518:6;26474:72;:::i;:::-;26556:73;26624:3;26613:9;26609:19;26600:6;26556:73;:::i;:::-;25805:831;;;;;;;;:::o;26642:229::-;26782:34;26778:1;26770:6;26766:14;26759:58;26851:12;26846:2;26838:6;26834:15;26827:37;26642:229;:::o;26877:366::-;27019:3;27040:67;27104:2;27099:3;27040:67;:::i;:::-;27033:74;;27116:93;27205:3;27116:93;:::i;:::-;27234:2;27229:3;27225:12;27218:19;;26877:366;;;:::o;27249:419::-;27415:4;27453:2;27442:9;27438:18;27430:26;;27502:9;27496:4;27492:20;27488:1;27477:9;27473:17;27466:47;27530:131;27656:4;27530:131;:::i;:::-;27522:139;;27249:419;;;:::o;27674:180::-;27722:77;27719:1;27712:88;27819:4;27816:1;27809:15;27843:4;27840:1;27833:15;27860:185;27900:1;27917:20;27935:1;27917:20;:::i;:::-;27912:25;;27951:20;27969:1;27951:20;:::i;:::-;27946:25;;27990:1;27980:35;;27995:18;;:::i;:::-;27980:35;28037:1;28034;28030:9;28025:14;;27860:185;;;;:::o;28051:177::-;28191:29;28187:1;28179:6;28175:14;28168:53;28051:177;:::o;28234:366::-;28376:3;28397:67;28461:2;28456:3;28397:67;:::i;:::-;28390:74;;28473:93;28562:3;28473:93;:::i;:::-;28591:2;28586:3;28582:12;28575:19;;28234:366;;;:::o;28606:419::-;28772:4;28810:2;28799:9;28795:18;28787:26;;28859:9;28853:4;28849:20;28845:1;28834:9;28830:17;28823:47;28887:131;29013:4;28887:131;:::i;:::-;28879:139;;28606:419;;;:::o;29031:410::-;29071:7;29094:20;29112:1;29094:20;:::i;:::-;29089:25;;29128:20;29146:1;29128:20;:::i;:::-;29123:25;;29183:1;29180;29176:9;29205:30;29223:11;29205:30;:::i;:::-;29194:41;;29384:1;29375:7;29371:15;29368:1;29365:22;29345:1;29338:9;29318:83;29295:139;;29414:18;;:::i;:::-;29295:139;29079:362;29031:410;;;;:::o;29447:220::-;29587:34;29583:1;29575:6;29571:14;29564:58;29656:3;29651:2;29643:6;29639:15;29632:28;29447:220;:::o;29673:366::-;29815:3;29836:67;29900:2;29895:3;29836:67;:::i;:::-;29829:74;;29912:93;30001:3;29912:93;:::i;:::-;30030:2;30025:3;30021:12;30014:19;;29673:366;;;:::o;30045:419::-;30211:4;30249:2;30238:9;30234:18;30226:26;;30298:9;30292:4;30288:20;30284:1;30273:9;30269:17;30262:47;30326:131;30452:4;30326:131;:::i;:::-;30318:139;;30045:419;;;:::o

Swarm Source

ipfs://149af67257ab535976dabd0eaee69c162f82eeb2529fd0b6f04419f44a765d5f
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.