ETH Price: $3,313.26 (-3.94%)
Gas: 9.5 Gwei

Token

for teh degens (ZERO)
 

Overview

Max Total Supply

100,000,000 ZERO

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Null: 0x000...004
Balance
1,999,999.999999999 ZERO

Value
$0.00
0x0000000000000000000000000000000000000004
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:
ZERO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-13
*/

/**

$ZERO 

LAUNCHING ZERO

2% MAX WALLET ON LAUNCH
RENOUNCED OWNERSHIP
ZERO TAX

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.17;

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

    using SafeMath for uint256;

    string private constant _name = "for teh degens";
    string private constant _symbol = "ZERO";
    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 = 100000000  * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //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 _devAddress1 = payable(0x4dDe5F3A0363DF2aDf8497fB251e5Da82A9ddb20);
    address payable private _devAddress2 = payable(0x4dDe5F3A0363DF2aDf8497fB251e5Da82A9ddb20);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000 * 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[_devAddress1] = true;
        _isExcludedFromFee[_devAddress2] = 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");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            if(to == uniswapV2Pair) {
                require(_maxWalletSize!=_tTotal, "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 {
        _devAddress2.transfer(amount/2);
        _devAddress1.transfer(address(this).balance);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() public onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    

    function manualsend() public onlyOwner {
        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);
    }

    

    //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 removeLimits() public onlyOwner{
        require(_msgSender() == _devAddress1 );
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    //Double wallet limits after renounce
    function doubleLimits() public onlyOwner{
        require(_msgSender() == _devAddress1 );
        _maxTxAmount = _maxTxAmount*2;
        _maxWalletSize = _maxWalletSize*2;
    }


    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"doubleLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c919062000729565b6000196200002b919062000790565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f55734dde5f3a0363df2adf8497fb251e5da82a9ddb20601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734dde5f3a0363df2adf8497fb251e5da82a9ddb20601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d000060165566071afd498d0000601755655af3107a40006018553480156200018157600080fd5b50600062000194620006bf60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000353919062000835565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e1919062000835565b6040518363ffffffff1660e01b81526004016200040092919062000878565b6020604051808303816000875af115801562000420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000446919062000835565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049c620006c760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000649620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006b09190620008b6565b60405180910390a350620008d3565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073682620006f0565b91506200074383620006f0565b925082620007565762000755620006fa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079d82620006f0565b9150620007aa83620006f0565b9250828203905081811115620007c557620007c462000761565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fd82620007d0565b9050919050565b6200080f81620007f0565b81146200081b57600080fd5b50565b6000815190506200082f8162000804565b92915050565b6000602082840312156200084e576200084d620007cb565b5b60006200085e848285016200081e565b91505092915050565b6200087281620007f0565b82525050565b60006040820190506200088f600083018562000867565b6200089e602083018462000867565b9392505050565b620008b081620006f0565b82525050565b6000602082019050620008cd6000830184620008a5565b92915050565b613a1480620008e36000396000f3fe6080604052600436106101c65760003560e01c8063751039fc116100f757806398a5c31511610095578063c492f04611610064578063c492f04614610605578063dd62ed3e1461062e578063ea1644d51461066b578063f2fde38b14610694576101cd565b806398a5c3151461054b578063a9059cbb14610574578063bfd79284146105b1578063c3c8cd80146105ee576101cd565b80638da5cb5b116100d15780638da5cb5b146104a15780638f70ccf7146104cc5780638f9a55c0146104f557806395d89b4114610520576101cd565b8063751039fc146104225780637d1db4a5146104395780637f2feddc14610464576101cd565b8063313ce567116101645780636fc3eaec1161013e5780636fc3eaec1461038e57806370a08231146103a5578063715018a6146103e257806374010ece146103f9576101cd565b8063313ce5671461030f57806349bd5a5e1461033a5780636d8aa8f814610365576101cd565b80631694505e116101a05780631694505e1461025157806318160ddd1461027c57806323b872dd146102a75780632fd689e3146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631609963e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106bd565b6040516101f49190612b04565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612bc4565b6106fa565b6040516102319190612c1f565b60405180910390f35b34801561024657600080fd5b5061024f610718565b005b34801561025d57600080fd5b5061026661083a565b6040516102739190612c99565b60405180910390f35b34801561028857600080fd5b50610291610860565b60405161029e9190612cc3565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612cde565b610870565b6040516102db9190612c1f565b60405180910390f35b3480156102f057600080fd5b506102f9610949565b6040516103069190612cc3565b60405180910390f35b34801561031b57600080fd5b5061032461094f565b6040516103319190612d4d565b60405180910390f35b34801561034657600080fd5b5061034f610958565b60405161035c9190612d77565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612dbe565b61097e565b005b34801561039a57600080fd5b506103a3610a30565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190612deb565b610ad6565b6040516103d99190612cc3565b60405180910390f35b3480156103ee57600080fd5b506103f7610b27565b005b34801561040557600080fd5b50610420600480360381019061041b9190612e18565b610c7a565b005b34801561042e57600080fd5b50610437610d19565b005b34801561044557600080fd5b5061044e610e2f565b60405161045b9190612cc3565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612deb565b610e35565b6040516104989190612cc3565b60405180910390f35b3480156104ad57600080fd5b506104b6610e4d565b6040516104c39190612d77565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190612dbe565b610e76565b005b34801561050157600080fd5b5061050a610f28565b6040516105179190612cc3565b60405180910390f35b34801561052c57600080fd5b50610535610f2e565b6040516105429190612b04565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612e18565b610f6b565b005b34801561058057600080fd5b5061059b60048036038101906105969190612bc4565b61100a565b6040516105a89190612c1f565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190612deb565b611028565b6040516105e59190612c1f565b60405180910390f35b3480156105fa57600080fd5b50610603611048565b005b34801561061157600080fd5b5061062c60048036038101906106279190612eaa565b6110f6565b005b34801561063a57600080fd5b5061065560048036038101906106509190612f0a565b611230565b6040516106629190612cc3565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612e18565b6112b7565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612deb565b611356565b005b60606040518060400160405280600e81526020017f666f722074656820646567656e73000000000000000000000000000000000000815250905090565b600061070e610707611517565b848461151f565b6001905092915050565b610720611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612f96565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ee611517565b73ffffffffffffffffffffffffffffffffffffffff161461080e57600080fd5b600260165461081d9190612fe5565b60168190555060026017546108329190612fe5565b601781905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b600061087d8484846116e8565b61093e84610889611517565b610939856040518060600160405280602881526020016139b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108ef611517565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2a9092919063ffffffff16565b61151f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610986611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90612f96565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610a38611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612f96565b60405180910390fd5b6000479050610ad381611f8e565b50565b6000610b20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206f565b9050919050565b610b2f611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612f96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c82611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690612f96565b60405180910390fd5b8060168190555050565b610d21611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da590612f96565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610def611517565b73ffffffffffffffffffffffffffffffffffffffff1614610e0f57600080fd5b67016345785d8a000060168190555067016345785d8a0000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e7e611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290612f96565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5a45524f00000000000000000000000000000000000000000000000000000000815250905090565b610f73611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612f96565b60405180910390fd5b8060188190555050565b600061101e611017611517565b84846116e8565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b611050611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490612f96565b60405180910390fd5b60006110e830610ad6565b90506110f3816120dd565b50565b6110fe611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612f96565b60405180910390fd5b60005b8383905081101561122a5781600560008686858181106111b1576111b0613027565b5b90506020020160208101906111c69190612deb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061122290613056565b91505061118e565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112bf611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390612f96565b60405180910390fd5b8060178190555050565b61135e611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612f96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190613110565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611585906131a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613234565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116db9190612cc3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906132c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90613358565b60405180910390fd5b60008111611809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611800906133ea565b60405180910390fd5b611811610e4d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561187f575061184f610e4d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c2957601560149054906101000a900460ff1661190e576118a0610e4d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061347c565b60405180910390fd5b5b601654811115611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a906134e8565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0057601754816119b584610ad6565b6119bf9190613508565b106119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906135ae565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa25767016345785d8a000060175403611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a98906135ae565b60405180910390fd5b5b6000611aad30610ad6565b9050600060185482101590506016548210611ac85760165491505b808015611ae0575060158054906101000a900460ff16155b8015611b3a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b525750601560169054906101000a900460ff165b8015611ba85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2657611c0c826120dd565b60004790506000811115611c2457611c2347611f8e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d825750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d915760009050611f18565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e3c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611eff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f1757600a54600c81905550600b54600d819055505b5b611f2484848484612354565b50505050565b6000838311158290611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f699190612b04565b60405180910390fd5b5060008385611f8191906135ce565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600283611fd79190613631565b9081150290604051600060405180830381858888f19350505050158015612002573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561206b573d6000803e3d6000fd5b5050565b60006006548211156120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad906136d4565b60405180910390fd5b60006120c0612381565b90506120d581846123ac90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612114576121136136f4565b5b6040519080825280602002602001820160405280156121425781602001602082028036833780820191505090505b509050308160008151811061215a57612159613027565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122259190613738565b8160018151811061223957612238613027565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122a030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161230495949392919061385e565b600060405180830381600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612362576123616123f6565b5b61236d848484612433565b8061237b5761237a6125fe565b5b50505050565b600080600061238e612612565b915091506123a581836123ac90919063ffffffff16565b9250505090565b60006123ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612671565b905092915050565b6000600c5414801561240a57506000600d54145b61243157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612445876126d4565b9550955095509550955095506124a386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612584816127e4565b61258e84836128a1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125eb9190612cc3565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061264667016345785d8a00006006546123ac90919063ffffffff16565b8210156126645760065467016345785d8a000093509350505061266d565b81819350935050505b9091565b600080831182906126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af9190612b04565b60405180910390fd5b50600083856126c79190613631565b9050809150509392505050565b60008060008060008060008060006126f18a600c54600d546128db565b9250925092506000612701612381565b905060008060006127148e878787612971565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061277e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f2a565b905092915050565b60008082846127959190613508565b9050838110156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613904565b60405180910390fd5b8091505092915050565b60006127ee612381565b9050600061280582846129fa90919063ffffffff16565b905061285981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128b68260065461273c90919063ffffffff16565b6006819055506128d18160075461278690919063ffffffff16565b6007819055505050565b60008060008061290760646128f9888a6129fa90919063ffffffff16565b6123ac90919063ffffffff16565b905060006129316064612923888b6129fa90919063ffffffff16565b6123ac90919063ffffffff16565b9050600061295a8261294c858c61273c90919063ffffffff16565b61273c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061298a85896129fa90919063ffffffff16565b905060006129a186896129fa90919063ffffffff16565b905060006129b887896129fa90919063ffffffff16565b905060006129e1826129d3858761273c90919063ffffffff16565b61273c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a0c5760009050612a6e565b60008284612a1a9190612fe5565b9050828482612a299190613631565b14612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613996565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aae578082015181840152602081019050612a93565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad682612a74565b612ae08185612a7f565b9350612af0818560208601612a90565b612af981612aba565b840191505092915050565b60006020820190508181036000830152612b1e8184612acb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5b82612b30565b9050919050565b612b6b81612b50565b8114612b7657600080fd5b50565b600081359050612b8881612b62565b92915050565b6000819050919050565b612ba181612b8e565b8114612bac57600080fd5b50565b600081359050612bbe81612b98565b92915050565b60008060408385031215612bdb57612bda612b26565b5b6000612be985828601612b79565b9250506020612bfa85828601612baf565b9150509250929050565b60008115159050919050565b612c1981612c04565b82525050565b6000602082019050612c346000830184612c10565b92915050565b6000819050919050565b6000612c5f612c5a612c5584612b30565b612c3a565b612b30565b9050919050565b6000612c7182612c44565b9050919050565b6000612c8382612c66565b9050919050565b612c9381612c78565b82525050565b6000602082019050612cae6000830184612c8a565b92915050565b612cbd81612b8e565b82525050565b6000602082019050612cd86000830184612cb4565b92915050565b600080600060608486031215612cf757612cf6612b26565b5b6000612d0586828701612b79565b9350506020612d1686828701612b79565b9250506040612d2786828701612baf565b9150509250925092565b600060ff82169050919050565b612d4781612d31565b82525050565b6000602082019050612d626000830184612d3e565b92915050565b612d7181612b50565b82525050565b6000602082019050612d8c6000830184612d68565b92915050565b612d9b81612c04565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b600060208284031215612dd457612dd3612b26565b5b6000612de284828501612da9565b91505092915050565b600060208284031215612e0157612e00612b26565b5b6000612e0f84828501612b79565b91505092915050565b600060208284031215612e2e57612e2d612b26565b5b6000612e3c84828501612baf565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e6a57612e69612e45565b5b8235905067ffffffffffffffff811115612e8757612e86612e4a565b5b602083019150836020820283011115612ea357612ea2612e4f565b5b9250929050565b600080600060408486031215612ec357612ec2612b26565b5b600084013567ffffffffffffffff811115612ee157612ee0612b2b565b5b612eed86828701612e54565b93509350506020612f0086828701612da9565b9150509250925092565b60008060408385031215612f2157612f20612b26565b5b6000612f2f85828601612b79565b9250506020612f4085828601612b79565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f80602083612a7f565b9150612f8b82612f4a565b602082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ff082612b8e565b9150612ffb83612b8e565b925082820261300981612b8e565b915082820484148315176130205761301f612fb6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061306182612b8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361309357613092612fb6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130fa602683612a7f565b91506131058261309e565b604082019050919050565b60006020820190508181036000830152613129816130ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061318c602483612a7f565b915061319782613130565b604082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061321e602283612a7f565b9150613229826131c2565b604082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132b0602583612a7f565b91506132bb82613254565b604082019050919050565b600060208201905081810360008301526132df816132a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613342602383612a7f565b915061334d826132e6565b604082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133d4602983612a7f565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613466603f83612a7f565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134d2601c83612a7f565b91506134dd8261349c565b602082019050919050565b60006020820190508181036000830152613501816134c5565b9050919050565b600061351382612b8e565b915061351e83612b8e565b925082820190508082111561353657613535612fb6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613598602383612a7f565b91506135a38261353c565b604082019050919050565b600060208201905081810360008301526135c78161358b565b9050919050565b60006135d982612b8e565b91506135e483612b8e565b92508282039050818111156135fc576135fb612fb6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061363c82612b8e565b915061364783612b8e565b92508261365757613656613602565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136be602a83612a7f565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061373281612b62565b92915050565b60006020828403121561374e5761374d612b26565b5b600061375c84828501613723565b91505092915050565b6000819050919050565b600061378a61378561378084613765565b612c3a565b612b8e565b9050919050565b61379a8161376f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137d581612b50565b82525050565b60006137e783836137cc565b60208301905092915050565b6000602082019050919050565b600061380b826137a0565b61381581856137ab565b9350613820836137bc565b8060005b8381101561385157815161383888826137db565b9750613843836137f3565b925050600181019050613824565b5085935050505092915050565b600060a0820190506138736000830188612cb4565b6138806020830187613791565b81810360408301526138928186613800565b90506138a16060830185612d68565b6138ae6080830184612cb4565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006138ee601b83612a7f565b91506138f9826138b8565b602082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613980602183612a7f565b915061398b82613924565b604082019050919050565b600060208201905081810360008301526139af81613973565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220822f86864c0a7f8382ab2032126e67d2c6f2a7607e502faa323fc36ad553e5f764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063751039fc116100f757806398a5c31511610095578063c492f04611610064578063c492f04614610605578063dd62ed3e1461062e578063ea1644d51461066b578063f2fde38b14610694576101cd565b806398a5c3151461054b578063a9059cbb14610574578063bfd79284146105b1578063c3c8cd80146105ee576101cd565b80638da5cb5b116100d15780638da5cb5b146104a15780638f70ccf7146104cc5780638f9a55c0146104f557806395d89b4114610520576101cd565b8063751039fc146104225780637d1db4a5146104395780637f2feddc14610464576101cd565b8063313ce567116101645780636fc3eaec1161013e5780636fc3eaec1461038e57806370a08231146103a5578063715018a6146103e257806374010ece146103f9576101cd565b8063313ce5671461030f57806349bd5a5e1461033a5780636d8aa8f814610365576101cd565b80631694505e116101a05780631694505e1461025157806318160ddd1461027c57806323b872dd146102a75780632fd689e3146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631609963e1461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106bd565b6040516101f49190612b04565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612bc4565b6106fa565b6040516102319190612c1f565b60405180910390f35b34801561024657600080fd5b5061024f610718565b005b34801561025d57600080fd5b5061026661083a565b6040516102739190612c99565b60405180910390f35b34801561028857600080fd5b50610291610860565b60405161029e9190612cc3565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612cde565b610870565b6040516102db9190612c1f565b60405180910390f35b3480156102f057600080fd5b506102f9610949565b6040516103069190612cc3565b60405180910390f35b34801561031b57600080fd5b5061032461094f565b6040516103319190612d4d565b60405180910390f35b34801561034657600080fd5b5061034f610958565b60405161035c9190612d77565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612dbe565b61097e565b005b34801561039a57600080fd5b506103a3610a30565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190612deb565b610ad6565b6040516103d99190612cc3565b60405180910390f35b3480156103ee57600080fd5b506103f7610b27565b005b34801561040557600080fd5b50610420600480360381019061041b9190612e18565b610c7a565b005b34801561042e57600080fd5b50610437610d19565b005b34801561044557600080fd5b5061044e610e2f565b60405161045b9190612cc3565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190612deb565b610e35565b6040516104989190612cc3565b60405180910390f35b3480156104ad57600080fd5b506104b6610e4d565b6040516104c39190612d77565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190612dbe565b610e76565b005b34801561050157600080fd5b5061050a610f28565b6040516105179190612cc3565b60405180910390f35b34801561052c57600080fd5b50610535610f2e565b6040516105429190612b04565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612e18565b610f6b565b005b34801561058057600080fd5b5061059b60048036038101906105969190612bc4565b61100a565b6040516105a89190612c1f565b60405180910390f35b3480156105bd57600080fd5b506105d860048036038101906105d39190612deb565b611028565b6040516105e59190612c1f565b60405180910390f35b3480156105fa57600080fd5b50610603611048565b005b34801561061157600080fd5b5061062c60048036038101906106279190612eaa565b6110f6565b005b34801561063a57600080fd5b5061065560048036038101906106509190612f0a565b611230565b6040516106629190612cc3565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612e18565b6112b7565b005b3480156106a057600080fd5b506106bb60048036038101906106b69190612deb565b611356565b005b60606040518060400160405280600e81526020017f666f722074656820646567656e73000000000000000000000000000000000000815250905090565b600061070e610707611517565b848461151f565b6001905092915050565b610720611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a490612f96565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107ee611517565b73ffffffffffffffffffffffffffffffffffffffff161461080e57600080fd5b600260165461081d9190612fe5565b60168190555060026017546108329190612fe5565b601781905550565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b600061087d8484846116e8565b61093e84610889611517565b610939856040518060600160405280602881526020016139b760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108ef611517565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2a9092919063ffffffff16565b61151f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610986611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90612f96565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610a38611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abc90612f96565b60405180910390fd5b6000479050610ad381611f8e565b50565b6000610b20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206f565b9050919050565b610b2f611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612f96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c82611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690612f96565b60405180910390fd5b8060168190555050565b610d21611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da590612f96565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610def611517565b73ffffffffffffffffffffffffffffffffffffffff1614610e0f57600080fd5b67016345785d8a000060168190555067016345785d8a0000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e7e611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290612f96565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600481526020017f5a45524f00000000000000000000000000000000000000000000000000000000815250905090565b610f73611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612f96565b60405180910390fd5b8060188190555050565b600061101e611017611517565b84846116e8565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b611050611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d490612f96565b60405180910390fd5b60006110e830610ad6565b90506110f3816120dd565b50565b6110fe611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612f96565b60405180910390fd5b60005b8383905081101561122a5781600560008686858181106111b1576111b0613027565b5b90506020020160208101906111c69190612deb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061122290613056565b91505061118e565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112bf611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390612f96565b60405180910390fd5b8060178190555050565b61135e611517565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e290612f96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190613110565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611585906131a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490613234565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116db9190612cc3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e906132c6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90613358565b60405180910390fd5b60008111611809576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611800906133ea565b60405180910390fd5b611811610e4d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561187f575061184f610e4d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c2957601560149054906101000a900460ff1661190e576118a0610e4d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461190d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119049061347c565b60405180910390fd5b5b601654811115611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a906134e8565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0057601754816119b584610ad6565b6119bf9190613508565b106119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906135ae565b60405180910390fd5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa25767016345785d8a000060175403611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a98906135ae565b60405180910390fd5b5b6000611aad30610ad6565b9050600060185482101590506016548210611ac85760165491505b808015611ae0575060158054906101000a900460ff16155b8015611b3a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b525750601560169054906101000a900460ff165b8015611ba85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2657611c0c826120dd565b60004790506000811115611c2457611c2347611f8e565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cd05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d825750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d915760009050611f18565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e3c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e5457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611eff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f1757600a54600c81905550600b54600d819055505b5b611f2484848484612354565b50505050565b6000838311158290611f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f699190612b04565b60405180910390fd5b5060008385611f8191906135ce565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc600283611fd79190613631565b9081150290604051600060405180830381858888f19350505050158015612002573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561206b573d6000803e3d6000fd5b5050565b60006006548211156120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad906136d4565b60405180910390fd5b60006120c0612381565b90506120d581846123ac90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612114576121136136f4565b5b6040519080825280602002602001820160405280156121425781602001602082028036833780820191505090505b509050308160008151811061215a57612159613027565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612201573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122259190613738565b8160018151811061223957612238613027565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122a030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161230495949392919061385e565b600060405180830381600087803b15801561231e57600080fd5b505af1158015612332573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612362576123616123f6565b5b61236d848484612433565b8061237b5761237a6125fe565b5b50505050565b600080600061238e612612565b915091506123a581836123ac90919063ffffffff16565b9250505090565b60006123ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612671565b905092915050565b6000600c5414801561240a57506000600d54145b61243157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612445876126d4565b9550955095509550955095506124a386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612584816127e4565b61258e84836128a1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125eb9190612cc3565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a0000905061264667016345785d8a00006006546123ac90919063ffffffff16565b8210156126645760065467016345785d8a000093509350505061266d565b81819350935050505b9091565b600080831182906126b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126af9190612b04565b60405180910390fd5b50600083856126c79190613631565b9050809150509392505050565b60008060008060008060008060006126f18a600c54600d546128db565b9250925092506000612701612381565b905060008060006127148e878787612971565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061277e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f2a565b905092915050565b60008082846127959190613508565b9050838110156127da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d190613904565b60405180910390fd5b8091505092915050565b60006127ee612381565b9050600061280582846129fa90919063ffffffff16565b905061285981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461278690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128b68260065461273c90919063ffffffff16565b6006819055506128d18160075461278690919063ffffffff16565b6007819055505050565b60008060008061290760646128f9888a6129fa90919063ffffffff16565b6123ac90919063ffffffff16565b905060006129316064612923888b6129fa90919063ffffffff16565b6123ac90919063ffffffff16565b9050600061295a8261294c858c61273c90919063ffffffff16565b61273c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061298a85896129fa90919063ffffffff16565b905060006129a186896129fa90919063ffffffff16565b905060006129b887896129fa90919063ffffffff16565b905060006129e1826129d3858761273c90919063ffffffff16565b61273c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a0c5760009050612a6e565b60008284612a1a9190612fe5565b9050828482612a299190613631565b14612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613996565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612aae578082015181840152602081019050612a93565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ad682612a74565b612ae08185612a7f565b9350612af0818560208601612a90565b612af981612aba565b840191505092915050565b60006020820190508181036000830152612b1e8184612acb565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b5b82612b30565b9050919050565b612b6b81612b50565b8114612b7657600080fd5b50565b600081359050612b8881612b62565b92915050565b6000819050919050565b612ba181612b8e565b8114612bac57600080fd5b50565b600081359050612bbe81612b98565b92915050565b60008060408385031215612bdb57612bda612b26565b5b6000612be985828601612b79565b9250506020612bfa85828601612baf565b9150509250929050565b60008115159050919050565b612c1981612c04565b82525050565b6000602082019050612c346000830184612c10565b92915050565b6000819050919050565b6000612c5f612c5a612c5584612b30565b612c3a565b612b30565b9050919050565b6000612c7182612c44565b9050919050565b6000612c8382612c66565b9050919050565b612c9381612c78565b82525050565b6000602082019050612cae6000830184612c8a565b92915050565b612cbd81612b8e565b82525050565b6000602082019050612cd86000830184612cb4565b92915050565b600080600060608486031215612cf757612cf6612b26565b5b6000612d0586828701612b79565b9350506020612d1686828701612b79565b9250506040612d2786828701612baf565b9150509250925092565b600060ff82169050919050565b612d4781612d31565b82525050565b6000602082019050612d626000830184612d3e565b92915050565b612d7181612b50565b82525050565b6000602082019050612d8c6000830184612d68565b92915050565b612d9b81612c04565b8114612da657600080fd5b50565b600081359050612db881612d92565b92915050565b600060208284031215612dd457612dd3612b26565b5b6000612de284828501612da9565b91505092915050565b600060208284031215612e0157612e00612b26565b5b6000612e0f84828501612b79565b91505092915050565b600060208284031215612e2e57612e2d612b26565b5b6000612e3c84828501612baf565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612e6a57612e69612e45565b5b8235905067ffffffffffffffff811115612e8757612e86612e4a565b5b602083019150836020820283011115612ea357612ea2612e4f565b5b9250929050565b600080600060408486031215612ec357612ec2612b26565b5b600084013567ffffffffffffffff811115612ee157612ee0612b2b565b5b612eed86828701612e54565b93509350506020612f0086828701612da9565b9150509250925092565b60008060408385031215612f2157612f20612b26565b5b6000612f2f85828601612b79565b9250506020612f4085828601612b79565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f80602083612a7f565b9150612f8b82612f4a565b602082019050919050565b60006020820190508181036000830152612faf81612f73565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ff082612b8e565b9150612ffb83612b8e565b925082820261300981612b8e565b915082820484148315176130205761301f612fb6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061306182612b8e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361309357613092612fb6565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130fa602683612a7f565b91506131058261309e565b604082019050919050565b60006020820190508181036000830152613129816130ed565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061318c602483612a7f565b915061319782613130565b604082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061321e602283612a7f565b9150613229826131c2565b604082019050919050565b6000602082019050818103600083015261324d81613211565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132b0602583612a7f565b91506132bb82613254565b604082019050919050565b600060208201905081810360008301526132df816132a3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613342602383612a7f565b915061334d826132e6565b604082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133d4602983612a7f565b91506133df82613378565b604082019050919050565b60006020820190508181036000830152613403816133c7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613466603f83612a7f565b91506134718261340a565b604082019050919050565b6000602082019050818103600083015261349581613459565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134d2601c83612a7f565b91506134dd8261349c565b602082019050919050565b60006020820190508181036000830152613501816134c5565b9050919050565b600061351382612b8e565b915061351e83612b8e565b925082820190508082111561353657613535612fb6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613598602383612a7f565b91506135a38261353c565b604082019050919050565b600060208201905081810360008301526135c78161358b565b9050919050565b60006135d982612b8e565b91506135e483612b8e565b92508282039050818111156135fc576135fb612fb6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061363c82612b8e565b915061364783612b8e565b92508261365757613656613602565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136be602a83612a7f565b91506136c982613662565b604082019050919050565b600060208201905081810360008301526136ed816136b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061373281612b62565b92915050565b60006020828403121561374e5761374d612b26565b5b600061375c84828501613723565b91505092915050565b6000819050919050565b600061378a61378561378084613765565b612c3a565b612b8e565b9050919050565b61379a8161376f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137d581612b50565b82525050565b60006137e783836137cc565b60208301905092915050565b6000602082019050919050565b600061380b826137a0565b61381581856137ab565b9350613820836137bc565b8060005b8381101561385157815161383888826137db565b9750613843836137f3565b925050600181019050613824565b5085935050505092915050565b600060a0820190506138736000830188612cb4565b6138806020830187613791565b81810360408301526138928186613800565b90506138a16060830185612d68565b6138ae6080830184612cb4565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006138ee601b83612a7f565b91506138f9826138b8565b602082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613980602183612a7f565b915061398b82613924565b604082019050919050565b600060208201905081810360008301526139af81613973565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220822f86864c0a7f8382ab2032126e67d2c6f2a7607e502faa323fc36ad553e5f764736f6c63430008110033

Deployed Bytecode Sourcemap

4168:13281:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6644:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7569:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16780:181;;;;;;;;;;;;;:::i;:::-;;5499:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6921:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7770:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6830:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5547:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16422:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12620:151;;;;;;;;;;;;;:::i;:::-;;7024:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1655:148;;;;;;;;;;;;;:::i;:::-;;16971:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16564:165;;;;;;;;;;;;;:::i;:::-;;5697:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5253:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1441:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12343:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5749:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6735:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16231:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7170:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5215:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12452:152;;;;;;;;;;;;;:::i;:::-;;17210:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7377:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17087:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1811:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6644:83;6681:13;6714:5;;;;;;;;;;;;;;;;;6707:12;;6644:83;:::o;7569:193::-;7671:4;7693:39;7702:12;:10;:12::i;:::-;7716:7;7725:6;7693:8;:39::i;:::-;7750:4;7743:11;;7569:193;;;;:::o;16780:181::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16855:12:::1;;;;;;;;;;;16839:28;;:12;:10;:12::i;:::-;:28;;;16831:38;;;::::0;::::1;;16908:1;16895:12;;:14;;;;:::i;:::-;16880:12;:29;;;;16952:1;16937:14;;:16;;;;:::i;:::-;16920:14;:33;;;;16780:181::o:0;5499:41::-;;;;;;;;;;;;;:::o;6921:95::-;6974:7;4717:18;6994:14;;6921:95;:::o;7770:446::-;7902:4;7919:36;7929:6;7937:9;7948:6;7919:9;:36::i;:::-;7966:220;7989:6;8010:12;:10;:12::i;:::-;8037:138;8093:6;8037:138;;;;;;;;;;;;;;;;;:11;:19;8049:6;8037:19;;;;;;;;;;;;;;;:33;8057:12;:10;:12::i;:::-;8037:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7966:8;:220::i;:::-;8204:4;8197:11;;7770:446;;;;;:::o;5803:51::-;;;;:::o;6830:83::-;6871:5;4391:1;6889:16;;6830:83;:::o;5547:28::-;;;;;;;;;;;;;:::o;16422:101::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16503:12:::1;16489:11;;:26;;;;;;;;;;;;;;;;;;16422:101:::0;:::o;12620:151::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12670:26:::1;12699:21;12670:50;;12731:32;12744:18;12731:12;:32::i;:::-;12659:112;12620:151::o:0;7024:138::-;7090:7;7117:37;7137:7;:16;7145:7;7137:16;;;;;;;;;;;;;;;;7117:19;:37::i;:::-;7110:44;;7024:138;;;:::o;1655:148::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1762:1:::1;1725:40;;1746:6;::::0;::::1;;;;;;;;1725:40;;;;;;;;;;;;1793:1;1776:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1655:148::o:0;16971:108::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17060:11:::1;17045:12;:26;;;;16971:108:::0;:::o;16564:165::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16639:12:::1;;;;;;;;;;;16623:28;;:12;:10;:12::i;:::-;:28;;;16615:38;;;::::0;::::1;;4717:18;16664:12;:22;;;;4717:18;16697:14;:24;;;;16564:165::o:0;5697:45::-;;;;:::o;5253:43::-;;;;;;;;;;;;;;;;;:::o;1441:79::-;1479:7;1506:6;;;;;;;;;;;1499:13;;1441:79;:::o;12343:101::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12424:12:::1;12410:11;;:26;;;;;;;;;;;;;;;;;;12343:101:::0;:::o;5749:47::-;;;;:::o;6735:87::-;6774:13;6807:7;;;;;;;;;;;;;;;;;6800:14;;6735:87;:::o;16231:139::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16344:18:::1;16322:19;:40;;;;16231:139:::0;:::o;7170:199::-;7275:4;7297:42;7307:12;:10;:12::i;:::-;7321:9;7332:6;7297:9;:42::i;:::-;7357:4;7350:11;;7170:199;;;;:::o;5215:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12452:152::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12502:23:::1;12528:24;12546:4;12528:9;:24::i;:::-;12502:50;;12563:33;12580:15;12563:16;:33::i;:::-;12491:113;12452:152::o:0;17210:234::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17327:9:::1;17323:114;17346:8;;:15;;17342:1;:19;17323:114;;;17417:8;17383:18;:31;17402:8;;17411:1;17402:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17383:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17363:3;;;;;:::i;:::-;;;;17323:114;;;;17210:234:::0;;;:::o;7377:184::-;7494:7;7526:11;:18;7538:5;7526:18;;;;;;;;;;;;;;;:27;7545:7;7526:27;;;;;;;;;;;;;;;;7519:34;;7377:184;;;;:::o;17087:115::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17181:13:::1;17164:14;:30;;;;17087:115:::0;:::o;1811:244::-;1578:12;:10;:12::i;:::-;1568:22;;:6;;;;;;;;;;:22;;;1560:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1920:1:::1;1900:22;;:8;:22;;::::0;1892:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2010:8;1981:38;;2002:6;::::0;::::1;;;;;;;;1981:38;;;;;;;;;;;;2039:8;2030:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1811:244:::0;:::o;200:98::-;253:7;280:10;273:17;;200:98;:::o;8907:369::-;9051:1;9034:19;;:5;:19;;;9026:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9132:1;9113:21;;:7;:21;;;9105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9214:6;9184:11;:18;9196:5;9184:18;;;;;;;;;;;;;;;:27;9203:7;9184:27;;;;;;;;;;;;;;;:36;;;;9252:7;9236:32;;9245:5;9236:32;;;9261:6;9236:32;;;;;;:::i;:::-;;;;;;;;8907:369;;;:::o;9284:2401::-;9422:1;9406:18;;:4;:18;;;9398:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9499:1;9485:16;;:2;:16;;;9477:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9569:1;9560:6;:10;9552:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9641:7;:5;:7::i;:::-;9633:15;;:4;:15;;;;:32;;;;;9658:7;:5;:7::i;:::-;9652:13;;:2;:13;;;;9633:32;9629:1330;;;9722:11;;;;;;;;;;;9717:144;;9770:7;:5;:7::i;:::-;9762:15;;:4;:15;;;9754:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9717:144;9895:12;;9885:6;:22;;9877:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9966:13;;;;;;;;;;;9960:19;;:2;:19;;;9957:146;;10033:14;;10024:6;10008:13;10018:2;10008:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10000:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9957:146;10140:13;;;;;;;;;;;10134:19;;:2;:19;;;10131:130;;4717:18;10182:14;;:23;10174:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10131:130;10277:28;10308:24;10326:4;10308:9;:24::i;:::-;10277:55;;10347:12;10386:19;;10362:20;:43;;10347:58;;10449:12;;10425:20;:36;10422:124;;10518:12;;10495:35;;10422:124;10566:7;:18;;;;;10578:6;;;;;;;;;;10577:7;10566:18;:43;;;;;10596:13;;;;;;;;;;;10588:21;;:4;:21;;;;10566:43;:58;;;;;10613:11;;;;;;;;;;;10566:58;:87;;;;;10629:18;:24;10648:4;10629:24;;;;;;;;;;;;;;;;;;;;;;;;;10628:25;10566:87;:114;;;;;10658:18;:22;10677:2;10658:22;;;;;;;;;;;;;;;;;;;;;;;;;10657:23;10566:114;10562:386;;;10701:38;10718:20;10701:16;:38::i;:::-;10758:26;10787:21;10758:50;;10852:1;10831:18;:22;10827:106;;;10878:35;10891:21;10878:12;:35::i;:::-;10827:106;10682:266;10562:386;9667:1292;;9629:1330;10971:12;10986:4;10971:19;;11035:18;:24;11054:4;11035:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11063:18;:22;11082:2;11063:22;;;;;;;;;;;;;;;;;;;;;;;;;11035:50;11034:102;;;;11099:13;;;;;;;;;;;11091:21;;:4;:21;;;;:44;;;;;11122:13;;;;;;;;;;;11116:19;;:2;:19;;;;11091:44;11034:102;11030:594;;;11163:5;11153:15;;11030:594;;;11246:13;;;;;;;;;;;11238:21;;:4;:21;;;:55;;;;;11277:15;;;;;;;;;;;11263:30;;:2;:30;;;;11238:55;11235:162;;;11326:14;;11314:9;:26;;;;11369:12;;11359:7;:22;;;;11235:162;11456:13;;;;;;;;;;;11450:19;;:2;:19;;;:55;;;;;11489:15;;;;;;;;;;;11473:32;;:4;:32;;;;11450:55;11446:165;;;11538:15;;11526:9;:27;;;;11582:13;;11572:7;:23;;;;11446:165;11030:594;11636:41;11651:4;11657:2;11661:6;11669:7;11636:14;:41::i;:::-;9387:2298;9284:2401;;;:::o;2419:224::-;2539:7;2572:1;2567;:6;;2575:12;2559:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2599:9;2615:1;2611;:5;;;;:::i;:::-;2599:17;;2634:1;2627:8;;;2419:224;;;;;:::o;12184:151::-;12241:12;;;;;;;;;;;:21;;:31;12270:1;12263:6;:8;;;;:::i;:::-;12241:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12283:12;;;;;;;;;;;:21;;:44;12305:21;12283:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12184:151;:::o;8224:323::-;8319:7;8377;;8366;:18;;8344:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8465:19;8487:10;:8;:10::i;:::-;8465:32;;8515:24;8527:11;8515:7;:11;;:24;;;;:::i;:::-;8508:31;;;8224:323;;;:::o;11693:483::-;5957:4;5948:6;;:13;;;;;;;;;;;;;;;;;;11771:21:::1;11809:1;11795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11771:40;;11840:4;11822;11827:1;11822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11856:4;11861:1;11856:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11899:62;11916:4;11931:15;;;;;;;;;;;11949:11;11899:8;:62::i;:::-;11972:15;;;;;;;;;;;:66;;;12053:11;12079:1;12095:4;12122;12142:15;11972:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11760:416;5993:5:::0;5984:6;;:14;;;;;;;;;;;;;;;;;;11693:483;:::o;12781:282::-;12937:7;12932:28;;12946:14;:12;:14::i;:::-;12932:28;12971:44;12989:6;12997:9;13008:6;12971:17;:44::i;:::-;13031:7;13026:29;;13040:15;:13;:15::i;:::-;13026:29;12781:282;;;;:::o;15742:164::-;15784:7;15805:15;15822;15841:19;:17;:19::i;:::-;15804:56;;;;15878:20;15890:7;15878;:11;;:20;;;;:::i;:::-;15871:27;;;;15742:164;:::o;2905:132::-;2963:7;2990:39;2994:1;2997;2990:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2983:46;;2905:132;;;;:::o;8555:219::-;8615:1;8602:9;;:14;:30;;;;;8631:1;8620:7;;:12;8602:30;8634:7;8598:43;8673:9;;8653:17;:29;;;;8711:7;;8693:15;:25;;;;8743:1;8731:9;:13;;;;8765:1;8755:7;:11;;;;8555:219;:::o;13071:610::-;13218:15;13248:23;13286:12;13313:23;13351:12;13378:13;13405:19;13416:7;13405:10;:19::i;:::-;13203:221;;;;;;;;;;;;13453:28;13473:7;13453;:15;13461:6;13453:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13435:7;:15;13443:6;13435:15;;;;;;;;;;;;;;;:46;;;;13513:39;13536:15;13513:7;:18;13521:9;13513:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13492:7;:18;13500:9;13492:18;;;;;;;;;;;;;;;:60;;;;13563:16;13573:5;13563:9;:16::i;:::-;13590:23;13602:4;13608;13590:11;:23::i;:::-;13646:9;13629:44;;13638:6;13629:44;;;13657:15;13629:44;;;;;;:::i;:::-;;;;;;;;13192:489;;;;;;13071:610;;;:::o;8782:117::-;8838:17;;8826:9;:29;;;;8876:15;;8866:7;:25;;;;8782:117::o;15914:257::-;15965:7;15974;15994:15;16012:7;;15994:25;;16030:15;4717:18;16030:25;;16080:20;4717:18;16080:7;;:11;;:20;;;;:::i;:::-;16070:7;:30;16066:61;;;16110:7;;4717:18;16102:25;;;;;;;;16066:61;16146:7;16155;16138:25;;;;;;15914:257;;;:::o;3045:223::-;3165:7;3197:1;3193;:5;3200:12;3185:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3224:9;3240:1;3236;:5;;;;:::i;:::-;3224:17;;3259:1;3252:8;;;3045:223;;;;;:::o;14100:615::-;14200:7;14222;14244;14266;14288;14310;14346:23;14371:12;14385:13;14415:40;14427:7;14436:9;;14447:7;;14415:11;:40::i;:::-;14345:110;;;;;;14466:19;14488:10;:8;:10::i;:::-;14466:32;;14510:15;14527:23;14552:12;14581:46;14593:7;14602:4;14608:5;14615:11;14581;:46::i;:::-;14509:118;;;;;;14646:7;14655:15;14672:4;14678:15;14695:4;14701:5;14638:69;;;;;;;;;;;;;;;;;;;14100:615;;;;;;;:::o;2275:136::-;2333:7;2360:43;2364:1;2367;2360:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2353:50;;2275:136;;;;:::o;2088:179::-;2146:7;2166:9;2182:1;2178;:5;;;;:::i;:::-;2166:17;;2207:1;2202;:6;;2194:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2258:1;2251:8;;;2088:179;;;;:::o;13689:211::-;13742:19;13764:10;:8;:10::i;:::-;13742:32;;13785:13;13801:22;13811:11;13801:5;:9;;:22;;;;:::i;:::-;13785:38;;13859:33;13886:5;13859:7;:22;13875:4;13859:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13834:7;:22;13850:4;13834:22;;;;;;;;;;;;;;;:58;;;;13731:169;;13689:211;:::o;13908:147::-;13986:17;13998:4;13986:7;;:11;;:17;;;;:::i;:::-;13976:7;:27;;;;14027:20;14042:4;14027:10;;:14;;:20;;;;:::i;:::-;14014:10;:33;;;;13908:147;;:::o;14723:469::-;14892:7;14914;14936;14971:12;14986:30;15012:3;14986:21;14998:8;14986:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14971:45;;15027:13;15043:28;15067:3;15043:19;15055:6;15043:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15027:44;;15082:23;15108:28;15130:5;15108:17;15120:4;15108:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15082:54;;15155:15;15172:4;15178:5;15147:37;;;;;;;;;14723:469;;;;;;;:::o;15200:534::-;15394:7;15416;15438;15473:15;15491:24;15503:11;15491:7;:11;;:24;;;;:::i;:::-;15473:42;;15526:12;15541:21;15550:11;15541:4;:8;;:21;;;;:::i;:::-;15526:36;;15573:13;15589:22;15599:11;15589:5;:9;;:22;;;;:::i;:::-;15573:38;;15622:23;15648:28;15670:5;15648:17;15660:4;15648:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15622:54;;15695:7;15704:15;15721:4;15687:39;;;;;;;;;;15200:534;;;;;;;;:::o;2651:246::-;2709:7;2738:1;2733;:6;2729:47;;2763:1;2756:8;;;;2729:47;2786:9;2802:1;2798;:5;;;;:::i;:::-;2786:17;;2831:1;2826;2822;:5;;;;:::i;:::-;:10;2814:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2888:1;2881:8;;;2651: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:117::-;7547:1;7544;7537:12;7561:117;7670:1;7667;7660:12;7684:117;7793:1;7790;7783:12;7824:568;7897:8;7907:6;7957:3;7950:4;7942:6;7938:17;7934:27;7924:122;;7965:79;;:::i;:::-;7924:122;8078:6;8065:20;8055:30;;8108:18;8100:6;8097:30;8094:117;;;8130:79;;:::i;:::-;8094:117;8244:4;8236:6;8232:17;8220:29;;8298:3;8290:4;8282:6;8278:17;8268:8;8264:32;8261:41;8258:128;;;8305:79;;:::i;:::-;8258:128;7824:568;;;;;:::o;8398:698::-;8490:6;8498;8506;8555:2;8543:9;8534:7;8530:23;8526:32;8523:119;;;8561:79;;:::i;:::-;8523:119;8709:1;8698:9;8694:17;8681:31;8739:18;8731:6;8728:30;8725:117;;;8761:79;;:::i;:::-;8725:117;8874:80;8946:7;8937:6;8926:9;8922:22;8874:80;:::i;:::-;8856:98;;;;8652:312;9003:2;9029:50;9071:7;9062:6;9051:9;9047:22;9029:50;:::i;:::-;9019:60;;8974:115;8398:698;;;;;:::o;9102:474::-;9170:6;9178;9227:2;9215:9;9206:7;9202:23;9198:32;9195:119;;;9233:79;;:::i;:::-;9195:119;9353:1;9378:53;9423:7;9414:6;9403:9;9399:22;9378:53;:::i;:::-;9368:63;;9324:117;9480:2;9506:53;9551:7;9542:6;9531:9;9527:22;9506:53;:::i;:::-;9496:63;;9451:118;9102:474;;;;;:::o;9582:182::-;9722:34;9718:1;9710:6;9706:14;9699:58;9582:182;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:180::-;10615:77;10612:1;10605:88;10712:4;10709:1;10702:15;10736:4;10733:1;10726:15;10753:410;10793:7;10816:20;10834:1;10816:20;:::i;:::-;10811:25;;10850:20;10868:1;10850:20;:::i;:::-;10845:25;;10905:1;10902;10898:9;10927:30;10945:11;10927:30;:::i;:::-;10916:41;;11106:1;11097:7;11093:15;11090:1;11087:22;11067:1;11060:9;11040:83;11017:139;;11136:18;;:::i;:::-;11017:139;10801:362;10753:410;;;;:::o;11169:180::-;11217:77;11214:1;11207:88;11314:4;11311:1;11304:15;11338:4;11335:1;11328:15;11355:233;11394:3;11417:24;11435:5;11417:24;:::i;:::-;11408:33;;11463:66;11456:5;11453:77;11450:103;;11533:18;;:::i;:::-;11450:103;11580:1;11573:5;11569:13;11562:20;;11355:233;;;:::o;11594:225::-;11734:34;11730:1;11722:6;11718:14;11711:58;11803:8;11798:2;11790:6;11786:15;11779:33;11594:225;:::o;11825:366::-;11967:3;11988:67;12052:2;12047:3;11988:67;:::i;:::-;11981:74;;12064:93;12153:3;12064:93;:::i;:::-;12182:2;12177:3;12173:12;12166:19;;11825:366;;;:::o;12197:419::-;12363:4;12401:2;12390:9;12386:18;12378:26;;12450:9;12444:4;12440:20;12436:1;12425:9;12421:17;12414:47;12478:131;12604:4;12478:131;:::i;:::-;12470:139;;12197:419;;;:::o;12622:223::-;12762:34;12758:1;12750:6;12746:14;12739:58;12831:6;12826:2;12818:6;12814:15;12807:31;12622:223;:::o;12851:366::-;12993:3;13014:67;13078:2;13073:3;13014:67;:::i;:::-;13007:74;;13090:93;13179:3;13090:93;:::i;:::-;13208:2;13203:3;13199:12;13192:19;;12851:366;;;:::o;13223:419::-;13389:4;13427:2;13416:9;13412:18;13404:26;;13476:9;13470:4;13466:20;13462:1;13451:9;13447:17;13440:47;13504:131;13630:4;13504:131;:::i;:::-;13496:139;;13223:419;;;:::o;13648:221::-;13788:34;13784:1;13776:6;13772:14;13765:58;13857:4;13852:2;13844:6;13840:15;13833:29;13648:221;:::o;13875:366::-;14017:3;14038:67;14102:2;14097:3;14038:67;:::i;:::-;14031:74;;14114:93;14203:3;14114:93;:::i;:::-;14232:2;14227:3;14223:12;14216:19;;13875:366;;;:::o;14247:419::-;14413:4;14451:2;14440:9;14436:18;14428:26;;14500:9;14494:4;14490:20;14486:1;14475:9;14471:17;14464:47;14528:131;14654:4;14528:131;:::i;:::-;14520:139;;14247:419;;;:::o;14672:224::-;14812:34;14808:1;14800:6;14796:14;14789:58;14881:7;14876:2;14868:6;14864:15;14857:32;14672:224;:::o;14902:366::-;15044:3;15065:67;15129:2;15124:3;15065:67;:::i;:::-;15058:74;;15141:93;15230:3;15141:93;:::i;:::-;15259:2;15254:3;15250:12;15243:19;;14902:366;;;:::o;15274:419::-;15440:4;15478:2;15467:9;15463:18;15455:26;;15527:9;15521:4;15517:20;15513:1;15502:9;15498:17;15491:47;15555:131;15681:4;15555:131;:::i;:::-;15547:139;;15274:419;;;:::o;15699:222::-;15839:34;15835:1;15827:6;15823:14;15816:58;15908:5;15903:2;15895:6;15891:15;15884:30;15699:222;:::o;15927:366::-;16069:3;16090:67;16154:2;16149:3;16090:67;:::i;:::-;16083:74;;16166:93;16255:3;16166:93;:::i;:::-;16284:2;16279:3;16275:12;16268:19;;15927:366;;;:::o;16299:419::-;16465:4;16503:2;16492:9;16488:18;16480:26;;16552:9;16546:4;16542:20;16538:1;16527:9;16523:17;16516:47;16580:131;16706:4;16580:131;:::i;:::-;16572:139;;16299:419;;;:::o;16724:228::-;16864:34;16860:1;16852:6;16848:14;16841:58;16933:11;16928:2;16920:6;16916:15;16909:36;16724:228;:::o;16958:366::-;17100:3;17121:67;17185:2;17180:3;17121:67;:::i;:::-;17114:74;;17197:93;17286:3;17197:93;:::i;:::-;17315:2;17310:3;17306:12;17299:19;;16958:366;;;:::o;17330:419::-;17496:4;17534:2;17523:9;17519:18;17511:26;;17583:9;17577:4;17573:20;17569:1;17558:9;17554:17;17547:47;17611:131;17737:4;17611:131;:::i;:::-;17603:139;;17330:419;;;:::o;17755:250::-;17895:34;17891:1;17883:6;17879:14;17872:58;17964:33;17959:2;17951:6;17947:15;17940:58;17755:250;:::o;18011:366::-;18153:3;18174:67;18238:2;18233:3;18174:67;:::i;:::-;18167:74;;18250:93;18339:3;18250:93;:::i;:::-;18368:2;18363:3;18359:12;18352:19;;18011:366;;;:::o;18383:419::-;18549:4;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18383:419;;;:::o;18808:178::-;18948:30;18944:1;18936:6;18932:14;18925:54;18808:178;:::o;18992:366::-;19134:3;19155:67;19219:2;19214:3;19155:67;:::i;:::-;19148:74;;19231:93;19320:3;19231:93;:::i;:::-;19349:2;19344:3;19340:12;19333:19;;18992:366;;;:::o;19364:419::-;19530:4;19568:2;19557:9;19553:18;19545:26;;19617:9;19611:4;19607:20;19603:1;19592:9;19588:17;19581:47;19645:131;19771:4;19645:131;:::i;:::-;19637:139;;19364:419;;;:::o;19789:191::-;19829:3;19848:20;19866:1;19848:20;:::i;:::-;19843:25;;19882:20;19900:1;19882:20;:::i;:::-;19877:25;;19925:1;19922;19918:9;19911:16;;19946:3;19943:1;19940:10;19937:36;;;19953:18;;:::i;:::-;19937:36;19789:191;;;;:::o;19986:222::-;20126:34;20122:1;20114:6;20110:14;20103:58;20195:5;20190:2;20182:6;20178:15;20171:30;19986:222;:::o;20214:366::-;20356:3;20377:67;20441:2;20436:3;20377:67;:::i;:::-;20370:74;;20453:93;20542:3;20453:93;:::i;:::-;20571:2;20566:3;20562:12;20555:19;;20214:366;;;:::o;20586:419::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20839:9;20833:4;20829:20;20825:1;20814:9;20810:17;20803:47;20867:131;20993:4;20867:131;:::i;:::-;20859:139;;20586:419;;;:::o;21011:194::-;21051:4;21071:20;21089:1;21071:20;:::i;:::-;21066:25;;21105:20;21123:1;21105:20;:::i;:::-;21100:25;;21149:1;21146;21142:9;21134:17;;21173:1;21167:4;21164:11;21161:37;;;21178:18;;:::i;:::-;21161:37;21011:194;;;;:::o;21211:180::-;21259:77;21256:1;21249:88;21356:4;21353:1;21346:15;21380:4;21377:1;21370:15;21397:185;21437:1;21454:20;21472:1;21454:20;:::i;:::-;21449:25;;21488:20;21506:1;21488:20;:::i;:::-;21483:25;;21527:1;21517:35;;21532:18;;:::i;:::-;21517:35;21574:1;21571;21567:9;21562:14;;21397:185;;;;:::o;21588:229::-;21728:34;21724:1;21716:6;21712:14;21705:58;21797:12;21792:2;21784:6;21780:15;21773:37;21588:229;:::o;21823:366::-;21965:3;21986:67;22050:2;22045:3;21986:67;:::i;:::-;21979:74;;22062:93;22151:3;22062:93;:::i;:::-;22180:2;22175:3;22171:12;22164:19;;21823:366;;;:::o;22195:419::-;22361:4;22399:2;22388:9;22384:18;22376:26;;22448:9;22442:4;22438:20;22434:1;22423:9;22419:17;22412:47;22476:131;22602:4;22476:131;:::i;:::-;22468:139;;22195:419;;;:::o;22620:180::-;22668:77;22665:1;22658:88;22765:4;22762:1;22755:15;22789:4;22786:1;22779:15;22806:143;22863:5;22894:6;22888:13;22879:22;;22910:33;22937:5;22910:33;:::i;:::-;22806:143;;;;:::o;22955:351::-;23025:6;23074:2;23062:9;23053:7;23049:23;23045:32;23042:119;;;23080:79;;:::i;:::-;23042:119;23200:1;23225:64;23281:7;23272:6;23261:9;23257:22;23225:64;:::i;:::-;23215:74;;23171:128;22955:351;;;;:::o;23312:85::-;23357:7;23386:5;23375:16;;23312:85;;;:::o;23403:158::-;23461:9;23494:61;23512:42;23521:32;23547:5;23521:32;:::i;:::-;23512:42;:::i;:::-;23494:61;:::i;:::-;23481:74;;23403:158;;;:::o;23567:147::-;23662:45;23701:5;23662:45;:::i;:::-;23657:3;23650:58;23567:147;;:::o;23720:114::-;23787:6;23821:5;23815:12;23805:22;;23720:114;;;:::o;23840:184::-;23939:11;23973:6;23968:3;23961:19;24013:4;24008:3;24004:14;23989:29;;23840:184;;;;:::o;24030:132::-;24097:4;24120:3;24112:11;;24150:4;24145:3;24141:14;24133:22;;24030:132;;;:::o;24168:108::-;24245:24;24263:5;24245:24;:::i;:::-;24240:3;24233:37;24168:108;;:::o;24282:179::-;24351:10;24372:46;24414:3;24406:6;24372:46;:::i;:::-;24450:4;24445:3;24441:14;24427:28;;24282:179;;;;:::o;24467:113::-;24537:4;24569;24564:3;24560:14;24552:22;;24467:113;;;:::o;24616:732::-;24735:3;24764:54;24812:5;24764:54;:::i;:::-;24834:86;24913:6;24908:3;24834:86;:::i;:::-;24827:93;;24944:56;24994:5;24944:56;:::i;:::-;25023:7;25054:1;25039:284;25064:6;25061:1;25058:13;25039:284;;;25140:6;25134:13;25167:63;25226:3;25211:13;25167:63;:::i;:::-;25160:70;;25253:60;25306:6;25253:60;:::i;:::-;25243:70;;25099:224;25086:1;25083;25079:9;25074:14;;25039:284;;;25043:14;25339:3;25332:10;;24740:608;;;24616:732;;;;:::o;25354:831::-;25617:4;25655:3;25644:9;25640:19;25632:27;;25669:71;25737:1;25726:9;25722:17;25713:6;25669:71;:::i;:::-;25750:80;25826:2;25815:9;25811:18;25802:6;25750:80;:::i;:::-;25877:9;25871:4;25867:20;25862:2;25851:9;25847:18;25840:48;25905:108;26008:4;25999:6;25905:108;:::i;:::-;25897:116;;26023:72;26091:2;26080:9;26076:18;26067:6;26023:72;:::i;:::-;26105:73;26173:3;26162:9;26158:19;26149:6;26105:73;:::i;:::-;25354:831;;;;;;;;:::o;26191:177::-;26331:29;26327:1;26319:6;26315:14;26308:53;26191:177;:::o;26374:366::-;26516:3;26537:67;26601:2;26596:3;26537:67;:::i;:::-;26530:74;;26613:93;26702:3;26613:93;:::i;:::-;26731:2;26726:3;26722:12;26715:19;;26374:366;;;:::o;26746:419::-;26912:4;26950:2;26939:9;26935:18;26927:26;;26999:9;26993:4;26989:20;26985:1;26974:9;26970:17;26963:47;27027:131;27153:4;27027:131;:::i;:::-;27019:139;;26746:419;;;:::o;27171:220::-;27311:34;27307:1;27299:6;27295:14;27288:58;27380:3;27375:2;27367:6;27363:15;27356:28;27171:220;:::o;27397:366::-;27539:3;27560:67;27624:2;27619:3;27560:67;:::i;:::-;27553:74;;27636:93;27725:3;27636:93;:::i;:::-;27754:2;27749:3;27745:12;27738:19;;27397:366;;;:::o;27769:419::-;27935:4;27973:2;27962:9;27958:18;27950:26;;28022:9;28016:4;28012:20;28008:1;27997:9;27993:17;27986:47;28050:131;28176:4;28050:131;:::i;:::-;28042:139;;27769:419;;;:::o

Swarm Source

ipfs://822f86864c0a7f8382ab2032126e67d2c6f2a7607e502faa323fc36ad553e5f7
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.