ETH Price: $2,522.89 (+0.24%)

Token

Murakami Flowers (MKFS)
 

Overview

Max Total Supply

1,000,000 MKFS

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,092.727436126 MKFS

Value
$0.00
0x895d9eb73ecfc417844adb163fb8831616bda37b
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:
MKFS

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-27
*/

/**   



        █───█─█─█─████─████─█──█─████─█───█─███────███─█───████─█───█─███─████─███
        ██─██─█─█─█──█─█──█─█─█──█──█─██─██──█─────█───█───█──█─█───█─█───█──█─█──
        █─█─█─█─█─████─████─██───████─█─█─█──█─────███─█───█──█─█─█─█─███─████─███
        █───█─█─█─█─█──█──█─█─█──█──█─█───█──█─────█───█───█──█─█████─█───█─█────█
        █───█─███─█─█──█──█─█──█─█──█─█───█─███────█───███─████──█─█──███─█─█──███


        Website: https://murakamiflowers.kaikaikiki.com/
        OpenSea: https://opensea.io/collection/murakami-flowers-2022-official
        Instagram: https://www.instagram.com/murakami.flower2022/
        Telegram: https://t.me/+ijtpd3u7dvs5Y2Q6
        TAX: 0% / 0%





*/
     


pragma solidity ^0.8.17;



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




// SPDX-License-Identifier: UNLICENSED

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

    using SafeMath for uint256;

    string private constant _name = "Murakami Flowers";
    string private constant _symbol = "MKFS";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _burningFeeOnBuy = 0;
    uint256 private _developFee = 0;
    uint256 private _burningFeeOnSell = 0;
    uint256 private _feeOnMarketing = 0;
    
    uint256 private _burningFee = _burningFeeOnSell;
    uint256 private _devTeamFee = _feeOnMarketing;

    uint256 private _previousburningFee = _burningFee;
    uint256 private _previoustaxFee = _devTeamFee;

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 100000 * 10**9;
    uint256 public _maxWalletSize = 1000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;
        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 (_burningFee == 0 && _devTeamFee == 0) return;

        _previousburningFee = _burningFee;
        _previoustaxFee = _devTeamFee;

        _burningFee = 0;
        _devTeamFee = 0;
    }

    function restoreAllFee() private {
        _burningFee = _previousburningFee;
        _devTeamFee = _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");
        require(!bots[from] && !bots[to]);

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

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

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

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

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

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

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

        bool takeFee = true;

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

            
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnBuy;
                _devTeamFee = _developFee;
            }

            
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _burningFee = _burningFeeOnSell;
                _devTeamFee = _feeOnMarketing;
            }

        }

        _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 startLaunch() external onlyOwner() {

        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;


    }

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

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

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


    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, _burningFee, _devTeamFee);
        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 burningFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(burningFee).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 renounceOwnership(uint256 burningFeeOnBuy, uint256 burningFeeOnSell, uint256 developFee, uint256 feeOnMarketing) public onlyOwner {
        _burningFeeOnBuy = burningFeeOnBuy;
        _burningFeeOnSell = burningFeeOnSell;
        _developFee = developFee;
        _feeOnMarketing = feeOnMarketing;
    }

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


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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"lockLPToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"burningFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"burningFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"developFee","type":"uint256"},{"internalType":"uint256","name":"feeOnMarketing","type":"uint256"}],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"}]

