ETH Price: $3,208.33 (-1.43%)
Gas: 1 Gwei

Token

Seikatsu (Seik)
 

Overview

Max Total Supply

1,000,000,000 Seik

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
34,421,181.102343744 Seik

Value
$0.00
0x3070c282556c2aa7cb83d6278fccd51e2349def5
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:
Seikatsu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-19
*/

//Website drop 30 min after launch tg needs to be community made but we will be watching and when we believe you are ready we will join the community tg -Seikatsu

pragma solidity ^0.8.9;
// SPDX-License-Identifier: Unlicensed
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 Seikatsu is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Seikatsu";
    string private constant _symbol = "Seik";
    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 public constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 public _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 public _taxFeeOnSell = 5;

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 40000000 * 10**9;
    uint256 public _maxWalletSize = 40000000 * 10**9;
    uint256 public _swapTokensAtAmount = 500000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

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

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

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

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

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

            if(contractTokenBalance >= _swapTokensAtAmount*10)
            {
                contractTokenBalance = _swapTokensAtAmount*10;
            }

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        require (_maxWalletSize >= _tTotal/100);
    }

    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":[],"name":"_tTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200072a565b6000196200002b919062000791565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573a9f8f327c99e10fc77483006cead1e9d616b9489601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a9f8f327c99e10fc77483006cead1e9d616b9489601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550668e1bc9bf040000601655668e1bc9bf0400006017556601c6bf526340006018553480156200018257600080fd5b50600062000195620006c060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024a620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000354919062000836565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e2919062000836565b6040518363ffffffff1660e01b81526004016200040192919062000879565b6020604051808303816000875af115801562000421573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000447919062000836565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049d620006c860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064a620006c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006b19190620008b7565b60405180910390a350620008d4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073782620006f1565b91506200074483620006f1565b925082620007575762000756620006fb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079e82620006f1565b9150620007ab83620006f1565b9250828203905081811115620007c657620007c562000762565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fe82620007d1565b9050919050565b6200081081620007f1565b81146200081c57600080fd5b50565b600081519050620008308162000805565b92915050565b6000602082840312156200084f576200084e620007cc565b5b60006200085f848285016200081f565b91505092915050565b6200087381620007f1565b82525050565b600060408201905062000890600083018562000868565b6200089f602083018462000868565b9392505050565b620008b181620006f1565b82525050565b6000602082019050620008ce6000830184620008a6565b92915050565b613c3580620008e46000396000f3fe6080604052600436106101db5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063c492f04611610064578063c492f046146106a8578063dd62ed3e146106d1578063ea1644d51461070e578063f2fde38b14610737576101e2565b8063a9059cbb146105d8578063af465a2714610615578063bf5976d314610640578063bfd792841461066b576101e2565b80638f9a55c0116100d15780638f9a55c01461053057806395d89b411461055b57806398a5c31514610586578063a2a957bb146105af576101e2565b80637d1db4a5146104725780637f2feddc1461049d5780638199040e146104da5780638da5cb5b14610505576101e2565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103de57806370a08231146103f5578063715018a61461043257806374010ece14610449576101e2565b8063313ce5671461033657806349bd5a5e146103615780636b9990531461038c5780636d8aa8f8146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612c05565b610760565b005b34801561021c57600080fd5b5061022561088a565b6040516102329190612ccd565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612d25565b6108c7565b60405161026f9190612d80565b60405180910390f35b34801561028457600080fd5b5061028d6108e5565b60405161029a9190612dfa565b60405180910390f35b3480156102af57600080fd5b506102b861090b565b6040516102c59190612e24565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190612e3f565b61091b565b6040516103029190612d80565b60405180910390f35b34801561031757600080fd5b506103206109f4565b60405161032d9190612e24565b60405180910390f35b34801561034257600080fd5b5061034b6109fa565b6040516103589190612eae565b60405180910390f35b34801561036d57600080fd5b50610376610a03565b6040516103839190612ed8565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190612ef3565b610a29565b005b3480156103c157600080fd5b506103dc60048036038101906103d79190612f4c565b610b19565b005b3480156103ea57600080fd5b506103f3610bcb565b005b34801561040157600080fd5b5061041c60048036038101906104179190612ef3565b610bdc565b6040516104299190612e24565b60405180910390f35b34801561043e57600080fd5b50610447610c2d565b005b34801561045557600080fd5b50610470600480360381019061046b9190612f79565b610d80565b005b34801561047e57600080fd5b50610487610e42565b6040516104949190612e24565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190612ef3565b610e48565b6040516104d19190612e24565b60405180910390f35b3480156104e657600080fd5b506104ef610e60565b6040516104fc9190612e24565b60405180910390f35b34801561051157600080fd5b5061051a610e66565b6040516105279190612ed8565b60405180910390f35b34801561053c57600080fd5b50610545610e8f565b6040516105529190612e24565b60405180910390f35b34801561056757600080fd5b50610570610e95565b60405161057d9190612ccd565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190612f79565b610ed2565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612fa6565b610f71565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190612d25565b61105f565b60405161060c9190612d80565b60405180910390f35b34801561062157600080fd5b5061062a61107d565b6040516106379190612e24565b60405180910390f35b34801561064c57600080fd5b50610655611089565b6040516106629190612e24565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612ef3565b61108f565b60405161069f9190612d80565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca9190613068565b6110af565b005b3480156106dd57600080fd5b506106f860048036038101906106f391906130c8565b6111e9565b6040516107059190612e24565b60405180910390f35b34801561071a57600080fd5b5061073560048036038101906107309190612f79565b611270565b005b34801561074357600080fd5b5061075e60048036038101906107599190612ef3565b611332565b005b6107686114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90613154565b60405180910390fd5b60005b81518110156108865760016010600084848151811061081a57610819613174565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061087e906131d2565b9150506107f8565b5050565b60606040518060400160405280600881526020017f5365696b61747375000000000000000000000000000000000000000000000000815250905090565b60006108db6108d46114f3565b84846114fb565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006109288484846116c4565b6109e9846109346114f3565b6109e485604051806060016040528060288152602001613bd860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061099a6114f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f659092919063ffffffff16565b6114fb565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a316114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590613154565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b216114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590613154565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610bd981611fc9565b50565b6000610c26600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612035565b9050919050565b610c356114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990613154565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d886114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90613154565b60405180910390fd5b806016819055506064670de0b6b3a7640000610e319190613249565b6016541015610e3f57600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f5365696b00000000000000000000000000000000000000000000000000000000815250905090565b610eda6114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90613154565b60405180910390fd5b8060188190555050565b610f796114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffd90613154565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506019600b54600954600a5460085461103a919061327a565b611044919061327a565b61104e919061327a565b111561105957600080fd5b50505050565b600061107361106c6114f3565b84846116c4565b6001905092915050565b670de0b6b3a764000081565b60095481565b60106020528060005260406000206000915054906101000a900460ff1681565b6110b76114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90613154565b60405180910390fd5b60005b838390508110156111e357816005600086868581811061116a57611169613174565b5b905060200201602081019061117f9190612ef3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111db906131d2565b915050611147565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112786114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613154565b60405180910390fd5b806017819055506064670de0b6b3a76400006113219190613249565b601754101561132f57600080fd5b50565b61133a6114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613154565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90613320565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611561906133b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090613444565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b79190612e24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a906134d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613568565b60405180910390fd5b600081116117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906135fa565b60405180910390fd5b6117ed610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561185b575061182b610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c6457601560149054906101000a900460ff166118ea5761187c610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e09061368c565b60405180910390fd5b5b60165481111561192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906136f8565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119d35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a099061378a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611abf5760175481611a7484610bdc565b611a7e919061327a565b10611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab59061381c565b60405180910390fd5b5b6000611aca30610bdc565b905060006018548210159050600a601854611ae5919061383c565b8210611afd57600a601854611afa919061383c565b91505b808015611b15575060158054906101000a900460ff16155b8015611b6f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b875750601560169054906101000a900460ff165b8015611bdd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6157611c41826120a3565b600047905066470de4df820000811115611c5f57611c5e47611fc9565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d0b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dbe5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dbd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dcc5760009050611f53565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8f57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f3a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257600a54600c81905550600b54600d819055505b5b611f5f8484848461231a565b50505050565b6000838311158290611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa49190612ccd565b60405180910390fd5b5060008385611fbc919061387e565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612031573d6000803e3d6000fd5b5050565b600060065482111561207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613924565b60405180910390fd5b6000612086612347565b905061209b818461237290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120da576120d9612a64565b5b6040519080825280602002602001820160405280156121085781602001602082028036833780820191505090505b50905030816000815181106121205761211f613174565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121eb9190613959565b816001815181106121ff576121fe613174565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114fb565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ca959493929190613a7f565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612328576123276123bc565b5b6123338484846123f9565b80612341576123406125c4565b5b50505050565b60008060006123546125d8565b9150915061236b818361237290919063ffffffff16565b9250505090565b60006123b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612637565b905092915050565b6000600c541480156123d057506000600d54145b6123f757600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061240b8761269a565b95509550955095509550955061246986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124fe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061254a816127aa565b6125548483612867565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125b19190612e24565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061260c670de0b6b3a764000060065461237290919063ffffffff16565b82101561262a57600654670de0b6b3a7640000935093505050612633565b81819350935050505b9091565b6000808311829061267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759190612ccd565b60405180910390fd5b506000838561268d9190613249565b9050809150509392505050565b60008060008060008060008060006126b78a600c54600d546128a1565b92509250925060006126c7612347565b905060008060006126da8e878787612937565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f65565b905092915050565b600080828461275b919061327a565b9050838110156127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790613b25565b60405180910390fd5b8091505092915050565b60006127b4612347565b905060006127cb82846129c090919063ffffffff16565b905061281f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61287c8260065461270290919063ffffffff16565b6006819055506128978160075461274c90919063ffffffff16565b6007819055505050565b6000806000806128cd60646128bf888a6129c090919063ffffffff16565b61237290919063ffffffff16565b905060006128f760646128e9888b6129c090919063ffffffff16565b61237290919063ffffffff16565b9050600061292082612912858c61270290919063ffffffff16565b61270290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061295085896129c090919063ffffffff16565b9050600061296786896129c090919063ffffffff16565b9050600061297e87896129c090919063ffffffff16565b905060006129a782612999858761270290919063ffffffff16565b61270290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129d25760009050612a34565b600082846129e0919061383c565b90508284826129ef9190613249565b14612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2690613bb7565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a9c82612a53565b810181811067ffffffffffffffff82111715612abb57612aba612a64565b5b80604052505050565b6000612ace612a3a565b9050612ada8282612a93565b919050565b600067ffffffffffffffff821115612afa57612af9612a64565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3b82612b10565b9050919050565b612b4b81612b30565b8114612b5657600080fd5b50565b600081359050612b6881612b42565b92915050565b6000612b81612b7c84612adf565b612ac4565b90508083825260208201905060208402830185811115612ba457612ba3612b0b565b5b835b81811015612bcd5780612bb98882612b59565b845260208401935050602081019050612ba6565b5050509392505050565b600082601f830112612bec57612beb612a4e565b5b8135612bfc848260208601612b6e565b91505092915050565b600060208284031215612c1b57612c1a612a44565b5b600082013567ffffffffffffffff811115612c3957612c38612a49565b5b612c4584828501612bd7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c88578082015181840152602081019050612c6d565b60008484015250505050565b6000612c9f82612c4e565b612ca98185612c59565b9350612cb9818560208601612c6a565b612cc281612a53565b840191505092915050565b60006020820190508181036000830152612ce78184612c94565b905092915050565b6000819050919050565b612d0281612cef565b8114612d0d57600080fd5b50565b600081359050612d1f81612cf9565b92915050565b60008060408385031215612d3c57612d3b612a44565b5b6000612d4a85828601612b59565b9250506020612d5b85828601612d10565b9150509250929050565b60008115159050919050565b612d7a81612d65565b82525050565b6000602082019050612d956000830184612d71565b92915050565b6000819050919050565b6000612dc0612dbb612db684612b10565b612d9b565b612b10565b9050919050565b6000612dd282612da5565b9050919050565b6000612de482612dc7565b9050919050565b612df481612dd9565b82525050565b6000602082019050612e0f6000830184612deb565b92915050565b612e1e81612cef565b82525050565b6000602082019050612e396000830184612e15565b92915050565b600080600060608486031215612e5857612e57612a44565b5b6000612e6686828701612b59565b9350506020612e7786828701612b59565b9250506040612e8886828701612d10565b9150509250925092565b600060ff82169050919050565b612ea881612e92565b82525050565b6000602082019050612ec36000830184612e9f565b92915050565b612ed281612b30565b82525050565b6000602082019050612eed6000830184612ec9565b92915050565b600060208284031215612f0957612f08612a44565b5b6000612f1784828501612b59565b91505092915050565b612f2981612d65565b8114612f3457600080fd5b50565b600081359050612f4681612f20565b92915050565b600060208284031215612f6257612f61612a44565b5b6000612f7084828501612f37565b91505092915050565b600060208284031215612f8f57612f8e612a44565b5b6000612f9d84828501612d10565b91505092915050565b60008060008060808587031215612fc057612fbf612a44565b5b6000612fce87828801612d10565b9450506020612fdf87828801612d10565b9350506040612ff087828801612d10565b925050606061300187828801612d10565b91505092959194509250565b600080fd5b60008083601f84011261302857613027612a4e565b5b8235905067ffffffffffffffff8111156130455761304461300d565b5b60208301915083602082028301111561306157613060612b0b565b5b9250929050565b60008060006040848603121561308157613080612a44565b5b600084013567ffffffffffffffff81111561309f5761309e612a49565b5b6130ab86828701613012565b935093505060206130be86828701612f37565b9150509250925092565b600080604083850312156130df576130de612a44565b5b60006130ed85828601612b59565b92505060206130fe85828601612b59565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061313e602083612c59565b915061314982613108565b602082019050919050565b6000602082019050818103600083015261316d81613131565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131dd82612cef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361320f5761320e6131a3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061325482612cef565b915061325f83612cef565b92508261326f5761326e61321a565b5b828204905092915050565b600061328582612cef565b915061329083612cef565b92508282019050808211156132a8576132a76131a3565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061330a602683612c59565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061339c602483612c59565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061342e602283612c59565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602583612c59565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613552602383612c59565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135e4602983612c59565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613676603f83612c59565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136e2601c83612c59565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613774602383612c59565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612c59565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612cef565b915061385283612cef565b925082820261386081612cef565b91508282048414831517613877576138766131a3565b5b5092915050565b600061388982612cef565b915061389483612cef565b92508282039050818111156138ac576138ab6131a3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061390e602a83612c59565b9150613919826138b2565b604082019050919050565b6000602082019050818103600083015261393d81613901565b9050919050565b60008151905061395381612b42565b92915050565b60006020828403121561396f5761396e612a44565b5b600061397d84828501613944565b91505092915050565b6000819050919050565b60006139ab6139a66139a184613986565b612d9b565b612cef565b9050919050565b6139bb81613990565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f681612b30565b82525050565b6000613a0883836139ed565b60208301905092915050565b6000602082019050919050565b6000613a2c826139c1565b613a3681856139cc565b9350613a41836139dd565b8060005b83811015613a72578151613a5988826139fc565b9750613a6483613a14565b925050600181019050613a45565b5085935050505092915050565b600060a082019050613a946000830188612e15565b613aa160208301876139b2565b8181036040830152613ab38186613a21565b9050613ac26060830185612ec9565b613acf6080830184612e15565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b0f601b83612c59565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602183612c59565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f40eb6dd521c44a7c0e8892d5d371cd90e235c765a408a8950445764fd92e8cb64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101db5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063c492f04611610064578063c492f046146106a8578063dd62ed3e146106d1578063ea1644d51461070e578063f2fde38b14610737576101e2565b8063a9059cbb146105d8578063af465a2714610615578063bf5976d314610640578063bfd792841461066b576101e2565b80638f9a55c0116100d15780638f9a55c01461053057806395d89b411461055b57806398a5c31514610586578063a2a957bb146105af576101e2565b80637d1db4a5146104725780637f2feddc1461049d5780638199040e146104da5780638da5cb5b14610505576101e2565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103de57806370a08231146103f5578063715018a61461043257806374010ece14610449576101e2565b8063313ce5671461033657806349bd5a5e146103615780636b9990531461038c5780636d8aa8f8146103b5576101e2565b80631694505e116101b65780631694505e1461027857806318160ddd146102a357806323b872dd146102ce5780632fd689e31461030b576101e2565b8062b8cf2a146101e757806306fdde0314610210578063095ea7b31461023b576101e2565b366101e257005b600080fd5b3480156101f357600080fd5b5061020e60048036038101906102099190612c05565b610760565b005b34801561021c57600080fd5b5061022561088a565b6040516102329190612ccd565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190612d25565b6108c7565b60405161026f9190612d80565b60405180910390f35b34801561028457600080fd5b5061028d6108e5565b60405161029a9190612dfa565b60405180910390f35b3480156102af57600080fd5b506102b861090b565b6040516102c59190612e24565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f09190612e3f565b61091b565b6040516103029190612d80565b60405180910390f35b34801561031757600080fd5b506103206109f4565b60405161032d9190612e24565b60405180910390f35b34801561034257600080fd5b5061034b6109fa565b6040516103589190612eae565b60405180910390f35b34801561036d57600080fd5b50610376610a03565b6040516103839190612ed8565b60405180910390f35b34801561039857600080fd5b506103b360048036038101906103ae9190612ef3565b610a29565b005b3480156103c157600080fd5b506103dc60048036038101906103d79190612f4c565b610b19565b005b3480156103ea57600080fd5b506103f3610bcb565b005b34801561040157600080fd5b5061041c60048036038101906104179190612ef3565b610bdc565b6040516104299190612e24565b60405180910390f35b34801561043e57600080fd5b50610447610c2d565b005b34801561045557600080fd5b50610470600480360381019061046b9190612f79565b610d80565b005b34801561047e57600080fd5b50610487610e42565b6040516104949190612e24565b60405180910390f35b3480156104a957600080fd5b506104c460048036038101906104bf9190612ef3565b610e48565b6040516104d19190612e24565b60405180910390f35b3480156104e657600080fd5b506104ef610e60565b6040516104fc9190612e24565b60405180910390f35b34801561051157600080fd5b5061051a610e66565b6040516105279190612ed8565b60405180910390f35b34801561053c57600080fd5b50610545610e8f565b6040516105529190612e24565b60405180910390f35b34801561056757600080fd5b50610570610e95565b60405161057d9190612ccd565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190612f79565b610ed2565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612fa6565b610f71565b005b3480156105e457600080fd5b506105ff60048036038101906105fa9190612d25565b61105f565b60405161060c9190612d80565b60405180910390f35b34801561062157600080fd5b5061062a61107d565b6040516106379190612e24565b60405180910390f35b34801561064c57600080fd5b50610655611089565b6040516106629190612e24565b60405180910390f35b34801561067757600080fd5b50610692600480360381019061068d9190612ef3565b61108f565b60405161069f9190612d80565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca9190613068565b6110af565b005b3480156106dd57600080fd5b506106f860048036038101906106f391906130c8565b6111e9565b6040516107059190612e24565b60405180910390f35b34801561071a57600080fd5b5061073560048036038101906107309190612f79565b611270565b005b34801561074357600080fd5b5061075e60048036038101906107599190612ef3565b611332565b005b6107686114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90613154565b60405180910390fd5b60005b81518110156108865760016010600084848151811061081a57610819613174565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061087e906131d2565b9150506107f8565b5050565b60606040518060400160405280600881526020017f5365696b61747375000000000000000000000000000000000000000000000000815250905090565b60006108db6108d46114f3565b84846114fb565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006109288484846116c4565b6109e9846109346114f3565b6109e485604051806060016040528060288152602001613bd860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061099a6114f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f659092919063ffffffff16565b6114fb565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a316114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590613154565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b216114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590613154565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000479050610bd981611fc9565b50565b6000610c26600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612035565b9050919050565b610c356114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb990613154565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d886114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90613154565b60405180910390fd5b806016819055506064670de0b6b3a7640000610e319190613249565b6016541015610e3f57600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f5365696b00000000000000000000000000000000000000000000000000000000815250905090565b610eda6114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5e90613154565b60405180910390fd5b8060188190555050565b610f796114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611006576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffd90613154565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506019600b54600954600a5460085461103a919061327a565b611044919061327a565b61104e919061327a565b111561105957600080fd5b50505050565b600061107361106c6114f3565b84846116c4565b6001905092915050565b670de0b6b3a764000081565b60095481565b60106020528060005260406000206000915054906101000a900460ff1681565b6110b76114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113b90613154565b60405180910390fd5b60005b838390508110156111e357816005600086868581811061116a57611169613174565b5b905060200201602081019061117f9190612ef3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111db906131d2565b915050611147565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112786114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613154565b60405180910390fd5b806017819055506064670de0b6b3a76400006113219190613249565b601754101561132f57600080fd5b50565b61133a6114f3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613154565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611436576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142d90613320565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611561906133b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090613444565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116b79190612e24565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a906134d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990613568565b60405180910390fd5b600081116117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906135fa565b60405180910390fd5b6117ed610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561185b575061182b610e66565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c6457601560149054906101000a900460ff166118ea5761187c610e66565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e09061368c565b60405180910390fd5b5b60165481111561192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906136f8565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119d35750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a099061378a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611abf5760175481611a7484610bdc565b611a7e919061327a565b10611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab59061381c565b60405180910390fd5b5b6000611aca30610bdc565b905060006018548210159050600a601854611ae5919061383c565b8210611afd57600a601854611afa919061383c565b91505b808015611b15575060158054906101000a900460ff16155b8015611b6f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b875750601560169054906101000a900460ff165b8015611bdd5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c335750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6157611c41826120a3565b600047905066470de4df820000811115611c5f57611c5e47611fc9565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d0b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611dbe5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dbd5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dcc5760009050611f53565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e775750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e8f57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f3a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f5257600a54600c81905550600b54600d819055505b5b611f5f8484848461231a565b50505050565b6000838311158290611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa49190612ccd565b60405180910390fd5b5060008385611fbc919061387e565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612031573d6000803e3d6000fd5b5050565b600060065482111561207c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207390613924565b60405180910390fd5b6000612086612347565b905061209b818461237290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120da576120d9612a64565b5b6040519080825280602002602001820160405280156121085781602001602082028036833780820191505090505b50905030816000815181106121205761211f613174565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121eb9190613959565b816001815181106121ff576121fe613174565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114fb565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ca959493929190613a7f565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80612328576123276123bc565b5b6123338484846123f9565b80612341576123406125c4565b5b50505050565b60008060006123546125d8565b9150915061236b818361237290919063ffffffff16565b9250505090565b60006123b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612637565b905092915050565b6000600c541480156123d057506000600d54145b6123f757600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061240b8761269a565b95509550955095509550955061246986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461270290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124fe85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061254a816127aa565b6125548483612867565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125b19190612e24565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061260c670de0b6b3a764000060065461237290919063ffffffff16565b82101561262a57600654670de0b6b3a7640000935093505050612633565b81819350935050505b9091565b6000808311829061267e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126759190612ccd565b60405180910390fd5b506000838561268d9190613249565b9050809150509392505050565b60008060008060008060008060006126b78a600c54600d546128a1565b92509250925060006126c7612347565b905060008060006126da8e878787612937565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061274483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f65565b905092915050565b600080828461275b919061327a565b9050838110156127a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279790613b25565b60405180910390fd5b8091505092915050565b60006127b4612347565b905060006127cb82846129c090919063ffffffff16565b905061281f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461274c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61287c8260065461270290919063ffffffff16565b6006819055506128978160075461274c90919063ffffffff16565b6007819055505050565b6000806000806128cd60646128bf888a6129c090919063ffffffff16565b61237290919063ffffffff16565b905060006128f760646128e9888b6129c090919063ffffffff16565b61237290919063ffffffff16565b9050600061292082612912858c61270290919063ffffffff16565b61270290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061295085896129c090919063ffffffff16565b9050600061296786896129c090919063ffffffff16565b9050600061297e87896129c090919063ffffffff16565b905060006129a782612999858761270290919063ffffffff16565b61270290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129d25760009050612a34565b600082846129e0919061383c565b90508284826129ef9190613249565b14612a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2690613bb7565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a9c82612a53565b810181811067ffffffffffffffff82111715612abb57612aba612a64565b5b80604052505050565b6000612ace612a3a565b9050612ada8282612a93565b919050565b600067ffffffffffffffff821115612afa57612af9612a64565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b3b82612b10565b9050919050565b612b4b81612b30565b8114612b5657600080fd5b50565b600081359050612b6881612b42565b92915050565b6000612b81612b7c84612adf565b612ac4565b90508083825260208201905060208402830185811115612ba457612ba3612b0b565b5b835b81811015612bcd5780612bb98882612b59565b845260208401935050602081019050612ba6565b5050509392505050565b600082601f830112612bec57612beb612a4e565b5b8135612bfc848260208601612b6e565b91505092915050565b600060208284031215612c1b57612c1a612a44565b5b600082013567ffffffffffffffff811115612c3957612c38612a49565b5b612c4584828501612bd7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c88578082015181840152602081019050612c6d565b60008484015250505050565b6000612c9f82612c4e565b612ca98185612c59565b9350612cb9818560208601612c6a565b612cc281612a53565b840191505092915050565b60006020820190508181036000830152612ce78184612c94565b905092915050565b6000819050919050565b612d0281612cef565b8114612d0d57600080fd5b50565b600081359050612d1f81612cf9565b92915050565b60008060408385031215612d3c57612d3b612a44565b5b6000612d4a85828601612b59565b9250506020612d5b85828601612d10565b9150509250929050565b60008115159050919050565b612d7a81612d65565b82525050565b6000602082019050612d956000830184612d71565b92915050565b6000819050919050565b6000612dc0612dbb612db684612b10565b612d9b565b612b10565b9050919050565b6000612dd282612da5565b9050919050565b6000612de482612dc7565b9050919050565b612df481612dd9565b82525050565b6000602082019050612e0f6000830184612deb565b92915050565b612e1e81612cef565b82525050565b6000602082019050612e396000830184612e15565b92915050565b600080600060608486031215612e5857612e57612a44565b5b6000612e6686828701612b59565b9350506020612e7786828701612b59565b9250506040612e8886828701612d10565b9150509250925092565b600060ff82169050919050565b612ea881612e92565b82525050565b6000602082019050612ec36000830184612e9f565b92915050565b612ed281612b30565b82525050565b6000602082019050612eed6000830184612ec9565b92915050565b600060208284031215612f0957612f08612a44565b5b6000612f1784828501612b59565b91505092915050565b612f2981612d65565b8114612f3457600080fd5b50565b600081359050612f4681612f20565b92915050565b600060208284031215612f6257612f61612a44565b5b6000612f7084828501612f37565b91505092915050565b600060208284031215612f8f57612f8e612a44565b5b6000612f9d84828501612d10565b91505092915050565b60008060008060808587031215612fc057612fbf612a44565b5b6000612fce87828801612d10565b9450506020612fdf87828801612d10565b9350506040612ff087828801612d10565b925050606061300187828801612d10565b91505092959194509250565b600080fd5b60008083601f84011261302857613027612a4e565b5b8235905067ffffffffffffffff8111156130455761304461300d565b5b60208301915083602082028301111561306157613060612b0b565b5b9250929050565b60008060006040848603121561308157613080612a44565b5b600084013567ffffffffffffffff81111561309f5761309e612a49565b5b6130ab86828701613012565b935093505060206130be86828701612f37565b9150509250925092565b600080604083850312156130df576130de612a44565b5b60006130ed85828601612b59565b92505060206130fe85828601612b59565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061313e602083612c59565b915061314982613108565b602082019050919050565b6000602082019050818103600083015261316d81613131565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131dd82612cef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361320f5761320e6131a3565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061325482612cef565b915061325f83612cef565b92508261326f5761326e61321a565b5b828204905092915050565b600061328582612cef565b915061329083612cef565b92508282019050808211156132a8576132a76131a3565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061330a602683612c59565b9150613315826132ae565b604082019050919050565b60006020820190508181036000830152613339816132fd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061339c602483612c59565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061342e602283612c59565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602583612c59565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613552602383612c59565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135e4602983612c59565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613676603f83612c59565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136e2601c83612c59565b91506136ed826136ac565b602082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613774602383612c59565b915061377f82613718565b604082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612c59565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612cef565b915061385283612cef565b925082820261386081612cef565b91508282048414831517613877576138766131a3565b5b5092915050565b600061388982612cef565b915061389483612cef565b92508282039050818111156138ac576138ab6131a3565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061390e602a83612c59565b9150613919826138b2565b604082019050919050565b6000602082019050818103600083015261393d81613901565b9050919050565b60008151905061395381612b42565b92915050565b60006020828403121561396f5761396e612a44565b5b600061397d84828501613944565b91505092915050565b6000819050919050565b60006139ab6139a66139a184613986565b612d9b565b612cef565b9050919050565b6139bb81613990565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139f681612b30565b82525050565b6000613a0883836139ed565b60208301905092915050565b6000602082019050919050565b6000613a2c826139c1565b613a3681856139cc565b9350613a41836139dd565b8060005b83811015613a72578151613a5988826139fc565b9750613a6483613a14565b925050600181019050613a45565b5085935050505092915050565b600060a082019050613a946000830188612e15565b613aa160208301876139b2565b8181036040830152613ab38186613a21565b9050613ac26060830185612ec9565b613acf6080830184612e15565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b0f601b83612c59565b9150613b1a82613ad9565b602082019050919050565b60006020820190508181036000830152613b3e81613b02565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba1602183612c59565b9150613bac82613b45565b604082019050919050565b60006020820190508181036000830152613bd081613b94565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f40eb6dd521c44a7c0e8892d5d371cd90e235c765a408a8950445764fd92e8cb64736f6c63430008110033