608060405266038d7ea4c680006000196200001b919062000349565b6000196200002a9190620003b0565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573664912e200606288e9bb7e05f8057c6d75c531c8601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073664912e200606288e9bb7e05f8057c6d75c531c8601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550655af3107a400060165566038d7ea4c680006017556402540be4006018553480156200017e57600080fd5b506000620001916200030860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002466200030860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002946200030860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620002fa9190620003fc565b60405180910390a362000419565b600033905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003568262000310565b9150620003638362000310565b9250826200037657620003756200031a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620003bd8262000310565b9150620003ca8362000310565b9250828203905081811115620003e557620003e462000381565b5b92915050565b620003f68162000310565b82525050565b6000602082019050620004136000830184620003eb565b92915050565b613e0b80620004296000396000f3fe6080604052600436106101a05760003560e01c8063789dfefe116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105c3578063dd62ed3e146105da578063f2fde38b14610617578063fc588c0414610640576101a7565b8063a9059cbb14610520578063a9e282b81461055d578063bfd7928414610586576101a7565b80637fd7d062116100c65780637fd7d062146104765780638da5cb5b1461049f5780638f9a55c0146104ca57806395d89b41146104f5576101a7565b8063789dfefe146103e55780637d1db4a51461040e5780637f2feddc14610439576101a7565b8063313ce5671161015957806359a945e91161013357806359a945e9146103515780635d0044ca146103685780636fc3eaec1461039157806370a08231146103a8576101a7565b8063313ce567146102d257806340eed21d146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612ca4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612d6e565b6106a6565b60405161020b9190612dc9565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612e43565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612e6d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612e88565b6106f9565b60405161029e9190612dc9565b60405180910390f35b3480156102b357600080fd5b506102bc6107d2565b6040516102c99190612e6d565b60405180910390f35b3480156102de57600080fd5b506102e76107d8565b6040516102f49190612ef7565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612f12565b6107e1565b005b34801561033257600080fd5b5061033b610898565b6040516103489190612f88565b60405180910390f35b34801561035d57600080fd5b506103666108be565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612fa3565b610cf5565b005b34801561039d57600080fd5b506103a6610d94565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612fd0565b610e65565b6040516103dc9190612e6d565b60405180910390f35b3480156103f157600080fd5b5061040c6004803603810190610407919061308e565b610eb6565b005b34801561041a57600080fd5b50610423610ff0565b6040516104309190612e6d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190612fd0565b610ff6565b60405161046d9190612e6d565b60405180910390f35b34801561048257600080fd5b5061049d6004803603810190610498919061322c565b61100e565b005b3480156104ab57600080fd5b506104b4611138565b6040516104c19190612f88565b60405180910390f35b3480156104d657600080fd5b506104df611161565b6040516104ec9190612e6d565b60405180910390f35b34801561050157600080fd5b5061050a611167565b6040516105179190612ca4565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190612d6e565b6111a4565b6040516105549190612dc9565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612fa3565b6111c2565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612fd0565b611261565b6040516105ba9190612dc9565b60405180910390f35b3480156105cf57600080fd5b506105d8611281565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613275565b61135a565b60405161060e9190612e6d565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612fd0565b6113e1565b005b34801561064c57600080fd5b5061066760048036038101906106629190612fa3565b6115a2565b005b60606040518060400160405280601081526020017f4d7572616b616d6920466c6f7765727300000000000000000000000000000000815250905090565b60006106ba6106b3611641565b8484611649565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610706848484611812565b6107c784610712611641565b6107c285604051806060016040528060288152602001613dae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610778611641565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121429092919063ffffffff16565b611649565b600190509392505050565b60185481565b60006009905090565b6107e9611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90613301565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c6611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90613301565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190613336565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190613336565b6040518363ffffffff1660e01b8152600401610ac4929190613363565b6020604051808303816000875af1158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190613336565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000610b55611138565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cfd611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190613301565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd5611641565b73ffffffffffffffffffffffffffffffffffffffff161480610e4b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e33611641565b73ffffffffffffffffffffffffffffffffffffffff16145b610e5457600080fd5b6000479050610e62816121a6565b50565b6000610eaf600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612212565b9050919050565b610ebe611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290613301565b60405180910390fd5b60005b83839050811015610fea578160056000868685818110610f7157610f7061338c565b5b9050602002016020810190610f869190612fd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fe2906133ea565b915050610f4e565b50505050565b60165481565b60116020528060005260406000206000915090505481565b611016611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90613301565b60405180910390fd5b60005b8151811015611134576001601060008484815181106110c8576110c761338c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061112c906133ea565b9150506110a6565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d4b465300000000000000000000000000000000000000000000000000000000815250905090565b60006111b86111b1611641565b8484611812565b6001905092915050565b6111ca611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90613301565b60405180910390fd5b8060188190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c2611641565b73ffffffffffffffffffffffffffffffffffffffff1614806113385750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611320611641565b73ffffffffffffffffffffffffffffffffffffffff16145b61134157600080fd5b600061134c30610e65565b905061135781612280565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e9611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613301565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc906134a4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115aa611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90613301565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90613536565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171e906135c8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612e6d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118789061365a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906136ec565b60405180910390fd5b60008111611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061377e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119d75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119e057600080fd5b6119e8611138565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a565750611a26611138565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e4157601560149054906101000a900460ff16611ae557611a77611138565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613810565b60405180910390fd5b5b601654811115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061387c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bce5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061390e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cba5760175481611c6f84610e65565b611c79919061392e565b10611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906139d4565b60405180910390fd5b5b6000611cc530610e65565b9050600060185482101590506016548210611ce05760165491505b808015611cf8575060158054906101000a900460ff16155b8015611d525750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6a5750601560169054906101000a900460ff165b8015611dc05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e165750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e3e57611e2482612280565b60004790506000811115611e3c57611e3b476121a6565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ee85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f9b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f9a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fa95760009050612130565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120545750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121175750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561212f57600a54600c81905550600b54600d819055505b5b61213c848484846124f7565b50505050565b600083831115829061218a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121819190612ca4565b60405180910390fd5b506000838561219991906139f4565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561220e573d6000803e3d6000fd5b5050565b6000600654821115612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090613a9a565b60405180910390fd5b6000612263612524565b9050612278818461254f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b7576122b66130ee565b5b6040519080825280602002602001820160405280156122e55781602001602082028036833780820191505090505b50905030816000815181106122fd576122fc61338c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c89190613336565b816001815181106123dc576123db61338c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611649565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a7959493929190613bb3565b600060405180830381600087803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061250557612504612599565b5b6125108484846125d6565b8061251e5761251d6127a1565b5b50505050565b60008060006125316127b5565b91509150612548818361254f90919063ffffffff16565b9250505090565b600061259183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612811565b905092915050565b6000600c541480156125ad57506000600d54145b6125d457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125e887612874565b95509550955095509550955061264686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128dc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126db85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272781612984565b6127318483612a41565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161278e9190612e6d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506127e766038d7ea4c6800060065461254f90919063ffffffff16565b8210156128045760065466038d7ea4c6800093509350505061280d565b81819350935050505b9091565b60008083118290612858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284f9190612ca4565b60405180910390fd5b50600083856128679190613c3c565b9050809150509392505050565b60008060008060008060008060006128918a600c54600d54612a7b565b92509250925060006128a1612524565b905060008060006128b48e878787612b11565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061291e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612142565b905092915050565b6000808284612935919061392e565b90508381101561297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613cb9565b60405180910390fd5b8091505092915050565b600061298e612524565b905060006129a58284612b9a90919063ffffffff16565b90506129f981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a56826006546128dc90919063ffffffff16565b600681905550612a718160075461292690919063ffffffff16565b6007819055505050565b600080600080612aa76064612a99888a612b9a90919063ffffffff16565b61254f90919063ffffffff16565b90506000612ad16064612ac3888b612b9a90919063ffffffff16565b61254f90919063ffffffff16565b90506000612afa82612aec858c6128dc90919063ffffffff16565b6128dc90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2a8589612b9a90919063ffffffff16565b90506000612b418689612b9a90919063ffffffff16565b90506000612b588789612b9a90919063ffffffff16565b90506000612b8182612b7385876128dc90919063ffffffff16565b6128dc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612bac5760009050612c0e565b60008284612bba9190613cd9565b9050828482612bc99190613c3c565b14612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090613d8d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c4e578082015181840152602081019050612c33565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c7682612c14565b612c808185612c1f565b9350612c90818560208601612c30565b612c9981612c5a565b840191505092915050565b60006020820190508181036000830152612cbe8184612c6b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0582612cda565b9050919050565b612d1581612cfa565b8114612d2057600080fd5b50565b600081359050612d3281612d0c565b92915050565b6000819050919050565b612d4b81612d38565b8114612d5657600080fd5b50565b600081359050612d6881612d42565b92915050565b60008060408385031215612d8557612d84612cd0565b5b6000612d9385828601612d23565b9250506020612da485828601612d59565b9150509250929050565b60008115159050919050565b612dc381612dae565b82525050565b6000602082019050612dde6000830184612dba565b92915050565b6000819050919050565b6000612e09612e04612dff84612cda565b612de4565b612cda565b9050919050565b6000612e1b82612dee565b9050919050565b6000612e2d82612e10565b9050919050565b612e3d81612e22565b82525050565b6000602082019050612e586000830184612e34565b92915050565b612e6781612d38565b82525050565b6000602082019050612e826000830184612e5e565b92915050565b600080600060608486031215612ea157612ea0612cd0565b5b6000612eaf86828701612d23565b9350506020612ec086828701612d23565b9250506040612ed186828701612d59565b9150509250925092565b600060ff82169050919050565b612ef181612edb565b82525050565b6000602082019050612f0c6000830184612ee8565b92915050565b60008060008060808587031215612f2c57612f2b612cd0565b5b6000612f3a87828801612d59565b9450506020612f4b87828801612d59565b9350506040612f5c87828801612d59565b9250506060612f6d87828801612d59565b91505092959194509250565b612f8281612cfa565b82525050565b6000602082019050612f9d6000830184612f79565b92915050565b600060208284031215612fb957612fb8612cd0565b5b6000612fc784828501612d59565b91505092915050565b600060208284031215612fe657612fe5612cd0565b5b6000612ff484828501612d23565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261302257613021612ffd565b5b8235905067ffffffffffffffff81111561303f5761303e613002565b5b60208301915083602082028301111561305b5761305a613007565b5b9250929050565b61306b81612dae565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b6000806000604084860312156130a7576130a6612cd0565b5b600084013567ffffffffffffffff8111156130c5576130c4612cd5565b5b6130d18682870161300c565b935093505060206130e486828701613079565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61312682612c5a565b810181811067ffffffffffffffff82111715613145576131446130ee565b5b80604052505050565b6000613158612cc6565b9050613164828261311d565b919050565b600067ffffffffffffffff821115613184576131836130ee565b5b602082029050602081019050919050565b60006131a86131a384613169565b61314e565b905080838252602082019050602084028301858111156131cb576131ca613007565b5b835b818110156131f457806131e08882612d23565b8452602084019350506020810190506131cd565b5050509392505050565b600082601f83011261321357613212612ffd565b5b8135613223848260208601613195565b91505092915050565b60006020828403121561324257613241612cd0565b5b600082013567ffffffffffffffff8111156132605761325f612cd5565b5b61326c848285016131fe565b91505092915050565b6000806040838503121561328c5761328b612cd0565b5b600061329a85828601612d23565b92505060206132ab85828601612d23565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132eb602083612c1f565b91506132f6826132b5565b602082019050919050565b6000602082019050818103600083015261331a816132de565b9050919050565b60008151905061333081612d0c565b92915050565b60006020828403121561334c5761334b612cd0565b5b600061335a84828501613321565b91505092915050565b60006040820190506133786000830185612f79565b6133856020830184612f79565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133f582612d38565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613427576134266133bb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061348e602683612c1f565b915061349982613432565b604082019050919050565b600060208201905081810360008301526134bd81613481565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613520602483612c1f565b915061352b826134c4565b604082019050919050565b6000602082019050818103600083015261354f81613513565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135b2602283612c1f565b91506135bd82613556565b604082019050919050565b600060208201905081810360008301526135e1816135a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613644602583612c1f565b915061364f826135e8565b604082019050919050565b6000602082019050818103600083015261367381613637565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136d6602383612c1f565b91506136e18261367a565b604082019050919050565b60006020820190508181036000830152613705816136c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613768602983612c1f565b91506137738261370c565b604082019050919050565b600060208201905081810360008301526137978161375b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137fa603f83612c1f565b91506138058261379e565b604082019050919050565b60006020820190508181036000830152613829816137ed565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613866601c83612c1f565b915061387182613830565b602082019050919050565b6000602082019050818103600083015261389581613859565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138f8602383612c1f565b91506139038261389c565b604082019050919050565b60006020820190508181036000830152613927816138eb565b9050919050565b600061393982612d38565b915061394483612d38565b925082820190508082111561395c5761395b6133bb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139be602383612c1f565b91506139c982613962565b604082019050919050565b600060208201905081810360008301526139ed816139b1565b9050919050565b60006139ff82612d38565b9150613a0a83612d38565b9250828203905081811115613a2257613a216133bb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a84602a83612c1f565b9150613a8f82613a28565b604082019050919050565b60006020820190508181036000830152613ab381613a77565b9050919050565b6000819050919050565b6000613adf613ada613ad584613aba565b612de4565b612d38565b9050919050565b613aef81613ac4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b2a81612cfa565b82525050565b6000613b3c8383613b21565b60208301905092915050565b6000602082019050919050565b6000613b6082613af5565b613b6a8185613b00565b9350613b7583613b11565b8060005b83811015613ba6578151613b8d8882613b30565b9750613b9883613b48565b925050600181019050613b79565b5085935050505092915050565b600060a082019050613bc86000830188612e5e565b613bd56020830187613ae6565b8181036040830152613be78186613b55565b9050613bf66060830185612f79565b613c036080830184612e5e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c4782612d38565b9150613c5283612d38565b925082613c6257613c61613c0d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ca3601b83612c1f565b9150613cae82613c6d565b602082019050919050565b60006020820190508181036000830152613cd281613c96565b9050919050565b6000613ce482612d38565b9150613cef83612d38565b9250828202613cfd81612d38565b91508282048414831517613d1457613d136133bb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d77602183612c1f565b9150613d8282613d1b565b604082019050919050565b60006020820190508181036000830152613da681613d6a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122039a931a3a017b1c60cde8f495202d2a07ee4b4e1b00a3dd8b415d984251e808664736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063789dfefe116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105c3578063dd62ed3e146105da578063f2fde38b14610617578063fc588c0414610640576101a7565b8063a9059cbb14610520578063a9e282b81461055d578063bfd7928414610586576101a7565b80637fd7d062116100c65780637fd7d062146104765780638da5cb5b1461049f5780638f9a55c0146104ca57806395d89b41146104f5576101a7565b8063789dfefe146103e55780637d1db4a51461040e5780637f2feddc14610439576101a7565b8063313ce5671161015957806359a945e91161013357806359a945e9146103515780635d0044ca146103685780636fc3eaec1461039157806370a08231146103a8576101a7565b8063313ce567146102d257806340eed21d146102fd57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610669565b6040516101ce9190612ca4565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612d6e565b6106a6565b60405161020b9190612dc9565b60405180910390f35b34801561022057600080fd5b506102296106c4565b6040516102369190612e43565b60405180910390f35b34801561024b57600080fd5b506102546106ea565b6040516102619190612e6d565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612e88565b6106f9565b60405161029e9190612dc9565b60405180910390f35b3480156102b357600080fd5b506102bc6107d2565b6040516102c99190612e6d565b60405180910390f35b3480156102de57600080fd5b506102e76107d8565b6040516102f49190612ef7565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190612f12565b6107e1565b005b34801561033257600080fd5b5061033b610898565b6040516103489190612f88565b60405180910390f35b34801561035d57600080fd5b506103666108be565b005b34801561037457600080fd5b5061038f600480360381019061038a9190612fa3565b610cf5565b005b34801561039d57600080fd5b506103a6610d94565b005b3480156103b457600080fd5b506103cf60048036038101906103ca9190612fd0565b610e65565b6040516103dc9190612e6d565b60405180910390f35b3480156103f157600080fd5b5061040c6004803603810190610407919061308e565b610eb6565b005b34801561041a57600080fd5b50610423610ff0565b6040516104309190612e6d565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190612fd0565b610ff6565b60405161046d9190612e6d565b60405180910390f35b34801561048257600080fd5b5061049d6004803603810190610498919061322c565b61100e565b005b3480156104ab57600080fd5b506104b4611138565b6040516104c19190612f88565b60405180910390f35b3480156104d657600080fd5b506104df611161565b6040516104ec9190612e6d565b60405180910390f35b34801561050157600080fd5b5061050a611167565b6040516105179190612ca4565b60405180910390f35b34801561052c57600080fd5b5061054760048036038101906105429190612d6e565b6111a4565b6040516105549190612dc9565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612fa3565b6111c2565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612fd0565b611261565b6040516105ba9190612dc9565b60405180910390f35b3480156105cf57600080fd5b506105d8611281565b005b3480156105e657600080fd5b5061060160048036038101906105fc9190613275565b61135a565b60405161060e9190612e6d565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190612fd0565b6113e1565b005b34801561064c57600080fd5b5061066760048036038101906106629190612fa3565b6115a2565b005b60606040518060400160405280601081526020017f4d7572616b616d6920466c6f7765727300000000000000000000000000000000815250905090565b60006106ba6106b3611641565b8484611649565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b6000610706848484611812565b6107c784610712611641565b6107c285604051806060016040528060288152602001613dae60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610778611641565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121429092919063ffffffff16565b611649565b600190509392505050565b60185481565b60006009905090565b6107e9611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90613301565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108c6611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90613301565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c9190613336565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190613336565b6040518363ffffffff1660e01b8152600401610ac4929190613363565b6020604051808303816000875af1158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190613336565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000610b55611138565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610cfd611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8190613301565b60405180910390fd5b8060178190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd5611641565b73ffffffffffffffffffffffffffffffffffffffff161480610e4b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e33611641565b73ffffffffffffffffffffffffffffffffffffffff16145b610e5457600080fd5b6000479050610e62816121a6565b50565b6000610eaf600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612212565b9050919050565b610ebe611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290613301565b60405180910390fd5b60005b83839050811015610fea578160056000868685818110610f7157610f7061338c565b5b9050602002016020810190610f869190612fd0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fe2906133ea565b915050610f4e565b50505050565b60165481565b60116020528060005260406000206000915090505481565b611016611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90613301565b60405180910390fd5b60005b8151811015611134576001601060008484815181106110c8576110c761338c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061112c906133ea565b9150506110a6565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600481526020017f4d4b465300000000000000000000000000000000000000000000000000000000815250905090565b60006111b86111b1611641565b8484611812565b6001905092915050565b6111ca611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90613301565b60405180910390fd5b8060188190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112c2611641565b73ffffffffffffffffffffffffffffffffffffffff1614806113385750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611320611641565b73ffffffffffffffffffffffffffffffffffffffff16145b61134157600080fd5b600061134c30610e65565b905061135781612280565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113e9611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90613301565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114dc906134a4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6115aa611641565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90613301565b60405180910390fd5b8060168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116af90613536565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171e906135c8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118059190612e6d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118789061365a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e7906136ec565b60405180910390fd5b60008111611933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192a9061377e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119d75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119e057600080fd5b6119e8611138565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a565750611a26611138565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e4157601560149054906101000a900460ff16611ae557611a77611138565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613810565b60405180910390fd5b5b601654811115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b219061387c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bce5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c049061390e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cba5760175481611c6f84610e65565b611c79919061392e565b10611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906139d4565b60405180910390fd5b5b6000611cc530610e65565b9050600060185482101590506016548210611ce05760165491505b808015611cf8575060158054906101000a900460ff16155b8015611d525750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6a5750601560169054906101000a900460ff165b8015611dc05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e165750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e3e57611e2482612280565b60004790506000811115611e3c57611e3b476121a6565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ee85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f9b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f9a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fa95760009050612130565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120545750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561206c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121175750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561212f57600a54600c81905550600b54600d819055505b5b61213c848484846124f7565b50505050565b600083831115829061218a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121819190612ca4565b60405180910390fd5b506000838561219991906139f4565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561220e573d6000803e3d6000fd5b5050565b6000600654821115612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225090613a9a565b60405180910390fd5b6000612263612524565b9050612278818461254f90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122b7576122b66130ee565b5b6040519080825280602002602001820160405280156122e55781602001602082028036833780820191505090505b50905030816000815181106122fd576122fc61338c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c89190613336565b816001815181106123dc576123db61338c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611649565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124a7959493929190613bb3565b600060405180830381600087803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061250557612504612599565b5b6125108484846125d6565b8061251e5761251d6127a1565b5b50505050565b60008060006125316127b5565b91509150612548818361254f90919063ffffffff16565b9250505090565b600061259183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612811565b905092915050565b6000600c541480156125ad57506000600d54145b6125d457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806125e887612874565b95509550955095509550955061264686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128dc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126db85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272781612984565b6127318483612a41565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161278e9190612e6d565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c6800090506127e766038d7ea4c6800060065461254f90919063ffffffff16565b8210156128045760065466038d7ea4c6800093509350505061280d565b81819350935050505b9091565b60008083118290612858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284f9190612ca4565b60405180910390fd5b50600083856128679190613c3c565b9050809150509392505050565b60008060008060008060008060006128918a600c54600d54612a7b565b92509250925060006128a1612524565b905060008060006128b48e878787612b11565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061291e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612142565b905092915050565b6000808284612935919061392e565b90508381101561297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297190613cb9565b60405180910390fd5b8091505092915050565b600061298e612524565b905060006129a58284612b9a90919063ffffffff16565b90506129f981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461292690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a56826006546128dc90919063ffffffff16565b600681905550612a718160075461292690919063ffffffff16565b6007819055505050565b600080600080612aa76064612a99888a612b9a90919063ffffffff16565b61254f90919063ffffffff16565b90506000612ad16064612ac3888b612b9a90919063ffffffff16565b61254f90919063ffffffff16565b90506000612afa82612aec858c6128dc90919063ffffffff16565b6128dc90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b2a8589612b9a90919063ffffffff16565b90506000612b418689612b9a90919063ffffffff16565b90506000612b588789612b9a90919063ffffffff16565b90506000612b8182612b7385876128dc90919063ffffffff16565b6128dc90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612bac5760009050612c0e565b60008284612bba9190613cd9565b9050828482612bc99190613c3c565b14612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090613d8d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c4e578082015181840152602081019050612c33565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c7682612c14565b612c808185612c1f565b9350612c90818560208601612c30565b612c9981612c5a565b840191505092915050565b60006020820190508181036000830152612cbe8184612c6b565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d0582612cda565b9050919050565b612d1581612cfa565b8114612d2057600080fd5b50565b600081359050612d3281612d0c565b92915050565b6000819050919050565b612d4b81612d38565b8114612d5657600080fd5b50565b600081359050612d6881612d42565b92915050565b60008060408385031215612d8557612d84612cd0565b5b6000612d9385828601612d23565b9250506020612da485828601612d59565b9150509250929050565b60008115159050919050565b612dc381612dae565b82525050565b6000602082019050612dde6000830184612dba565b92915050565b6000819050919050565b6000612e09612e04612dff84612cda565b612de4565b612cda565b9050919050565b6000612e1b82612dee565b9050919050565b6000612e2d82612e10565b9050919050565b612e3d81612e22565b82525050565b6000602082019050612e586000830184612e34565b92915050565b612e6781612d38565b82525050565b6000602082019050612e826000830184612e5e565b92915050565b600080600060608486031215612ea157612ea0612cd0565b5b6000612eaf86828701612d23565b9350506020612ec086828701612d23565b9250506040612ed186828701612d59565b9150509250925092565b600060ff82169050919050565b612ef181612edb565b82525050565b6000602082019050612f0c6000830184612ee8565b92915050565b60008060008060808587031215612f2c57612f2b612cd0565b5b6000612f3a87828801612d59565b9450506020612f4b87828801612d59565b9350506040612f5c87828801612d59565b9250506060612f6d87828801612d59565b91505092959194509250565b612f8281612cfa565b82525050565b6000602082019050612f9d6000830184612f79565b92915050565b600060208284031215612fb957612fb8612cd0565b5b6000612fc784828501612d59565b91505092915050565b600060208284031215612fe657612fe5612cd0565b5b6000612ff484828501612d23565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261302257613021612ffd565b5b8235905067ffffffffffffffff81111561303f5761303e613002565b5b60208301915083602082028301111561305b5761305a613007565b5b9250929050565b61306b81612dae565b811461307657600080fd5b50565b60008135905061308881613062565b92915050565b6000806000604084860312156130a7576130a6612cd0565b5b600084013567ffffffffffffffff8111156130c5576130c4612cd5565b5b6130d18682870161300c565b935093505060206130e486828701613079565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61312682612c5a565b810181811067ffffffffffffffff82111715613145576131446130ee565b5b80604052505050565b6000613158612cc6565b9050613164828261311d565b919050565b600067ffffffffffffffff821115613184576131836130ee565b5b602082029050602081019050919050565b60006131a86131a384613169565b61314e565b905080838252602082019050602084028301858111156131cb576131ca613007565b5b835b818110156131f457806131e08882612d23565b8452602084019350506020810190506131cd565b5050509392505050565b600082601f83011261321357613212612ffd565b5b8135613223848260208601613195565b91505092915050565b60006020828403121561324257613241612cd0565b5b600082013567ffffffffffffffff8111156132605761325f612cd5565b5b61326c848285016131fe565b91505092915050565b6000806040838503121561328c5761328b612cd0565b5b600061329a85828601612d23565b92505060206132ab85828601612d23565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132eb602083612c1f565b91506132f6826132b5565b602082019050919050565b6000602082019050818103600083015261331a816132de565b9050919050565b60008151905061333081612d0c565b92915050565b60006020828403121561334c5761334b612cd0565b5b600061335a84828501613321565b91505092915050565b60006040820190506133786000830185612f79565b6133856020830184612f79565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133f582612d38565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613427576134266133bb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061348e602683612c1f565b915061349982613432565b604082019050919050565b600060208201905081810360008301526134bd81613481565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613520602483612c1f565b915061352b826134c4565b604082019050919050565b6000602082019050818103600083015261354f81613513565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135b2602283612c1f565b91506135bd82613556565b604082019050919050565b600060208201905081810360008301526135e1816135a5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613644602583612c1f565b915061364f826135e8565b604082019050919050565b6000602082019050818103600083015261367381613637565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136d6602383612c1f565b91506136e18261367a565b604082019050919050565b60006020820190508181036000830152613705816136c9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613768602983612c1f565b91506137738261370c565b604082019050919050565b600060208201905081810360008301526137978161375b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137fa603f83612c1f565b91506138058261379e565b604082019050919050565b60006020820190508181036000830152613829816137ed565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613866601c83612c1f565b915061387182613830565b602082019050919050565b6000602082019050818103600083015261389581613859565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138f8602383612c1f565b91506139038261389c565b604082019050919050565b60006020820190508181036000830152613927816138eb565b9050919050565b600061393982612d38565b915061394483612d38565b925082820190508082111561395c5761395b6133bb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139be602383612c1f565b91506139c982613962565b604082019050919050565b600060208201905081810360008301526139ed816139b1565b9050919050565b60006139ff82612d38565b9150613a0a83612d38565b9250828203905081811115613a2257613a216133bb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a84602a83612c1f565b9150613a8f82613a28565b604082019050919050565b60006020820190508181036000830152613ab381613a77565b9050919050565b6000819050919050565b6000613adf613ada613ad584613aba565b612de4565b612d38565b9050919050565b613aef81613ac4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b2a81612cfa565b82525050565b6000613b3c8383613b21565b60208301905092915050565b6000602082019050919050565b6000613b6082613af5565b613b6a8185613b00565b9350613b7583613b11565b8060005b83811015613ba6578151613b8d8882613b30565b9750613b9883613b48565b925050600181019050613b79565b5085935050505092915050565b600060a082019050613bc86000830188612e5e565b613bd56020830187613ae6565b8181036040830152613be78186613b55565b9050613bf66060830185612f79565b613c036080830184612e5e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c4782612d38565b9150613c5283612d38565b925082613c6257613c61613c0d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ca3601b83612c1f565b9150613cae82613c6d565b602082019050919050565b60006020820190508181036000830152613cd281613c96565b9050919050565b6000613ce482612d38565b9150613cef83612d38565b9250828202613cfd81612d38565b91508282048414831517613d1457613d136133bb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d77602183612c1f565b9150613d8282613d1b565b604082019050919050565b60006020820190508181036000830152613da681613d6a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122039a931a3a017b1c60cde8f495202d2a07ee4b4e1b00a3dd8b415d984251e808664736f6c63430008110033