Deployed Bytecode Sourcemap

4232:13268:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12491:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6728:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5570:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7005:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7854:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5875:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6914:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5618:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12668:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16784:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12340:143;;;;;;;;;;;;;:::i;:::-;;7108:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1719:148;;;;;;;;;;;;;:::i;:::-;;16924:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5767:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5312:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5013:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1505:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5820:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6819:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16593:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16166:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7254:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4744:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4933:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5274:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17261:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7461:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17088:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1875:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12491:169;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12567:9:::1;12562:91;12586:5;:12;12582:1;:16;12562:91;;;12637:4;12620;:14;12625:5;12631:1;12625:8;;;;;;;;:::i;:::-;;;;;;;;12620:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12600:3;;;;;:::i;:::-;;;;12562:91;;;;12491:169:::0;:::o;6728:83::-;6765:13;6798:5;;;;;;;;;;;;;;;;;6791:12;;6728:83;:::o;7653:193::-;7755:4;7777:39;7786:12;:10;:12::i;:::-;7800:7;7809:6;7777:8;:39::i;:::-;7834:4;7827:11;;7653:193;;;;:::o;5570:41::-;;;;;;;;;;;;;:::o;7005:95::-;7058:7;4778:18;7078:14;;7005:95;:::o;7854:446::-;7986:4;8003:36;8013:6;8021:9;8032:6;8003:9;:36::i;:::-;8050:220;8073:6;8094:12;:10;:12::i;:::-;8121:138;8177:6;8121:138;;;;;;;;;;;;;;;;;:11;:19;8133:6;8121:19;;;;;;;;;;;;;;;:33;8141:12;:10;:12::i;:::-;8121:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8050:8;:220::i;:::-;8288:4;8281:11;;7854:446;;;;;:::o;5875:51::-;;;;:::o;6914:83::-;6955:5;4453:1;6973:16;;6914:83;:::o;5618:28::-;;;;;;;;;;;;;:::o;12668:92::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12747:5:::1;12732:4;:12;12737:6;12732:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12668:92:::0;:::o;16784:101::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16865:12:::1;16851:11;;:26;;;;;;;;;;;;;;;;;;16784:101:::0;:::o;12340:143::-;12382:26;12411:21;12382:50;;12443:32;12456:18;12443:12;:32::i;:::-;12371:112;12340:143::o;7108:138::-;7174:7;7201:37;7221:7;:16;7229:7;7221:16;;;;;;;;;;;;;;;;7201:19;:37::i;:::-;7194:44;;7108:138;;;:::o;1719:148::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1826:1:::1;1789:40;;1810:6;::::0;::::1;;;;;;;;1789:40;;;;;;;;;;;;1857:1;1840:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1719:148::o:0;16924:156::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17013:11:::1;16998:12;:26;;;;17068:3;4778:18;17060:11;;;;:::i;:::-;17044:12;;:27;;17035:37;;;::::0;::::1;;16924:156:::0;:::o;5767:46::-;;;;:::o;5312:43::-;;;;;;;;;;;;;;;;;:::o;5013:32::-;;;;:::o;1505:79::-;1543:7;1570:6;;;;;;;;;;;1563:13;;1505:79;:::o;5820:48::-;;;;:::o;6819:87::-;6858:13;6891:7;;;;;;;;;;;;;;;;;6884:14;;6819:87;:::o;16593:139::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16706:18:::1;16684:19;:40;;;;16593:139:::0;:::o;16166:375::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16317:13:::1;16300:14;:30;;;;16359:14;16341:15;:32;;;;16399:11;16384:12;:26;;;;16437:12;16421:13;:28;;;;16530:2;16513:13;;16500:12;;16484:15;;16469:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16460:73;;;::::0;::::1;;16166:375:::0;;;;:::o;7254:199::-;7359:4;7381:42;7391:12;:10;:12::i;:::-;7405:9;7416:6;7381:9;:42::i;:::-;7441:4;7434:11;;7254:199;;;;:::o;4744:52::-;4778:18;4744:52;:::o;4933:31::-;;;;:::o;5274:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;17261:234::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17378:9:::1;17374:114;17397:8;;:15;;17393:1;:19;17374:114;;;17468:8;17434:18;:31;17453:8;;17462:1;17453:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17434:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17414:3;;;;;:::i;:::-;;;;17374:114;;;;17261:234:::0;;;:::o;7461:184::-;7578:7;7610:11;:18;7622:5;7610:18;;;;;;;;;;;;;;;:27;7629:7;7610:27;;;;;;;;;;;;;;;;7603:34;;7461:184;;;;:::o;17088:165::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17182:13:::1;17165:14;:30;;;;17241:3;4778:18;17233:11;;;;:::i;:::-;17215:14;;:29;;17206:39;;;::::0;::::1;;17088:165:::0;:::o;1875:244::-;1642:12;:10;:12::i;:::-;1632:22;;:6;;;;;;;;;;:22;;;1624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1984:1:::1;1964:22;;:8;:22;;::::0;1956:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2074:8;2045:38;;2066:6;::::0;::::1;;;;;;;;2045:38;;;;;;;;;;;;2103:8;2094:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1875:244:::0;:::o;264:98::-;317:7;344:10;337:17;;264:98;:::o;8991:369::-;9135:1;9118:19;;:5;:19;;;9110:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9216:1;9197:21;;:7;:21;;;9189:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:6;9268:11;:18;9280:5;9268:18;;;;;;;;;;;;;;;:27;9287:7;9268:27;;;;;;;;;;;;;;;:36;;;;9336:7;9320:32;;9329:5;9320:32;;;9345:6;9320:32;;;;;;:::i;:::-;;;;;;;;8991:369;;;:::o;9368:2366::-;9506:1;9490:18;;:4;:18;;;9482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9583:1;9569:16;;:2;:16;;;9561:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9653:1;9644:6;:10;9636:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9725:7;:5;:7::i;:::-;9717:15;;:4;:15;;;;:32;;;;;9742:7;:5;:7::i;:::-;9736:13;;:2;:13;;;;9717:32;9713:1295;;;9806:11;;;;;;;;;;;9801:144;;9854:7;:5;:7::i;:::-;9846:15;;:4;:15;;;9838:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9801:144;9979:12;;9969:6;:22;;9961:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10048:4;:10;10053:4;10048:10;;;;;;;;;;;;;;;;;;;;;;;;;10047:11;:24;;;;;10063:4;:8;10068:2;10063:8;;;;;;;;;;;;;;;;;;;;;;;;;10062:9;10047:24;10039:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10137:13;;;;;;;;;;;10131:19;;:2;:19;;;10128:146;;10204:14;;10195:6;10179:13;10189:2;10179:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10171:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10128:146;10290:28;10321:24;10339:4;10321:9;:24::i;:::-;10290:55;;10360:12;10399:19;;10375:20;:43;;10360:58;;10482:2;10462:19;;:22;;;;:::i;:::-;10438:20;:46;10435:144;;10561:2;10541:19;;:22;;;;:::i;:::-;10518:45;;10435:144;10599:7;:18;;;;;10611:6;;;;;;;;;;10610:7;10599:18;:43;;;;;10629:13;;;;;;;;;;;10621:21;;:4;:21;;;;10599:43;:58;;;;;10646:11;;;;;;;;;;;10599:58;:87;;;;;10662:18;:24;10681:4;10662:24;;;;;;;;;;;;;;;;;;;;;;;;;10661:25;10599:87;:114;;;;;10691:18;:22;10710:2;10691:22;;;;;;;;;;;;;;;;;;;;;;;;;10690:23;10599:114;10595:402;;;10734:38;10751:20;10734:16;:38::i;:::-;10791:26;10820:21;10791:50;;10885:17;10864:18;:38;10860:122;;;10927:35;10940:21;10927:12;:35::i;:::-;10860:122;10715:282;10595:402;9751:1257;;9713:1295;11020:12;11035:4;11020:19;;11084:18;:24;11103:4;11084:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11112:18;:22;11131:2;11112:22;;;;;;;;;;;;;;;;;;;;;;;;;11084:50;11083:102;;;;11148:13;;;;;;;;;;;11140:21;;:4;:21;;;;:44;;;;;11171:13;;;;;;;;;;;11165:19;;:2;:19;;;;11140:44;11083:102;11079:594;;;11212:5;11202:15;;11079:594;;;11295:13;;;;;;;;;;;11287:21;;:4;:21;;;:55;;;;;11326:15;;;;;;;;;;;11312:30;;:2;:30;;;;11287:55;11284:162;;;11375:14;;11363:9;:26;;;;11418:12;;11408:7;:22;;;;11284:162;11505:13;;;;;;;;;;;11499:19;;:2;:19;;;:55;;;;;11538:15;;;;;;;;;;;11522:32;;:4;:32;;;;11499:55;11495:165;;;11587:15;;11575:9;:27;;;;11631:13;;11621:7;:23;;;;11495:165;11079:594;11685:41;11700:4;11706:2;11710:6;11718:7;11685:14;:41::i;:::-;9471:2263;9368:2366;;;:::o;2483:224::-;2603:7;2636:1;2631;:6;;2639:12;2623:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2663:9;2679:1;2675;:5;;;;:::i;:::-;2663:17;;2698:1;2691:8;;;2483:224;;;;;:::o;12233:99::-;12290:17;;;;;;;;;;;:26;;:34;12317:6;12290:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12233:99;:::o;8308:323::-;8403:7;8461;;8450;:18;;8428:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8549:19;8571:10;:8;:10::i;:::-;8549:32;;8599:24;8611:11;8599:7;:11;;:24;;;;:::i;:::-;8592:31;;;8308:323;;;:::o;11742:483::-;6029:4;6020:6;;:13;;;;;;;;;;;;;;;;;;11820:21:::1;11858:1;11844:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11820:40;;11889:4;11871;11876:1;11871:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11915:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11905:4;11910:1;11905:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11948:62;11965:4;11980:15;;;;;;;;;;;11998:11;11948:8;:62::i;:::-;12021:15;;;;;;;;;;;:66;;;12102:11;12128:1;12144:4;12171;12191:15;12021:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11809:416;6065:5:::0;6056:6;;:14;;;;;;;;;;;;;;;;;;11742:483;:::o;12768:282::-;12924:7;12919:28;;12933:14;:12;:14::i;:::-;12919:28;12958:44;12976:6;12984:9;12995:6;12958:17;:44::i;:::-;13018:7;13013:29;;13027:15;:13;:15::i;:::-;13013:29;12768:282;;;;:::o;15729:164::-;15771:7;15792:15;15809;15828:19;:17;:19::i;:::-;15791:56;;;;15865:20;15877:7;15865;:11;;:20;;;;:::i;:::-;15858:27;;;;15729:164;:::o;2969:132::-;3027:7;3054:39;3058:1;3061;3054:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3047:46;;2969:132;;;;:::o;8639:219::-;8699:1;8686:9;;:14;:30;;;;;8715:1;8704:7;;:12;8686:30;8718:7;8682:43;8757:9;;8737:17;:29;;;;8795:7;;8777:15;:25;;;;8827:1;8815:9;:13;;;;8849:1;8839:7;:11;;;;8639:219;:::o;13058:610::-;13205:15;13235:23;13273:12;13300:23;13338:12;13365:13;13392:19;13403:7;13392:10;:19::i;:::-;13190:221;;;;;;;;;;;;13440:28;13460:7;13440;:15;13448:6;13440:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13422:7;:15;13430:6;13422:15;;;;;;;;;;;;;;;:46;;;;13500:39;13523:15;13500:7;:18;13508:9;13500:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13479:7;:18;13487:9;13479:18;;;;;;;;;;;;;;;:60;;;;13550:16;13560:5;13550:9;:16::i;:::-;13577:23;13589:4;13595;13577:11;:23::i;:::-;13633:9;13616:44;;13625:6;13616:44;;;13644:15;13616:44;;;;;;:::i;:::-;;;;;;;;13179:489;;;;;;13058:610;;;:::o;8866:117::-;8922:17;;8910:9;:29;;;;8960:15;;8950:7;:25;;;;8866:117::o;15901:257::-;15952:7;15961;15981:15;15999:7;;15981:25;;16017:15;4778:18;16017:25;;16067:20;4778:18;16067:7;;:11;;:20;;;;:::i;:::-;16057:7;:30;16053:61;;;16097:7;;4778:18;16089:25;;;;;;;;16053:61;16133:7;16142;16125:25;;;;;;15901:257;;;:::o;3109:223::-;3229:7;3261:1;3257;:5;3264:12;3249:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3288:9;3304:1;3300;:5;;;;:::i;:::-;3288:17;;3323:1;3316:8;;;3109:223;;;;;:::o;14087:615::-;14187:7;14209;14231;14253;14275;14297;14333:23;14358:12;14372:13;14402:40;14414:7;14423:9;;14434:7;;14402:11;:40::i;:::-;14332:110;;;;;;14453:19;14475:10;:8;:10::i;:::-;14453:32;;14497:15;14514:23;14539:12;14568:46;14580:7;14589:4;14595:5;14602:11;14568;:46::i;:::-;14496:118;;;;;;14633:7;14642:15;14659:4;14665:15;14682:4;14688:5;14625:69;;;;;;;;;;;;;;;;;;;14087:615;;;;;;;:::o;2339:136::-;2397:7;2424:43;2428:1;2431;2424:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2417:50;;2339:136;;;;:::o;2152:179::-;2210:7;2230:9;2246:1;2242;:5;;;;:::i;:::-;2230:17;;2271:1;2266;:6;;2258:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2322:1;2315:8;;;2152:179;;;;:::o;13676:211::-;13729:19;13751:10;:8;:10::i;:::-;13729:32;;13772:13;13788:22;13798:11;13788:5;:9;;:22;;;;:::i;:::-;13772:38;;13846:33;13873:5;13846:7;:22;13862:4;13846:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13821:7;:22;13837:4;13821:22;;;;;;;;;;;;;;;:58;;;;13718:169;;13676:211;:::o;13895:147::-;13973:17;13985:4;13973:7;;:11;;:17;;;;:::i;:::-;13963:7;:27;;;;14014:20;14029:4;14014:10;;:14;;:20;;;;:::i;:::-;14001:10;:33;;;;13895:147;;:::o;14710:469::-;14879:7;14901;14923;14958:12;14973:30;14999:3;14973:21;14985:8;14973:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14958:45;;15014:13;15030:28;15054:3;15030:19;15042:6;15030:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15014:44;;15069:23;15095:28;15117:5;15095:17;15107:4;15095:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15069:54;;15142:15;15159:4;15165:5;15134:37;;;;;;;;;14710:469;;;;;;;:::o;15187:534::-;15381:7;15403;15425;15460:15;15478:24;15490:11;15478:7;:11;;:24;;;;:::i;:::-;15460:42;;15513:12;15528:21;15537:11;15528:4;:8;;:21;;;;:::i;:::-;15513:36;;15560:13;15576:22;15586:11;15576:5;:9;;:22;;;;:::i;:::-;15560:38;;15609:23;15635:28;15657:5;15635:17;15647:4;15635:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15609:54;;15682:7;15691:15;15708:4;15674:39;;;;;;;;;;15187:534;;;;;;;;:::o;2715:246::-;2773:7;2802:1;2797;:6;2793:47;;2827:1;2820:8;;;;2793:47;2850:9;2866:1;2862;:5;;;;:::i;:::-;2850:17;;2895:1;2890;2886;:5;;;;:::i;:::-;:10;2878:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2952:1;2945:8;;;2715:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:233;14345:3;14368:24;14386:5;14368:24;:::i;:::-;14359:33;;14414:66;14407:5;14404:77;14401:103;;14484:18;;:::i;:::-;14401:103;14531:1;14524:5;14520:13;14513:20;;14306:233;;;:::o;14545:180::-;14593:77;14590:1;14583:88;14690:4;14687:1;14680:15;14714:4;14711:1;14704:15;14731:185;14771:1;14788:20;14806:1;14788:20;:::i;:::-;14783:25;;14822:20;14840:1;14822:20;:::i;:::-;14817:25;;14861:1;14851:35;;14866:18;;:::i;:::-;14851:35;14908:1;14905;14901:9;14896:14;;14731:185;;;;:::o;14922:191::-;14962:3;14981:20;14999:1;14981:20;:::i;:::-;14976:25;;15015:20;15033:1;15015:20;:::i;:::-;15010:25;;15058:1;15055;15051:9;15044:16;;15079:3;15076:1;15073:10;15070:36;;;15086:18;;:::i;:::-;15070:36;14922:191;;;;:::o;15119:225::-;15259:34;15255:1;15247:6;15243:14;15236:58;15328:8;15323:2;15315:6;15311:15;15304:33;15119:225;:::o;15350:366::-;15492:3;15513:67;15577:2;15572:3;15513:67;:::i;:::-;15506:74;;15589:93;15678:3;15589:93;:::i;:::-;15707:2;15702:3;15698:12;15691:19;;15350:366;;;:::o;15722:419::-;15888:4;15926:2;15915:9;15911:18;15903:26;;15975:9;15969:4;15965:20;15961:1;15950:9;15946:17;15939:47;16003:131;16129:4;16003:131;:::i;:::-;15995:139;;15722:419;;;:::o;16147:223::-;16287:34;16283:1;16275:6;16271:14;16264:58;16356:6;16351:2;16343:6;16339:15;16332:31;16147:223;:::o;16376:366::-;16518:3;16539:67;16603:2;16598:3;16539:67;:::i;:::-;16532:74;;16615:93;16704:3;16615:93;:::i;:::-;16733:2;16728:3;16724:12;16717:19;;16376:366;;;:::o;16748:419::-;16914:4;16952:2;16941:9;16937:18;16929:26;;17001:9;16995:4;16991:20;16987:1;16976:9;16972:17;16965:47;17029:131;17155:4;17029:131;:::i;:::-;17021:139;;16748:419;;;:::o;17173:221::-;17313:34;17309:1;17301:6;17297:14;17290:58;17382:4;17377:2;17369:6;17365:15;17358:29;17173:221;:::o;17400:366::-;17542:3;17563:67;17627:2;17622:3;17563:67;:::i;:::-;17556:74;;17639:93;17728:3;17639:93;:::i;:::-;17757:2;17752:3;17748:12;17741:19;;17400:366;;;:::o;17772:419::-;17938:4;17976:2;17965:9;17961:18;17953:26;;18025:9;18019:4;18015:20;18011:1;18000:9;17996:17;17989:47;18053:131;18179:4;18053:131;:::i;:::-;18045:139;;17772:419;;;:::o;18197:224::-;18337:34;18333:1;18325:6;18321:14;18314:58;18406:7;18401:2;18393:6;18389:15;18382:32;18197:224;:::o;18427:366::-;18569:3;18590:67;18654:2;18649:3;18590:67;:::i;:::-;18583:74;;18666:93;18755:3;18666:93;:::i;:::-;18784:2;18779:3;18775:12;18768:19;;18427:366;;;:::o;18799:419::-;18965:4;19003:2;18992:9;18988:18;18980:26;;19052:9;19046:4;19042:20;19038:1;19027:9;19023:17;19016:47;19080:131;19206:4;19080:131;:::i;:::-;19072:139;;18799:419;;;:::o;19224:222::-;19364:34;19360:1;19352:6;19348:14;19341:58;19433:5;19428:2;19420:6;19416:15;19409:30;19224:222;:::o;19452:366::-;19594:3;19615:67;19679:2;19674:3;19615:67;:::i;:::-;19608:74;;19691:93;19780:3;19691:93;:::i;:::-;19809:2;19804:3;19800:12;19793:19;;19452:366;;;:::o;19824:419::-;19990:4;20028:2;20017:9;20013:18;20005:26;;20077:9;20071:4;20067:20;20063:1;20052:9;20048:17;20041:47;20105:131;20231:4;20105:131;:::i;:::-;20097:139;;19824:419;;;:::o;20249:228::-;20389:34;20385:1;20377:6;20373:14;20366:58;20458:11;20453:2;20445:6;20441:15;20434:36;20249:228;:::o;20483:366::-;20625:3;20646:67;20710:2;20705:3;20646:67;:::i;:::-;20639:74;;20722:93;20811:3;20722:93;:::i;:::-;20840:2;20835:3;20831:12;20824:19;;20483:366;;;:::o;20855:419::-;21021:4;21059:2;21048:9;21044:18;21036:26;;21108:9;21102:4;21098:20;21094:1;21083:9;21079:17;21072:47;21136:131;21262:4;21136:131;:::i;:::-;21128:139;;20855:419;;;:::o;21280:250::-;21420:34;21416:1;21408:6;21404:14;21397:58;21489:33;21484:2;21476:6;21472:15;21465:58;21280:250;:::o;21536:366::-;21678:3;21699:67;21763:2;21758:3;21699:67;:::i;:::-;21692:74;;21775:93;21864:3;21775:93;:::i;:::-;21893:2;21888:3;21884:12;21877:19;;21536:366;;;:::o;21908:419::-;22074:4;22112:2;22101:9;22097:18;22089:26;;22161:9;22155:4;22151:20;22147:1;22136:9;22132:17;22125:47;22189:131;22315:4;22189:131;:::i;:::-;22181:139;;21908:419;;;:::o;22333:178::-;22473:30;22469:1;22461:6;22457:14;22450:54;22333:178;:::o;22517:366::-;22659:3;22680:67;22744:2;22739:3;22680:67;:::i;:::-;22673:74;;22756:93;22845:3;22756:93;:::i;:::-;22874:2;22869:3;22865:12;22858:19;;22517:366;;;:::o;22889:419::-;23055:4;23093:2;23082:9;23078:18;23070:26;;23142:9;23136:4;23132:20;23128:1;23117:9;23113:17;23106:47;23170:131;23296:4;23170:131;:::i;:::-;23162:139;;22889:419;;;:::o;23314:222::-;23454:34;23450:1;23442:6;23438:14;23431:58;23523:5;23518:2;23510:6;23506:15;23499:30;23314:222;:::o;23542:366::-;23684:3;23705:67;23769:2;23764:3;23705:67;:::i;:::-;23698:74;;23781:93;23870:3;23781:93;:::i;:::-;23899:2;23894:3;23890:12;23883:19;;23542:366;;;:::o;23914:419::-;24080:4;24118:2;24107:9;24103:18;24095:26;;24167:9;24161:4;24157:20;24153:1;24142:9;24138:17;24131:47;24195:131;24321:4;24195:131;:::i;:::-;24187:139;;23914:419;;;:::o;24339:222::-;24479:34;24475:1;24467:6;24463:14;24456:58;24548:5;24543:2;24535:6;24531:15;24524:30;24339:222;:::o;24567:366::-;24709:3;24730:67;24794:2;24789:3;24730:67;:::i;:::-;24723:74;;24806:93;24895:3;24806:93;:::i;:::-;24924:2;24919:3;24915:12;24908:19;;24567:366;;;:::o;24939:419::-;25105:4;25143:2;25132:9;25128:18;25120:26;;25192:9;25186:4;25182:20;25178:1;25167:9;25163:17;25156:47;25220:131;25346:4;25220:131;:::i;:::-;25212:139;;24939:419;;;:::o;25364:410::-;25404:7;25427:20;25445:1;25427:20;:::i;:::-;25422:25;;25461:20;25479:1;25461:20;:::i;:::-;25456:25;;25516:1;25513;25509:9;25538:30;25556:11;25538:30;:::i;:::-;25527:41;;25717:1;25708:7;25704:15;25701:1;25698:22;25678:1;25671:9;25651:83;25628:139;;25747:18;;:::i;:::-;25628:139;25412:362;25364:410;;;;:::o;25780:194::-;25820:4;25840:20;25858:1;25840:20;:::i;:::-;25835:25;;25874:20;25892:1;25874:20;:::i;:::-;25869:25;;25918:1;25915;25911:9;25903:17;;25942:1;25936:4;25933:11;25930:37;;;25947:18;;:::i;:::-;25930:37;25780:194;;;;:::o;25980:229::-;26120:34;26116:1;26108:6;26104:14;26097:58;26189:12;26184:2;26176:6;26172:15;26165:37;25980:229;:::o;26215:366::-;26357:3;26378:67;26442:2;26437:3;26378:67;:::i;:::-;26371:74;;26454:93;26543:3;26454:93;:::i;:::-;26572:2;26567:3;26563:12;26556:19;;26215:366;;;:::o;26587:419::-;26753:4;26791:2;26780:9;26776:18;26768:26;;26840:9;26834:4;26830:20;26826:1;26815:9;26811:17;26804:47;26868:131;26994:4;26868:131;:::i;:::-;26860:139;;26587:419;;;:::o;27012:143::-;27069:5;27100:6;27094:13;27085:22;;27116:33;27143:5;27116:33;:::i;:::-;27012:143;;;;:::o;27161:351::-;27231:6;27280:2;27268:9;27259:7;27255:23;27251:32;27248:119;;;27286:79;;:::i;:::-;27248:119;27406:1;27431:64;27487:7;27478:6;27467:9;27463:22;27431:64;:::i;:::-;27421:74;;27377:128;27161:351;;;;:::o;27518:85::-;27563:7;27592:5;27581:16;;27518:85;;;:::o;27609:158::-;27667:9;27700:61;27718:42;27727:32;27753:5;27727:32;:::i;:::-;27718:42;:::i;:::-;27700:61;:::i;:::-;27687:74;;27609:158;;;:::o;27773:147::-;27868:45;27907:5;27868:45;:::i;:::-;27863:3;27856:58;27773:147;;:::o;27926:114::-;27993:6;28027:5;28021:12;28011:22;;27926:114;;;:::o;28046:184::-;28145:11;28179:6;28174:3;28167:19;28219:4;28214:3;28210:14;28195:29;;28046:184;;;;:::o;28236:132::-;28303:4;28326:3;28318:11;;28356:4;28351:3;28347:14;28339:22;;28236:132;;;:::o;28374:108::-;28451:24;28469:5;28451:24;:::i;:::-;28446:3;28439:37;28374:108;;:::o;28488:179::-;28557:10;28578:46;28620:3;28612:6;28578:46;:::i;:::-;28656:4;28651:3;28647:14;28633:28;;28488:179;;;;:::o;28673:113::-;28743:4;28775;28770:3;28766:14;28758:22;;28673:113;;;:::o;28822:732::-;28941:3;28970:54;29018:5;28970:54;:::i;:::-;29040:86;29119:6;29114:3;29040:86;:::i;:::-;29033:93;;29150:56;29200:5;29150:56;:::i;:::-;29229:7;29260:1;29245:284;29270:6;29267:1;29264:13;29245:284;;;29346:6;29340:13;29373:63;29432:3;29417:13;29373:63;:::i;:::-;29366:70;;29459:60;29512:6;29459:60;:::i;:::-;29449:70;;29305:224;29292:1;29289;29285:9;29280:14;;29245:284;;;29249:14;29545:3;29538:10;;28946:608;;;28822:732;;;;:::o;29560:831::-;29823:4;29861:3;29850:9;29846:19;29838:27;;29875:71;29943:1;29932:9;29928:17;29919:6;29875:71;:::i;:::-;29956:80;30032:2;30021:9;30017:18;30008:6;29956:80;:::i;:::-;30083:9;30077:4;30073:20;30068:2;30057:9;30053:18;30046:48;30111:108;30214:4;30205:6;30111:108;:::i;:::-;30103:116;;30229:72;30297:2;30286:9;30282:18;30273:6;30229:72;:::i;:::-;30311:73;30379:3;30368:9;30364:19;30355:6;30311:73;:::i;:::-;29560:831;;;;;;;;:::o;30397:177::-;30537:29;30533:1;30525:6;30521:14;30514:53;30397:177;:::o;30580:366::-;30722:3;30743:67;30807:2;30802:3;30743:67;:::i;:::-;30736:74;;30819:93;30908:3;30819:93;:::i;:::-;30937:2;30932:3;30928:12;30921:19;;30580:366;;;:::o;30952:419::-;31118:4;31156:2;31145:9;31141:18;31133:26;;31205:9;31199:4;31195:20;31191:1;31180:9;31176:17;31169:47;31233:131;31359:4;31233:131;:::i;:::-;31225:139;;30952:419;;;:::o;31377:220::-;31517:34;31513:1;31505:6;31501:14;31494:58;31586:3;31581:2;31573:6;31569:15;31562:28;31377:220;:::o;31603:366::-;31745:3;31766:67;31830:2;31825:3;31766:67;:::i;:::-;31759:74;;31842:93;31931:3;31842:93;:::i;:::-;31960:2;31955:3;31951:12;31944:19;;31603:366;;;:::o;31975:419::-;32141:4;32179:2;32168:9;32164:18;32156:26;;32228:9;32222:4;32218:20;32214:1;32203:9;32199:17;32192:47;32256:131;32382:4;32256:131;:::i;:::-;32248:139;;31975:419;;;:::o

Swarm Source

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