Deployed Bytecode Sourcemap

5406:13225:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7397:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8322:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6755:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7674:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8523:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7057:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7583:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17649:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6803:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13010:557;;;;;;;;;;;;;:::i;:::-;;18293:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13819:235;;;;;;;;;;;;;:::i;:::-;;7777:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18412:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6952:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6497:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14062:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2833:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7003:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7488:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7923:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18018:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6459:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13575:236;;;;;;;;;;;;;:::i;:::-;;8130:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3049:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18183:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7397:83;7434:13;7467:5;;;;;;;;;;;;;;;;;7460:12;;7397:83;:::o;8322:193::-;8424:4;8446:39;8455:12;:10;:12::i;:::-;8469:7;8478:6;8446:8;:39::i;:::-;8503:4;8496:11;;8322:193;;;;:::o;6755:41::-;;;;;;;;;;;;;:::o;7674:95::-;7727:7;5957:15;7747:14;;7674:95;:::o;8523:446::-;8655:4;8672:36;8682:6;8690:9;8701:6;8672:9;:36::i;:::-;8719:220;8742:6;8763:12;:10;:12::i;:::-;8790:138;8846:6;8790:138;;;;;;;;;;;;;;;;;:11;:19;8802:6;8790:19;;;;;;;;;;;;;;;:33;8810:12;:10;:12::i;:::-;8790:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8719:8;:220::i;:::-;8957:4;8950:11;;8523:446;;;;;:::o;7057:47::-;;;;:::o;7583:83::-;7624:5;5631:1;7642:16;;7583:83;:::o;17649:317::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17818:15:::1;17799:16;:34;;;;17864:16;17844:17;:36;;;;17905:10;17891:11;:24;;;;17944:14;17926:15;:32;;;;17649:317:::0;;;;:::o;6803:28::-;;;;;;;;;;;;;:::o;13010:557::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13067:35:::1;13124:42;13067:100;;13196:16;13178:15;;:34;;;;;;;;;;;;;;;;;;13257:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13239:66;;;13314:4;13321:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13239:106;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13223:13;;:122;;;;;;;;;;;;;;;;;;13388:4;13358:18;:27;13377:7;:5;:7::i;:::-;13358:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13439:4;13403:18;:33;13430:4;13403:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;13496:4;13454:18;:39;13473:19;;;;;;;;;;;13454:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13551:4;13511:18;:37;13530:17;;;;;;;;;;;13511:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;13054:513;13010:557::o:0;18293:111::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18383:13:::1;18366:14;:30;;;;18293:111:::0;:::o;13819:235::-;13885:19;;;;;;;;;;;13869:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13924:17;;;;;;;;;;;13908:33;;:12;:10;:12::i;:::-;:33;;;13869:72;13861:81;;;;;;13953:26;13982:21;13953:50;;14014:32;14027:18;14014:12;:32::i;:::-;13850:204;13819:235::o;7777:138::-;7843:7;7870:37;7890:7;:16;7898:7;7890:16;;;;;;;;;;;;;;;;7870:19;:37::i;:::-;7863:44;;7777:138;;;:::o;18412:214::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18509:9:::1;18505:114;18528:8;;:15;;18524:1;:19;18505:114;;;18599:8;18565:18;:31;18584:8;;18593:1;18584:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18565:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18545:3;;;;;:::i;:::-;;;;18505:114;;;;18412:214:::0;;;:::o;6952:44::-;;;;:::o;6497:43::-;;;;;;;;;;;;;;;;;:::o;14062:169::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14138:9:::1;14133:91;14157:5;:12;14153:1;:16;14133:91;;;14208:4;14191;:14;14196:5;14202:1;14196:8;;;;;;;;:::i;:::-;;;;;;;;14191:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14171:3;;;;;:::i;:::-;;;;14133:91;;;;14062:169:::0;:::o;2833:79::-;2871:7;2898:6;;;;;;;;;;;2891:13;;2833:79;:::o;7003:47::-;;;;:::o;7488:87::-;7527:13;7560:7;;;;;;;;;;;;;;;;;7553:14;;7488:87;:::o;7923:199::-;8028:4;8050:42;8060:12;:10;:12::i;:::-;8074:9;8085:6;8050:9;:42::i;:::-;8110:4;8103:11;;7923:199;;;;:::o;18018:124::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18116:18:::1;18094:19;:40;;;;18018:124:::0;:::o;6459:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13575:236::-;13641:19;;;;;;;;;;;13625:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13680:17;;;;;;;;;;;13664:33;;:12;:10;:12::i;:::-;:33;;;13625:72;13617:81;;;;;;13709:23;13735:24;13753:4;13735:9;:24::i;:::-;13709:50;;13770:33;13787:15;13770:16;:33::i;:::-;13606:205;13575:236::o;8130:184::-;8247:7;8279:11;:18;8291:5;8279:18;;;;;;;;;;;;;;;:27;8298:7;8279:27;;;;;;;;;;;;;;;;8272:34;;8130:184;;;;:::o;3049:244::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3158:1:::1;3138:22;;:8;:22;;::::0;3130:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3248:8;3219:38;;3240:6;::::0;::::1;;;;;;;;3219:38;;;;;;;;;;;;3277:8;3268:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3049:244:::0;:::o;18183:102::-;2970:12;:10;:12::i;:::-;2960:22;;:6;;;;;;;;;;:22;;;2952:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18266:11:::1;18251:12;:26;;;;18183:102:::0;:::o;1544:98::-;1597:7;1624:10;1617:17;;1544:98;:::o;9688:369::-;9832:1;9815:19;;:5;:19;;;9807:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9913:1;9894:21;;:7;:21;;;9886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9995:6;9965:11;:18;9977:5;9965:18;;;;;;;;;;;;;;;:27;9984:7;9965:27;;;;;;;;;;;;;;;:36;;;;10033:7;10017:32;;10026:5;10017:32;;;10042:6;10017:32;;;;;;:::i;:::-;;;;;;;;9688:369;;;:::o;10065:2337::-;10203:1;10187:18;;:4;:18;;;10179:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10280:1;10266:16;;:2;:16;;;10258:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10350:1;10341:6;:10;10333:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10417:4;:10;10422:4;10417:10;;;;;;;;;;;;;;;;;;;;;;;;;10416:11;:24;;;;;10432:4;:8;10437:2;10432:8;;;;;;;;;;;;;;;;;;;;;;;;;10431:9;10416:24;10408:33;;;;;;10466:7;:5;:7::i;:::-;10458:15;;:4;:15;;;;:32;;;;;10483:7;:5;:7::i;:::-;10477:13;;:2;:13;;;;10458:32;10454:1259;;;10547:11;;;;;;;;;;;10542:144;;10595:7;:5;:7::i;:::-;10587:15;;:4;:15;;;10579:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10542:144;10720:12;;10710:6;:22;;10702:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10789:4;:10;10794:4;10789:10;;;;;;;;;;;;;;;;;;;;;;;;;10788:11;:24;;;;;10804:4;:8;10809:2;10804:8;;;;;;;;;;;;;;;;;;;;;;;;;10803:9;10788:24;10780:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10878:13;;;;;;;;;;;10872:19;;:2;:19;;;10869:146;;10945:14;;10936:6;10920:13;10930:2;10920:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10912:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10869:146;11031:28;11062:24;11080:4;11062:9;:24::i;:::-;11031:55;;11101:12;11140:19;;11116:20;:43;;11101:58;;11203:12;;11179:20;:36;11176:124;;11272:12;;11249:35;;11176:124;11320:7;:18;;;;;11332:6;;;;;;;;;;11331:7;11320:18;:43;;;;;11350:13;;;;;;;;;;;11342:21;;:4;:21;;;;11320:43;:58;;;;;11367:11;;;;;;;;;;;11320:58;:87;;;;;11383:18;:24;11402:4;11383:24;;;;;;;;;;;;;;;;;;;;;;;;;11382:25;11320:87;:114;;;;;11412:18;:22;11431:2;11412:22;;;;;;;;;;;;;;;;;;;;;;;;;11411:23;11320:114;11316:386;;;11455:38;11472:20;11455:16;:38::i;:::-;11512:26;11541:21;11512:50;;11606:1;11585:18;:22;11581:106;;;11632:35;11645:21;11632:12;:35::i;:::-;11581:106;11436:266;11316:386;10492:1221;;10454:1259;11725:12;11740:4;11725:19;;11772:18;:24;11791:4;11772:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11800:18;:22;11819:2;11800:22;;;;;;;;;;;;;;;;;;;;;;;;;11772:50;11771:102;;;;11836:13;;;;;;;;;;;11828:21;;:4;:21;;;;:44;;;;;11859:13;;;;;;;;;;;11853:19;;:2;:19;;;;11828:44;11771:102;11767:574;;;11900:5;11890:15;;11767:574;;;11965:13;;;;;;;;;;;11957:21;;:4;:21;;;:55;;;;;11996:15;;;;;;;;;;;11982:30;;:2;:30;;;;11957:55;11954:169;;;12047:16;;12033:11;:30;;;;12096:11;;12082;:25;;;;11954:169;12163:13;;;;;;;;;;;12157:19;;:2;:19;;;:55;;;;;12196:15;;;;;;;;;;;12180:32;;:4;:32;;;;12157:55;12153:175;;;12247:17;;12233:11;:31;;;;12297:15;;12283:11;:29;;;;12153:175;11767:574;12353:41;12368:4;12374:2;12378:6;12386:7;12353:14;:41::i;:::-;10168:2234;10065:2337;;;:::o;3657:224::-;3777:7;3810:1;3805;:6;;3813:12;3797:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3837:9;3853:1;3849;:5;;;;:::i;:::-;3837:17;;3872:1;3865:8;;;3657:224;;;;;:::o;12901:99::-;12958:17;;;;;;;;;;;:26;;:34;12985:6;12958:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12901:99;:::o;8977:323::-;9072:7;9130;;9119;:18;;9097:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9218:19;9240:10;:8;:10::i;:::-;9218:32;;9268:24;9280:11;9268:7;:11;;:24;;;;:::i;:::-;9261:31;;;8977:323;;;:::o;12410:483::-;7207:4;7198:6;;:13;;;;;;;;;;;;;;;;;;12488:21:::1;12526:1;12512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12488:40;;12557:4;12539;12544:1;12539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12573:4;12578:1;12573:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12616:62;12633:4;12648:15;;;;;;;;;;;12666:11;12616:8;:62::i;:::-;12689:15;;;;;;;;;;;:66;;;12770:11;12796:1;12812:4;12839;12859:15;12689:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12477:416;7243:5:::0;7234:6;;:14;;;;;;;;;;;;;;;;;;12410:483;:::o;14241:282::-;14397:7;14392:28;;14406:14;:12;:14::i;:::-;14392:28;14431:44;14449:6;14457:9;14468:6;14431:17;:44::i;:::-;14491:7;14486:29;;14500:15;:13;:15::i;:::-;14486:29;14241:282;;;;:::o;17212:164::-;17254:7;17275:15;17292;17311:19;:17;:19::i;:::-;17274:56;;;;17348:20;17360:7;17348;:11;;:20;;;;:::i;:::-;17341:27;;;;17212:164;:::o;4143:132::-;4201:7;4228:39;4232:1;4235;4228:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4221:46;;4143:132;;;;:::o;9308:239::-;9370:1;9355:11;;:16;:36;;;;;9390:1;9375:11;;:16;9355:36;9393:7;9351:49;9434:11;;9412:19;:33;;;;9474:11;;9456:15;:29;;;;9512:1;9498:11;:15;;;;9538:1;9524:11;:15;;;;9308:239;:::o;14531:610::-;14678:15;14708:23;14746:12;14773:23;14811:12;14838:13;14865:19;14876:7;14865:10;:19::i;:::-;14663:221;;;;;;;;;;;;14913:28;14933:7;14913;:15;14921:6;14913:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14895:7;:15;14903:6;14895:15;;;;;;;;;;;;;;;:46;;;;14973:39;14996:15;14973:7;:18;14981:9;14973:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14952:7;:18;14960:9;14952:18;;;;;;;;;;;;;;;:60;;;;15023:16;15033:5;15023:9;:16::i;:::-;15050:23;15062:4;15068;15050:11;:23::i;:::-;15106:9;15089:44;;15098:6;15089:44;;;15117:15;15089:44;;;;;;:::i;:::-;;;;;;;;14652:489;;;;;;14531:610;;;:::o;9555:125::-;9613:19;;9599:11;:33;;;;9657:15;;9643:11;:29;;;;9555:125::o;17384:257::-;17435:7;17444;17464:15;17482:7;;17464:25;;17500:15;5957;17500:25;;17550:20;5957:15;17550:7;;:11;;:20;;;;:::i;:::-;17540:7;:30;17536:61;;;17580:7;;5957:15;17572:25;;;;;;;;17536:61;17616:7;17625;17608:25;;;;;;17384:257;;;:::o;4283:223::-;4403:7;4435:1;4431;:5;4438:12;4423:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4462:9;4478:1;4474;:5;;;;:::i;:::-;4462:17;;4497:1;4490:8;;;4283:223;;;;;:::o;15560:621::-;15660:7;15682;15704;15726;15748;15770;15806:23;15831:12;15845:13;15875:46;15887:7;15896:11;;15909;;15875;:46::i;:::-;15805:116;;;;;;15932:19;15954:10;:8;:10::i;:::-;15932:32;;15976:15;15993:23;16018:12;16047:46;16059:7;16068:4;16074:5;16081:11;16047;:46::i;:::-;15975:118;;;;;;16112:7;16121:15;16138:4;16144:15;16161:4;16167:5;16104:69;;;;;;;;;;;;;;;;;;;15560:621;;;;;;;:::o;3513:136::-;3571:7;3598:43;3602:1;3605;3598:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3591:50;;3513:136;;;;:::o;3326:179::-;3384:7;3404:9;3420:1;3416;:5;;;;:::i;:::-;3404:17;;3445:1;3440;:6;;3432:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3496:1;3489:8;;;3326:179;;;;:::o;15149:211::-;15202:19;15224:10;:8;:10::i;:::-;15202:32;;15245:13;15261:22;15271:11;15261:5;:9;;:22;;;;:::i;:::-;15245:38;;15319:33;15346:5;15319:7;:22;15335:4;15319:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15294:7;:22;15310:4;15294:22;;;;;;;;;;;;;;;:58;;;;15191:169;;15149:211;:::o;15368:147::-;15446:17;15458:4;15446:7;;:11;;:17;;;;:::i;:::-;15436:7;:27;;;;15487:20;15502:4;15487:10;;:14;;:20;;;;:::i;:::-;15474:10;:33;;;;15368:147;;:::o;16189:473::-;16360:7;16382;16404;16439:12;16454:32;16482:3;16454:23;16466:10;16454:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;16439:47;;16497:13;16513:28;16537:3;16513:19;16525:6;16513:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16497:44;;16552:23;16578:28;16600:5;16578:17;16590:4;16578:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16552:54;;16625:15;16642:4;16648:5;16617:37;;;;;;;;;16189:473;;;;;;;:::o;16670:534::-;16864:7;16886;16908;16943:15;16961:24;16973:11;16961:7;:11;;:24;;;;:::i;:::-;16943:42;;16996:12;17011:21;17020:11;17011:4;:8;;:21;;;;:::i;:::-;16996:36;;17043:13;17059:22;17069:11;17059:5;:9;;:22;;;;:::i;:::-;17043:38;;17092:23;17118:28;17140:5;17118:17;17130:4;17118:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17092:54;;17165:7;17174:15;17191:4;17157:39;;;;;;;;;;16670:534;;;;;;;;:::o;3889:246::-;3947:7;3976:1;3971;:6;3967:47;;4001:1;3994:8;;;;3967:47;4024:9;4040:1;4036;:5;;;;:::i;:::-;4024:17;;4069:1;4064;4060;:5;;;;:::i;:::-;:10;4052:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4126:1;4119:8;;;3889:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:765::-;5912:6;5920;5928;5936;5985:3;5973:9;5964:7;5960:23;5956:33;5953:120;;;5992:79;;:::i;:::-;5953:120;6112:1;6137:53;6182:7;6173:6;6162:9;6158:22;6137:53;:::i;:::-;6127:63;;6083:117;6239:2;6265:53;6310:7;6301:6;6290:9;6286:22;6265:53;:::i;:::-;6255:63;;6210:118;6367:2;6393:53;6438:7;6429:6;6418:9;6414:22;6393:53;:::i;:::-;6383:63;;6338:118;6495:2;6521:53;6566:7;6557:6;6546:9;6542:22;6521:53;:::i;:::-;6511:63;;6466:118;5826:765;;;;;;;:::o;6597:118::-;6684:24;6702:5;6684:24;:::i;:::-;6679:3;6672:37;6597:118;;:::o;6721:222::-;6814:4;6852:2;6841:9;6837:18;6829:26;;6865:71;6933:1;6922:9;6918:17;6909:6;6865:71;:::i;:::-;6721:222;;;;:::o;6949:329::-;7008:6;7057:2;7045:9;7036:7;7032:23;7028:32;7025:119;;;7063:79;;:::i;:::-;7025:119;7183:1;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7154:117;6949:329;;;;:::o;7284:::-;7343:6;7392:2;7380:9;7371:7;7367:23;7363:32;7360:119;;;7398:79;;:::i;:::-;7360:119;7518:1;7543:53;7588:7;7579:6;7568:9;7564:22;7543:53;:::i;:::-;7533:63;;7489:117;7284:329;;;;:::o;7619:117::-;7728:1;7725;7718:12;7742:117;7851:1;7848;7841:12;7865:117;7974:1;7971;7964:12;8005:568;8078:8;8088:6;8138:3;8131:4;8123:6;8119:17;8115:27;8105:122;;8146:79;;:::i;:::-;8105:122;8259:6;8246:20;8236:30;;8289:18;8281:6;8278:30;8275:117;;;8311:79;;:::i;:::-;8275:117;8425:4;8417:6;8413:17;8401:29;;8479:3;8471:4;8463:6;8459:17;8449:8;8445:32;8442:41;8439:128;;;8486:79;;:::i;:::-;8439:128;8005:568;;;;;:::o;8579:116::-;8649:21;8664:5;8649:21;:::i;:::-;8642:5;8639:32;8629:60;;8685:1;8682;8675:12;8629:60;8579:116;:::o;8701:133::-;8744:5;8782:6;8769:20;8760:29;;8798:30;8822:5;8798:30;:::i;:::-;8701:133;;;;:::o;8840:698::-;8932:6;8940;8948;8997:2;8985:9;8976:7;8972:23;8968:32;8965:119;;;9003:79;;:::i;:::-;8965:119;9151:1;9140:9;9136:17;9123:31;9181:18;9173:6;9170:30;9167:117;;;9203:79;;:::i;:::-;9167:117;9316:80;9388:7;9379:6;9368:9;9364:22;9316:80;:::i;:::-;9298:98;;;;9094:312;9445:2;9471:50;9513:7;9504:6;9493:9;9489:22;9471:50;:::i;:::-;9461:60;;9416:115;8840:698;;;;;:::o;9544:180::-;9592:77;9589:1;9582:88;9689:4;9686:1;9679:15;9713:4;9710:1;9703:15;9730:281;9813:27;9835:4;9813:27;:::i;:::-;9805:6;9801:40;9943:6;9931:10;9928:22;9907:18;9895:10;9892:34;9889:62;9886:88;;;9954:18;;:::i;:::-;9886:88;9994:10;9990:2;9983:22;9773:238;9730:281;;:::o;10017:129::-;10051:6;10078:20;;:::i;:::-;10068:30;;10107:33;10135:4;10127:6;10107:33;:::i;:::-;10017:129;;;:::o;10152:311::-;10229:4;10319:18;10311:6;10308:30;10305:56;;;10341:18;;:::i;:::-;10305:56;10391:4;10383:6;10379:17;10371:25;;10451:4;10445;10441:15;10433:23;;10152:311;;;:::o;10486:710::-;10582:5;10607:81;10623:64;10680:6;10623:64;:::i;:::-;10607:81;:::i;:::-;10598:90;;10708:5;10737:6;10730:5;10723:21;10771:4;10764:5;10760:16;10753:23;;10824:4;10816:6;10812:17;10804:6;10800:30;10853:3;10845:6;10842:15;10839:122;;;10872:79;;:::i;:::-;10839:122;10987:6;10970:220;11004:6;10999:3;10996:15;10970:220;;;11079:3;11108:37;11141:3;11129:10;11108:37;:::i;:::-;11103:3;11096:50;11175:4;11170:3;11166:14;11159:21;;11046:144;11030:4;11025:3;11021:14;11014:21;;10970:220;;;10974:21;10588:608;;10486:710;;;;;:::o;11219:370::-;11290:5;11339:3;11332:4;11324:6;11320:17;11316:27;11306:122;;11347:79;;:::i;:::-;11306:122;11464:6;11451:20;11489:94;11579:3;11571:6;11564:4;11556:6;11552:17;11489:94;:::i;:::-;11480:103;;11296:293;11219:370;;;;:::o;11595:539::-;11679:6;11728:2;11716:9;11707:7;11703:23;11699:32;11696:119;;;11734:79;;:::i;:::-;11696:119;11882:1;11871:9;11867:17;11854:31;11912:18;11904:6;11901:30;11898:117;;;11934:79;;:::i;:::-;11898:117;12039:78;12109:7;12100:6;12089:9;12085:22;12039:78;:::i;:::-;12029:88;;11825:302;11595:539;;;;:::o;12140:474::-;12208:6;12216;12265:2;12253:9;12244:7;12240:23;12236:32;12233:119;;;12271:79;;:::i;:::-;12233:119;12391:1;12416:53;12461:7;12452:6;12441:9;12437:22;12416:53;:::i;:::-;12406:63;;12362:117;12518:2;12544:53;12589:7;12580:6;12569:9;12565:22;12544:53;:::i;:::-;12534:63;;12489:118;12140:474;;;;;:::o;12620:182::-;12760:34;12756:1;12748:6;12744:14;12737:58;12620:182;:::o;12808:366::-;12950:3;12971:67;13035:2;13030:3;12971:67;:::i;:::-;12964:74;;13047:93;13136:3;13047:93;:::i;:::-;13165:2;13160:3;13156:12;13149:19;;12808:366;;;:::o;13180:419::-;13346:4;13384:2;13373:9;13369:18;13361:26;;13433:9;13427:4;13423:20;13419:1;13408:9;13404:17;13397:47;13461:131;13587:4;13461:131;:::i;:::-;13453:139;;13180:419;;;:::o;13605:143::-;13662:5;13693:6;13687:13;13678:22;;13709:33;13736:5;13709:33;:::i;:::-;13605:143;;;;:::o;13754:351::-;13824:6;13873:2;13861:9;13852:7;13848:23;13844:32;13841:119;;;13879:79;;:::i;:::-;13841:119;13999:1;14024:64;14080:7;14071:6;14060:9;14056:22;14024:64;:::i;:::-;14014:74;;13970:128;13754:351;;;;:::o;14111:332::-;14232:4;14270:2;14259:9;14255:18;14247:26;;14283:71;14351:1;14340:9;14336:17;14327:6;14283:71;:::i;:::-;14364:72;14432:2;14421:9;14417:18;14408:6;14364:72;:::i;:::-;14111:332;;;;;:::o;14449:180::-;14497:77;14494:1;14487:88;14594:4;14591:1;14584:15;14618:4;14615:1;14608:15;14635:180;14683:77;14680:1;14673:88;14780:4;14777:1;14770:15;14804:4;14801:1;14794:15;14821:233;14860:3;14883:24;14901:5;14883:24;:::i;:::-;14874:33;;14929:66;14922:5;14919:77;14916:103;;14999:18;;:::i;:::-;14916:103;15046:1;15039:5;15035:13;15028:20;;14821:233;;;:::o;15060:225::-;15200:34;15196:1;15188:6;15184:14;15177:58;15269:8;15264:2;15256:6;15252:15;15245:33;15060:225;:::o;15291:366::-;15433:3;15454:67;15518:2;15513:3;15454:67;:::i;:::-;15447:74;;15530:93;15619:3;15530:93;:::i;:::-;15648:2;15643:3;15639:12;15632:19;;15291:366;;;:::o;15663:419::-;15829:4;15867:2;15856:9;15852:18;15844:26;;15916:9;15910:4;15906:20;15902:1;15891:9;15887:17;15880:47;15944:131;16070:4;15944:131;:::i;:::-;15936:139;;15663:419;;;:::o;16088:223::-;16228:34;16224:1;16216:6;16212:14;16205:58;16297:6;16292:2;16284:6;16280:15;16273:31;16088:223;:::o;16317:366::-;16459:3;16480:67;16544:2;16539:3;16480:67;:::i;:::-;16473:74;;16556:93;16645:3;16556:93;:::i;:::-;16674:2;16669:3;16665:12;16658:19;;16317:366;;;:::o;16689:419::-;16855:4;16893:2;16882:9;16878:18;16870:26;;16942:9;16936:4;16932:20;16928:1;16917:9;16913:17;16906:47;16970:131;17096:4;16970:131;:::i;:::-;16962:139;;16689:419;;;:::o;17114:221::-;17254:34;17250:1;17242:6;17238:14;17231:58;17323:4;17318:2;17310:6;17306:15;17299:29;17114:221;:::o;17341:366::-;17483:3;17504:67;17568:2;17563:3;17504:67;:::i;:::-;17497:74;;17580:93;17669:3;17580:93;:::i;:::-;17698:2;17693:3;17689:12;17682:19;;17341:366;;;:::o;17713:419::-;17879:4;17917:2;17906:9;17902:18;17894:26;;17966:9;17960:4;17956:20;17952:1;17941:9;17937:17;17930:47;17994:131;18120:4;17994:131;:::i;:::-;17986:139;;17713:419;;;:::o;18138:224::-;18278:34;18274:1;18266:6;18262:14;18255:58;18347:7;18342:2;18334:6;18330:15;18323:32;18138:224;:::o;18368:366::-;18510:3;18531:67;18595:2;18590:3;18531:67;:::i;:::-;18524:74;;18607:93;18696:3;18607:93;:::i;:::-;18725:2;18720:3;18716:12;18709:19;;18368:366;;;:::o;18740:419::-;18906:4;18944:2;18933:9;18929:18;18921:26;;18993:9;18987:4;18983:20;18979:1;18968:9;18964:17;18957:47;19021:131;19147:4;19021:131;:::i;:::-;19013:139;;18740:419;;;:::o;19165:222::-;19305:34;19301:1;19293:6;19289:14;19282:58;19374:5;19369:2;19361:6;19357:15;19350:30;19165:222;:::o;19393:366::-;19535:3;19556:67;19620:2;19615:3;19556:67;:::i;:::-;19549:74;;19632:93;19721:3;19632:93;:::i;:::-;19750:2;19745:3;19741:12;19734:19;;19393:366;;;:::o;19765:419::-;19931:4;19969:2;19958:9;19954:18;19946:26;;20018:9;20012:4;20008:20;20004:1;19993:9;19989:17;19982:47;20046:131;20172:4;20046:131;:::i;:::-;20038:139;;19765:419;;;:::o;20190:228::-;20330:34;20326:1;20318:6;20314:14;20307:58;20399:11;20394:2;20386:6;20382:15;20375:36;20190:228;:::o;20424:366::-;20566:3;20587:67;20651:2;20646:3;20587:67;:::i;:::-;20580:74;;20663:93;20752:3;20663:93;:::i;:::-;20781:2;20776:3;20772:12;20765:19;;20424:366;;;:::o;20796:419::-;20962:4;21000:2;20989:9;20985:18;20977:26;;21049:9;21043:4;21039:20;21035:1;21024:9;21020:17;21013:47;21077:131;21203:4;21077:131;:::i;:::-;21069:139;;20796:419;;;:::o;21221:250::-;21361:34;21357:1;21349:6;21345:14;21338:58;21430:33;21425:2;21417:6;21413:15;21406:58;21221:250;:::o;21477:366::-;21619:3;21640:67;21704:2;21699:3;21640:67;:::i;:::-;21633:74;;21716:93;21805:3;21716:93;:::i;:::-;21834:2;21829:3;21825:12;21818:19;;21477:366;;;:::o;21849:419::-;22015:4;22053:2;22042:9;22038:18;22030:26;;22102:9;22096:4;22092:20;22088:1;22077:9;22073:17;22066:47;22130:131;22256:4;22130:131;:::i;:::-;22122:139;;21849:419;;;:::o;22274:178::-;22414:30;22410:1;22402:6;22398:14;22391:54;22274:178;:::o;22458:366::-;22600:3;22621:67;22685:2;22680:3;22621:67;:::i;:::-;22614:74;;22697:93;22786:3;22697:93;:::i;:::-;22815:2;22810:3;22806:12;22799:19;;22458:366;;;:::o;22830:419::-;22996:4;23034:2;23023:9;23019:18;23011:26;;23083:9;23077:4;23073:20;23069:1;23058:9;23054:17;23047:47;23111:131;23237:4;23111:131;:::i;:::-;23103:139;;22830:419;;;:::o;23255:222::-;23395:34;23391:1;23383:6;23379:14;23372:58;23464:5;23459:2;23451:6;23447:15;23440:30;23255:222;:::o;23483:366::-;23625:3;23646:67;23710:2;23705:3;23646:67;:::i;:::-;23639:74;;23722:93;23811:3;23722:93;:::i;:::-;23840:2;23835:3;23831:12;23824:19;;23483:366;;;:::o;23855:419::-;24021:4;24059:2;24048:9;24044:18;24036:26;;24108:9;24102:4;24098:20;24094:1;24083:9;24079:17;24072:47;24136:131;24262:4;24136:131;:::i;:::-;24128:139;;23855:419;;;:::o;24280:191::-;24320:3;24339:20;24357:1;24339:20;:::i;:::-;24334:25;;24373:20;24391:1;24373:20;:::i;:::-;24368:25;;24416:1;24413;24409:9;24402:16;;24437:3;24434:1;24431:10;24428:36;;;24444:18;;:::i;:::-;24428:36;24280:191;;;;:::o;24477:222::-;24617:34;24613:1;24605:6;24601:14;24594:58;24686:5;24681:2;24673:6;24669:15;24662:30;24477:222;:::o;24705:366::-;24847:3;24868:67;24932:2;24927:3;24868:67;:::i;:::-;24861:74;;24944:93;25033:3;24944:93;:::i;:::-;25062:2;25057:3;25053:12;25046:19;;24705:366;;;:::o;25077:419::-;25243:4;25281:2;25270:9;25266:18;25258:26;;25330:9;25324:4;25320:20;25316:1;25305:9;25301:17;25294:47;25358:131;25484:4;25358:131;:::i;:::-;25350:139;;25077:419;;;:::o;25502:194::-;25542:4;25562:20;25580:1;25562:20;:::i;:::-;25557:25;;25596:20;25614:1;25596:20;:::i;:::-;25591:25;;25640:1;25637;25633:9;25625:17;;25664:1;25658:4;25655:11;25652:37;;;25669:18;;:::i;:::-;25652:37;25502:194;;;;:::o;25702:229::-;25842:34;25838:1;25830:6;25826:14;25819:58;25911:12;25906:2;25898:6;25894:15;25887:37;25702:229;:::o;25937:366::-;26079:3;26100:67;26164:2;26159:3;26100:67;:::i;:::-;26093:74;;26176:93;26265:3;26176:93;:::i;:::-;26294:2;26289:3;26285:12;26278:19;;25937:366;;;:::o;26309:419::-;26475:4;26513:2;26502:9;26498:18;26490:26;;26562:9;26556:4;26552:20;26548:1;26537:9;26533:17;26526:47;26590:131;26716:4;26590:131;:::i;:::-;26582:139;;26309:419;;;:::o;26734:85::-;26779:7;26808:5;26797:16;;26734:85;;;:::o;26825:158::-;26883:9;26916:61;26934:42;26943:32;26969:5;26943:32;:::i;:::-;26934:42;:::i;:::-;26916:61;:::i;:::-;26903:74;;26825:158;;;:::o;26989:147::-;27084:45;27123:5;27084:45;:::i;:::-;27079:3;27072:58;26989:147;;:::o;27142:114::-;27209:6;27243:5;27237:12;27227:22;;27142:114;;;:::o;27262:184::-;27361:11;27395:6;27390:3;27383:19;27435:4;27430:3;27426:14;27411:29;;27262:184;;;;:::o;27452:132::-;27519:4;27542:3;27534:11;;27572:4;27567:3;27563:14;27555:22;;27452:132;;;:::o;27590:108::-;27667:24;27685:5;27667:24;:::i;:::-;27662:3;27655:37;27590:108;;:::o;27704:179::-;27773:10;27794:46;27836:3;27828:6;27794:46;:::i;:::-;27872:4;27867:3;27863:14;27849:28;;27704:179;;;;:::o;27889:113::-;27959:4;27991;27986:3;27982:14;27974:22;;27889:113;;;:::o;28038:732::-;28157:3;28186:54;28234:5;28186:54;:::i;:::-;28256:86;28335:6;28330:3;28256:86;:::i;:::-;28249:93;;28366:56;28416:5;28366:56;:::i;:::-;28445:7;28476:1;28461:284;28486:6;28483:1;28480:13;28461:284;;;28562:6;28556:13;28589:63;28648:3;28633:13;28589:63;:::i;:::-;28582:70;;28675:60;28728:6;28675:60;:::i;:::-;28665:70;;28521:224;28508:1;28505;28501:9;28496:14;;28461:284;;;28465:14;28761:3;28754:10;;28162:608;;;28038:732;;;;:::o;28776:831::-;29039:4;29077:3;29066:9;29062:19;29054:27;;29091:71;29159:1;29148:9;29144:17;29135:6;29091:71;:::i;:::-;29172:80;29248:2;29237:9;29233:18;29224:6;29172:80;:::i;:::-;29299:9;29293:4;29289:20;29284:2;29273:9;29269:18;29262:48;29327:108;29430:4;29421:6;29327:108;:::i;:::-;29319:116;;29445:72;29513:2;29502:9;29498:18;29489:6;29445:72;:::i;:::-;29527:73;29595:3;29584:9;29580:19;29571:6;29527:73;:::i;:::-;28776:831;;;;;;;;:::o;29613:180::-;29661:77;29658:1;29651:88;29758:4;29755:1;29748:15;29782:4;29779:1;29772:15;29799:185;29839:1;29856:20;29874:1;29856:20;:::i;:::-;29851:25;;29890:20;29908:1;29890:20;:::i;:::-;29885:25;;29929:1;29919:35;;29934:18;;:::i;:::-;29919:35;29976:1;29973;29969:9;29964:14;;29799:185;;;;:::o;29990:177::-;30130:29;30126:1;30118:6;30114:14;30107:53;29990:177;:::o;30173:366::-;30315:3;30336:67;30400:2;30395:3;30336:67;:::i;:::-;30329:74;;30412:93;30501:3;30412:93;:::i;:::-;30530:2;30525:3;30521:12;30514:19;;30173:366;;;:::o;30545:419::-;30711:4;30749:2;30738:9;30734:18;30726:26;;30798:9;30792:4;30788:20;30784:1;30773:9;30769:17;30762:47;30826:131;30952:4;30826:131;:::i;:::-;30818:139;;30545:419;;;:::o;30970:410::-;31010:7;31033:20;31051:1;31033:20;:::i;:::-;31028:25;;31067:20;31085:1;31067:20;:::i;:::-;31062:25;;31122:1;31119;31115:9;31144:30;31162:11;31144:30;:::i;:::-;31133:41;;31323:1;31314:7;31310:15;31307:1;31304:22;31284:1;31277:9;31257:83;31234:139;;31353:18;;:::i;:::-;31234:139;31018:362;30970:410;;;;:::o;31386:220::-;31526:34;31522:1;31514:6;31510:14;31503:58;31595:3;31590:2;31582:6;31578:15;31571:28;31386:220;:::o;31612:366::-;31754:3;31775:67;31839:2;31834:3;31775:67;:::i;:::-;31768:74;;31851:93;31940:3;31851:93;:::i;:::-;31969:2;31964:3;31960:12;31953:19;;31612:366;;;:::o;31984:419::-;32150:4;32188:2;32177:9;32173:18;32165:26;;32237:9;32231:4;32227:20;32223:1;32212:9;32208:17;32201:47;32265:131;32391:4;32265:131;:::i;:::-;32257:139;;31984:419;;;:::o

Swarm Source

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