ETH Price: $3,276.22 (-4.01%)

Token

Kaonashi (NoFace)
 

Overview

Max Total Supply

1,000,000,000 NoFace

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.318145647 NoFace

Value
$0.00
0x4dc4f36b649ed50d84088212277c70e8d886d812
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:
Kaonashi

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

I have no face, ears, eyes, I am Kaonashi the most thrilled and faceless meme coin. 
$ Kaonashi's reign starts here!

**/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;


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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract Kaonashi is Context, IERC20, Ownable {

    using SafeMath for uint256;

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

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

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

    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);
    address private uniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

     uint256 public _maxTxAmount = _tTotal*2/100;
    uint256 public _maxWalletSize = _tTotal*2/100;
    uint256 public _swapTokensAtAmount = _tTotal*3/1000;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            if(to != uniswapV2Pair && to != uniswapRouter && to != _developmentAddress && to != address(this)) {
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
                if(to != uniswapV2Pair) {
                    require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
                }
              }

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

    function manualSwap(uint256 percent) external {
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 swapamount = contractTokenBalance*percent/100;
        swapTokensForEth(swapamount);
    }

    function toggleSwap (bool _swapEnabled) external {
        swapEnabled = _swapEnabled;
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

    //Set maximum transaction
    function setMaxTxnAndWalletSize(uint256 maxTxAmount, uint256 maxWalletSize) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        _maxWalletSize = _tTotal*maxWalletSize/100;
        require (_maxTxAmount >= _tTotal/100 && _maxWalletSize >= _tTotal/100,"Must be more than 1%");
    }

}

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":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxTxnAndWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c9190620007df565b6000196200002b919062000846565b6006556000600855600f6009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5533601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555060646002670de0b6b3a76400006200019a919062000881565b620001a69190620008e2565b60155560646002670de0b6b3a7640000620001c2919062000881565b620001ce9190620008e2565b6016556103e86003670de0b6b3a7640000620001eb919062000881565b620001f79190620008e2565b6017553480156200020757600080fd5b5060006200021a6200077560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002cf6200077560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000984565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062000984565b6040518363ffffffff1660e01b8152600401620004a6929190620009c7565b602060405180830381600087803b158015620004c157600080fd5b505af1158015620004d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fc919062000984565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620005526200077d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006ff6200077560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000766919062000a05565b60405180910390a35062000a22565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007ec82620007a6565b9150620007f983620007a6565b9250826200080c576200080b620007b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200085382620007a6565b91506200086083620007a6565b92508282101562000876576200087562000817565b5b828203905092915050565b60006200088e82620007a6565b91506200089b83620007a6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008d757620008d662000817565b5b828202905092915050565b6000620008ef82620007a6565b9150620008fc83620007a6565b9250826200090f576200090e620007b0565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200094c826200091f565b9050919050565b6200095e816200093f565b81146200096a57600080fd5b50565b6000815190506200097e8162000953565b92915050565b6000602082840312156200099d576200099c6200091a565b5b6000620009ad848285016200096d565b91505092915050565b620009c1816200093f565b82525050565b6000604082019050620009de6000830185620009b6565b620009ed6020830184620009b6565b9392505050565b620009ff81620007a6565b82525050565b600060208201905062000a1c6000830184620009f4565b92915050565b6133698062000a326000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab5780639ba93c401161006f5780639ba93c4014610401578063a2a957bb1461042a578063a9059cbb14610453578063b70143c914610490578063dd62ed3e146104b9578063f2fde38b146104f657610140565b8063715018a61461033e5780637d1db4a5146103555780638da5cb5b146103805780638f9a55c0146103ab57806395d89b41146103d657610140565b80632fd689e3116100fd5780632fd689e314610240578063313ce5671461026b57806349bd5a5e146102965780636d8aa8f8146102c15780636fc3eaec146102ea57806370a082311461030157610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b604051610167919061241e565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906124d9565b61055c565b6040516101a49190612534565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf91906125ae565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906125d8565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906125f3565b6105b0565b6040516102379190612534565b60405180910390f35b34801561024c57600080fd5b50610255610689565b60405161026291906125d8565b60405180910390f35b34801561027757600080fd5b5061028061068f565b60405161028d9190612662565b60405180910390f35b3480156102a257600080fd5b506102ab610698565b6040516102b8919061268c565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906126d3565b6106be565b005b3480156102f657600080fd5b506102ff6106db565b005b34801561030d57600080fd5b5061032860048036038101906103239190612700565b6106e6565b60405161033591906125d8565b60405180910390f35b34801561034a57600080fd5b50610353610737565b005b34801561036157600080fd5b5061036a61088a565b60405161037791906125d8565b60405180910390f35b34801561038c57600080fd5b50610395610890565b6040516103a2919061268c565b60405180910390f35b3480156103b757600080fd5b506103c06108b9565b6040516103cd91906125d8565b60405180910390f35b3480156103e257600080fd5b506103eb6108bf565b6040516103f8919061241e565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061272d565b6108fc565b005b34801561043657600080fd5b50610451600480360381019061044c919061276d565b610a5c565b005b34801561045f57600080fd5b5061047a600480360381019061047591906124d9565b610b4a565b6040516104879190612534565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906127d4565b610b68565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612801565b610b9f565b6040516104ed91906125d8565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612700565b610c26565b005b60606040518060400160405280600881526020017f4b616f6e61736869000000000000000000000000000000000000000000000000815250905090565b6000610570610569610de8565b8484610df0565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105bd848484610fbb565b61067e846105c9610de8565b6106798560405180606001604052806028815260200161330c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062f610de8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118989092919063ffffffff16565b610df0565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601460166101000a81548160ff02191690831515021790555050565b6106e4476118fc565b565b6000610730600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611968565b9050919050565b61073f610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c39061288d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600681526020017f4e6f466163650000000000000000000000000000000000000000000000000000815250905090565b610904610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109889061288d565b60405180910390fd5b606482670de0b6b3a76400006109a791906128dc565b6109b19190612965565b601581905550606481670de0b6b3a76400006109cd91906128dc565b6109d79190612965565b6016819055506064670de0b6b3a76400006109f29190612965565b60155410158015610a1957506064670de0b6b3a7640000610a139190612965565b60165410155b610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f906129e2565b60405180910390fd5b5050565b610a64610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae89061288d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506028600b54600954600a54600854610b259190612a02565b610b2f9190612a02565b610b399190612a02565b1115610b4457600080fd5b50505050565b6000610b5e610b57610de8565b8484610fbb565b6001905092915050565b6000610b73306106e6565b9050600060648383610b8591906128dc565b610b8f9190612965565b9050610b9a816119d6565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c2e610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb29061288d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612aca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790612bee565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fae91906125d8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612c80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290612d12565b60405180910390fd5b600081116110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612da4565b60405180910390fd5b6110e6610890565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111545750611124610890565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115975760148054906101000a900460ff166111e157611173610890565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612e36565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561128d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112e75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561131f57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561141757601554811115611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612ea2565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461141657601654816113cb846106e6565b6113d59190612a02565b10611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612f34565b60405180910390fd5b5b5b6000611422306106e6565b9050600060175482101590508080156114485750601460159054906101000a900460ff16155b80156114a25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114ba5750601460169054906101000a900460ff165b80156115105750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115665750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159457611574826119d6565b600047905066b1a2bc2ec5000081111561159257611591816118fc565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061163e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116f15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116f05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156116ff5760009050611886565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117aa5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117c257600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561186d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561188557600a54600c81905550600b54600d819055505b5b61189284848484611c5e565b50505050565b60008383111582906118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7919061241e565b60405180910390fd5b50600083856118ef9190612f54565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611964573d6000803e3d6000fd5b5050565b60006006548211156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a690612ffa565b60405180910390fd5b60006119b9611c8b565b90506119ce8184611cb690919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a0e57611a0d61301a565b5b604051908082528060200260200182016040528015611a3c5781602001602082028036833780820191505090505b5090503081600081518110611a5457611a53613049565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2e919061308d565b81600181518110611b4257611b41613049565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ba930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610df0565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c0d9594939291906131b3565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80611c6c57611c6b611d00565b5b611c77848484611d43565b80611c8557611c84611f0e565b5b50505050565b6000806000611c98611f22565b91509150611caf8183611cb690919063ffffffff16565b9250505090565b6000611cf883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f81565b905092915050565b6000600c54148015611d1457506000600d54145b15611d1e57611d41565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d5587611fe4565b955095509550955095509550611db386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e94816120f4565b611e9e84836121b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611efb91906125d8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611f56670de0b6b3a7640000600654611cb690919063ffffffff16565b821015611f7457600654670de0b6b3a7640000935093505050611f7d565b81819350935050505b9091565b60008083118290611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf919061241e565b60405180910390fd5b5060008385611fd79190612965565b9050809150509392505050565b60008060008060008060008060006120018a600c54600d546121eb565b9250925092506000612011611c8b565b905060008060006120248e878787612281565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061208e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611898565b905092915050565b60008082846120a59190612a02565b9050838110156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190613259565b60405180910390fd5b8091505092915050565b60006120fe611c8b565b90506000612115828461230a90919063ffffffff16565b905061216981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121c68260065461204c90919063ffffffff16565b6006819055506121e18160075461209690919063ffffffff16565b6007819055505050565b6000806000806122176064612209888a61230a90919063ffffffff16565b611cb690919063ffffffff16565b905060006122416064612233888b61230a90919063ffffffff16565b611cb690919063ffffffff16565b9050600061226a8261225c858c61204c90919063ffffffff16565b61204c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061229a858961230a90919063ffffffff16565b905060006122b1868961230a90919063ffffffff16565b905060006122c8878961230a90919063ffffffff16565b905060006122f1826122e3858761204c90919063ffffffff16565b61204c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561231d576000905061237f565b6000828461232b91906128dc565b905082848261233a9190612965565b1461237a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612371906132eb565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123bf5780820151818401526020810190506123a4565b838111156123ce576000848401525b50505050565b6000601f19601f8301169050919050565b60006123f082612385565b6123fa8185612390565b935061240a8185602086016123a1565b612413816123d4565b840191505092915050565b6000602082019050818103600083015261243881846123e5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247082612445565b9050919050565b61248081612465565b811461248b57600080fd5b50565b60008135905061249d81612477565b92915050565b6000819050919050565b6124b6816124a3565b81146124c157600080fd5b50565b6000813590506124d3816124ad565b92915050565b600080604083850312156124f0576124ef612440565b5b60006124fe8582860161248e565b925050602061250f858286016124c4565b9150509250929050565b60008115159050919050565b61252e81612519565b82525050565b60006020820190506125496000830184612525565b92915050565b6000819050919050565b600061257461256f61256a84612445565b61254f565b612445565b9050919050565b600061258682612559565b9050919050565b60006125988261257b565b9050919050565b6125a88161258d565b82525050565b60006020820190506125c3600083018461259f565b92915050565b6125d2816124a3565b82525050565b60006020820190506125ed60008301846125c9565b92915050565b60008060006060848603121561260c5761260b612440565b5b600061261a8682870161248e565b935050602061262b8682870161248e565b925050604061263c868287016124c4565b9150509250925092565b600060ff82169050919050565b61265c81612646565b82525050565b60006020820190506126776000830184612653565b92915050565b61268681612465565b82525050565b60006020820190506126a1600083018461267d565b92915050565b6126b081612519565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b6000602082840312156126e9576126e8612440565b5b60006126f7848285016126be565b91505092915050565b60006020828403121561271657612715612440565b5b60006127248482850161248e565b91505092915050565b6000806040838503121561274457612743612440565b5b6000612752858286016124c4565b9250506020612763858286016124c4565b9150509250929050565b6000806000806080858703121561278757612786612440565b5b6000612795878288016124c4565b94505060206127a6878288016124c4565b93505060406127b7878288016124c4565b92505060606127c8878288016124c4565b91505092959194509250565b6000602082840312156127ea576127e9612440565b5b60006127f8848285016124c4565b91505092915050565b6000806040838503121561281857612817612440565b5b60006128268582860161248e565b92505060206128378582860161248e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612877602083612390565b915061288282612841565b602082019050919050565b600060208201905081810360008301526128a68161286a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128e7826124a3565b91506128f2836124a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561292b5761292a6128ad565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612970826124a3565b915061297b836124a3565b92508261298b5761298a612936565b5b828204905092915050565b7f4d757374206265206d6f7265207468616e203125000000000000000000000000600082015250565b60006129cc601483612390565b91506129d782612996565b602082019050919050565b600060208201905081810360008301526129fb816129bf565b9050919050565b6000612a0d826124a3565b9150612a18836124a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a4d57612a4c6128ad565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ab4602683612390565b9150612abf82612a58565b604082019050919050565b60006020820190508181036000830152612ae381612aa7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b46602483612390565b9150612b5182612aea565b604082019050919050565b60006020820190508181036000830152612b7581612b39565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bd8602283612390565b9150612be382612b7c565b604082019050919050565b60006020820190508181036000830152612c0781612bcb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c6a602583612390565b9150612c7582612c0e565b604082019050919050565b60006020820190508181036000830152612c9981612c5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfc602383612390565b9150612d0782612ca0565b604082019050919050565b60006020820190508181036000830152612d2b81612cef565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d8e602983612390565b9150612d9982612d32565b604082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e20603f83612390565b9150612e2b82612dc4565b604082019050919050565b60006020820190508181036000830152612e4f81612e13565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612e8c601c83612390565b9150612e9782612e56565b602082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f1e602383612390565b9150612f2982612ec2565b604082019050919050565b60006020820190508181036000830152612f4d81612f11565b9050919050565b6000612f5f826124a3565b9150612f6a836124a3565b925082821015612f7d57612f7c6128ad565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612fe4602a83612390565b9150612fef82612f88565b604082019050919050565b6000602082019050818103600083015261301381612fd7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061308781612477565b92915050565b6000602082840312156130a3576130a2612440565b5b60006130b184828501613078565b91505092915050565b6000819050919050565b60006130df6130da6130d5846130ba565b61254f565b6124a3565b9050919050565b6130ef816130c4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312a81612465565b82525050565b600061313c8383613121565b60208301905092915050565b6000602082019050919050565b6000613160826130f5565b61316a8185613100565b935061317583613111565b8060005b838110156131a657815161318d8882613130565b975061319883613148565b925050600181019050613179565b5085935050505092915050565b600060a0820190506131c860008301886125c9565b6131d560208301876130e6565b81810360408301526131e78186613155565b90506131f6606083018561267d565b61320360808301846125c9565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613243601b83612390565b915061324e8261320d565b602082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602183612390565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220366298ff2449b03893ba4457a1ac9a80f1d3adc0560e5e0e7eedfdf465a1de5e64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063715018a6116100ab5780639ba93c401161006f5780639ba93c4014610401578063a2a957bb1461042a578063a9059cbb14610453578063b70143c914610490578063dd62ed3e146104b9578063f2fde38b146104f657610140565b8063715018a61461033e5780637d1db4a5146103555780638da5cb5b146103805780638f9a55c0146103ab57806395d89b41146103d657610140565b80632fd689e3116100fd5780632fd689e314610240578063313ce5671461026b57806349bd5a5e146102965780636d8aa8f8146102c15780636fc3eaec146102ea57806370a082311461030157610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b604051610167919061241e565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906124d9565b61055c565b6040516101a49190612534565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf91906125ae565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906125d8565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906125f3565b6105b0565b6040516102379190612534565b60405180910390f35b34801561024c57600080fd5b50610255610689565b60405161026291906125d8565b60405180910390f35b34801561027757600080fd5b5061028061068f565b60405161028d9190612662565b60405180910390f35b3480156102a257600080fd5b506102ab610698565b6040516102b8919061268c565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906126d3565b6106be565b005b3480156102f657600080fd5b506102ff6106db565b005b34801561030d57600080fd5b5061032860048036038101906103239190612700565b6106e6565b60405161033591906125d8565b60405180910390f35b34801561034a57600080fd5b50610353610737565b005b34801561036157600080fd5b5061036a61088a565b60405161037791906125d8565b60405180910390f35b34801561038c57600080fd5b50610395610890565b6040516103a2919061268c565b60405180910390f35b3480156103b757600080fd5b506103c06108b9565b6040516103cd91906125d8565b60405180910390f35b3480156103e257600080fd5b506103eb6108bf565b6040516103f8919061241e565b60405180910390f35b34801561040d57600080fd5b506104286004803603810190610423919061272d565b6108fc565b005b34801561043657600080fd5b50610451600480360381019061044c919061276d565b610a5c565b005b34801561045f57600080fd5b5061047a600480360381019061047591906124d9565b610b4a565b6040516104879190612534565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906127d4565b610b68565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612801565b610b9f565b6040516104ed91906125d8565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612700565b610c26565b005b60606040518060400160405280600881526020017f4b616f6e61736869000000000000000000000000000000000000000000000000815250905090565b6000610570610569610de8565b8484610df0565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006105bd848484610fbb565b61067e846105c9610de8565b6106798560405180606001604052806028815260200161330c60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062f610de8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118989092919063ffffffff16565b610df0565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601460166101000a81548160ff02191690831515021790555050565b6106e4476118fc565b565b6000610730600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611968565b9050919050565b61073f610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c39061288d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600681526020017f4e6f466163650000000000000000000000000000000000000000000000000000815250905090565b610904610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109889061288d565b60405180910390fd5b606482670de0b6b3a76400006109a791906128dc565b6109b19190612965565b601581905550606481670de0b6b3a76400006109cd91906128dc565b6109d79190612965565b6016819055506064670de0b6b3a76400006109f29190612965565b60155410158015610a1957506064670de0b6b3a7640000610a139190612965565b60165410155b610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f906129e2565b60405180910390fd5b5050565b610a64610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae89061288d565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506028600b54600954600a54600854610b259190612a02565b610b2f9190612a02565b610b399190612a02565b1115610b4457600080fd5b50505050565b6000610b5e610b57610de8565b8484610fbb565b6001905092915050565b6000610b73306106e6565b9050600060648383610b8591906128dc565b610b8f9190612965565b9050610b9a816119d6565b505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c2e610de8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb29061288d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2290612aca565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612b5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec790612bee565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fae91906125d8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561102b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102290612c80565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109290612d12565b60405180910390fd5b600081116110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590612da4565b60405180910390fd5b6110e6610890565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111545750611124610890565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115975760148054906101000a900460ff166111e157611173610890565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146111e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d790612e36565b60405180910390fd5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561128d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112e75750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561131f57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561141757601554811115611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612ea2565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461141657601654816113cb846106e6565b6113d59190612a02565b10611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612f34565b60405180910390fd5b5b5b6000611422306106e6565b9050600060175482101590508080156114485750601460159054906101000a900460ff16155b80156114a25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114ba5750601460169054906101000a900460ff165b80156115105750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115665750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159457611574826119d6565b600047905066b1a2bc2ec5000081111561159257611591816118fc565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061163e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116f15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116f05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156116ff5760009050611886565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117aa5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117c257600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561186d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561188557600a54600c81905550600b54600d819055505b5b61189284848484611c5e565b50505050565b60008383111582906118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7919061241e565b60405180910390fd5b50600083856118ef9190612f54565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611964573d6000803e3d6000fd5b5050565b60006006548211156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a690612ffa565b60405180910390fd5b60006119b9611c8b565b90506119ce8184611cb690919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a0e57611a0d61301a565b5b604051908082528060200260200182016040528015611a3c5781602001602082028036833780820191505090505b5090503081600081518110611a5457611a53613049565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611af657600080fd5b505afa158015611b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2e919061308d565b81600181518110611b4257611b41613049565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ba930601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610df0565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c0d9594939291906131b3565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b80611c6c57611c6b611d00565b5b611c77848484611d43565b80611c8557611c84611f0e565b5b50505050565b6000806000611c98611f22565b91509150611caf8183611cb690919063ffffffff16565b9250505090565b6000611cf883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f81565b905092915050565b6000600c54148015611d1457506000600d54145b15611d1e57611d41565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d5587611fe4565b955095509550955095509550611db386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e94816120f4565b611e9e84836121b1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611efb91906125d8565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611f56670de0b6b3a7640000600654611cb690919063ffffffff16565b821015611f7457600654670de0b6b3a7640000935093505050611f7d565b81819350935050505b9091565b60008083118290611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf919061241e565b60405180910390fd5b5060008385611fd79190612965565b9050809150509392505050565b60008060008060008060008060006120018a600c54600d546121eb565b9250925092506000612011611c8b565b905060008060006120248e878787612281565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061208e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611898565b905092915050565b60008082846120a59190612a02565b9050838110156120ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e190613259565b60405180910390fd5b8091505092915050565b60006120fe611c8b565b90506000612115828461230a90919063ffffffff16565b905061216981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121c68260065461204c90919063ffffffff16565b6006819055506121e18160075461209690919063ffffffff16565b6007819055505050565b6000806000806122176064612209888a61230a90919063ffffffff16565b611cb690919063ffffffff16565b905060006122416064612233888b61230a90919063ffffffff16565b611cb690919063ffffffff16565b9050600061226a8261225c858c61204c90919063ffffffff16565b61204c90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061229a858961230a90919063ffffffff16565b905060006122b1868961230a90919063ffffffff16565b905060006122c8878961230a90919063ffffffff16565b905060006122f1826122e3858761204c90919063ffffffff16565b61204c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561231d576000905061237f565b6000828461232b91906128dc565b905082848261233a9190612965565b1461237a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612371906132eb565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123bf5780820151818401526020810190506123a4565b838111156123ce576000848401525b50505050565b6000601f19601f8301169050919050565b60006123f082612385565b6123fa8185612390565b935061240a8185602086016123a1565b612413816123d4565b840191505092915050565b6000602082019050818103600083015261243881846123e5565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247082612445565b9050919050565b61248081612465565b811461248b57600080fd5b50565b60008135905061249d81612477565b92915050565b6000819050919050565b6124b6816124a3565b81146124c157600080fd5b50565b6000813590506124d3816124ad565b92915050565b600080604083850312156124f0576124ef612440565b5b60006124fe8582860161248e565b925050602061250f858286016124c4565b9150509250929050565b60008115159050919050565b61252e81612519565b82525050565b60006020820190506125496000830184612525565b92915050565b6000819050919050565b600061257461256f61256a84612445565b61254f565b612445565b9050919050565b600061258682612559565b9050919050565b60006125988261257b565b9050919050565b6125a88161258d565b82525050565b60006020820190506125c3600083018461259f565b92915050565b6125d2816124a3565b82525050565b60006020820190506125ed60008301846125c9565b92915050565b60008060006060848603121561260c5761260b612440565b5b600061261a8682870161248e565b935050602061262b8682870161248e565b925050604061263c868287016124c4565b9150509250925092565b600060ff82169050919050565b61265c81612646565b82525050565b60006020820190506126776000830184612653565b92915050565b61268681612465565b82525050565b60006020820190506126a1600083018461267d565b92915050565b6126b081612519565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b6000602082840312156126e9576126e8612440565b5b60006126f7848285016126be565b91505092915050565b60006020828403121561271657612715612440565b5b60006127248482850161248e565b91505092915050565b6000806040838503121561274457612743612440565b5b6000612752858286016124c4565b9250506020612763858286016124c4565b9150509250929050565b6000806000806080858703121561278757612786612440565b5b6000612795878288016124c4565b94505060206127a6878288016124c4565b93505060406127b7878288016124c4565b92505060606127c8878288016124c4565b91505092959194509250565b6000602082840312156127ea576127e9612440565b5b60006127f8848285016124c4565b91505092915050565b6000806040838503121561281857612817612440565b5b60006128268582860161248e565b92505060206128378582860161248e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612877602083612390565b915061288282612841565b602082019050919050565b600060208201905081810360008301526128a68161286a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128e7826124a3565b91506128f2836124a3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561292b5761292a6128ad565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612970826124a3565b915061297b836124a3565b92508261298b5761298a612936565b5b828204905092915050565b7f4d757374206265206d6f7265207468616e203125000000000000000000000000600082015250565b60006129cc601483612390565b91506129d782612996565b602082019050919050565b600060208201905081810360008301526129fb816129bf565b9050919050565b6000612a0d826124a3565b9150612a18836124a3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612a4d57612a4c6128ad565b5b828201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ab4602683612390565b9150612abf82612a58565b604082019050919050565b60006020820190508181036000830152612ae381612aa7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b46602483612390565b9150612b5182612aea565b604082019050919050565b60006020820190508181036000830152612b7581612b39565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bd8602283612390565b9150612be382612b7c565b604082019050919050565b60006020820190508181036000830152612c0781612bcb565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c6a602583612390565b9150612c7582612c0e565b604082019050919050565b60006020820190508181036000830152612c9981612c5d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfc602383612390565b9150612d0782612ca0565b604082019050919050565b60006020820190508181036000830152612d2b81612cef565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d8e602983612390565b9150612d9982612d32565b604082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e20603f83612390565b9150612e2b82612dc4565b604082019050919050565b60006020820190508181036000830152612e4f81612e13565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612e8c601c83612390565b9150612e9782612e56565b602082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f1e602383612390565b9150612f2982612ec2565b604082019050919050565b60006020820190508181036000830152612f4d81612f11565b9050919050565b6000612f5f826124a3565b9150612f6a836124a3565b925082821015612f7d57612f7c6128ad565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612fe4602a83612390565b9150612fef82612f88565b604082019050919050565b6000602082019050818103600083015261301381612fd7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061308781612477565b92915050565b6000602082840312156130a3576130a2612440565b5b60006130b184828501613078565b91505092915050565b6000819050919050565b60006130df6130da6130d5846130ba565b61254f565b6124a3565b9050919050565b6130ef816130c4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312a81612465565b82525050565b600061313c8383613121565b60208301905092915050565b6000602082019050919050565b6000613160826130f5565b61316a8185613100565b935061317583613111565b8060005b838110156131a657815161318d8882613130565b975061319883613148565b925050600181019050613179565b5085935050505092915050565b600060a0820190506131c860008301886125c9565b6131d560208301876130e6565b81810360408301526131e78186613155565b90506131f6606083018561267d565b61320360808301846125c9565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613243601b83612390565b915061324e8261320d565b602082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602183612390565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220366298ff2449b03893ba4457a1ac9a80f1d3adc0560e5e0e7eedfdf465a1de5e64736f6c63430008090033

Deployed Bytecode Sourcemap

4203:12484:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6630:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7555:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6907:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7756:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5777:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6816:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5525:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12461:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12137:85;;;;;;;;;;;;;:::i;:::-;;7010:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1690:148;;;;;;;;;;;;;:::i;:::-;;5675:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1476:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5725:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6721:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16375:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15961:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7156:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12230:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7363:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1846:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6630:83;6667:13;6700:5;;;;;;;;;;;;;;;;;6693:12;;6630:83;:::o;7555:193::-;7657:4;7679:39;7688:12;:10;:12::i;:::-;7702:7;7711:6;7679:8;:39::i;:::-;7736:4;7729:11;;7555:193;;;;:::o;5477:41::-;;;;;;;;;;;;;:::o;6907:95::-;6960:7;4752:18;6980:14;;6907:95;:::o;7756:446::-;7888:4;7905:36;7915:6;7923:9;7934:6;7905:9;:36::i;:::-;7952:220;7975:6;7996:12;:10;:12::i;:::-;8023:138;8079:6;8023:138;;;;;;;;;;;;;;;;;:11;:19;8035:6;8023:19;;;;;;;;;;;;;;;:33;8043:12;:10;:12::i;:::-;8023:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7952:8;:220::i;:::-;8190:4;8183:11;;7756:446;;;;;:::o;5777:51::-;;;;:::o;6816:83::-;6857:5;4426:1;6875:16;;6816:83;:::o;5525:28::-;;;;;;;;;;;;;:::o;12461:94::-;12535:12;12521:11;;:26;;;;;;;;;;;;;;;;;;12461:94;:::o;12137:85::-;12179:35;12192:21;12179:12;:35::i;:::-;12137:85::o;7010:138::-;7076:7;7103:37;7123:7;:16;7131:7;7123:16;;;;;;;;;;;;;;;;7103:19;:37::i;:::-;7096:44;;7010:138;;;:::o;1690:148::-;1613:12;:10;:12::i;:::-;1603:22;;:6;;;;;;;;;;:22;;;1595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1797:1:::1;1760:40;;1781:6;::::0;::::1;;;;;;;;1760:40;;;;;;;;;;;;1828:1;1811:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1690:148::o:0;5675:43::-;;;;:::o;1476:79::-;1514:7;1541:6;;;;;;;;;;;1534:13;;1476:79;:::o;5725:45::-;;;;:::o;6721:87::-;6760:13;6793:7;;;;;;;;;;;;;;;;;6786:14;;6721:87;:::o;16375:307::-;1613:12;:10;:12::i;:::-;1603:22;;:6;;;;;;;;;;:22;;;1595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16514:3:::1;16502:11;4752:18;16494:19;;;;:::i;:::-;:23;;;;:::i;:::-;16479:12;:38;;;;16567:3;16553:13;4752:18;16545:21;;;;:::i;:::-;:25;;;;:::i;:::-;16528:14;:42;;;;16614:3;4752:18;16606:11;;;;:::i;:::-;16590:12;;:27;;:60;;;;;16647:3;4752:18;16639:11;;;;:::i;:::-;16621:14;;:29;;16590:60;16581:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16375:307:::0;;:::o;15961:375::-;1613:12;:10;:12::i;:::-;1603:22;;:6;;;;;;;;;;:22;;;1595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16112:13:::1;16095:14;:30;;;;16154:14;16136:15;:32;;;;16194:11;16179:12;:26;;;;16232:12;16216:13;:28;;;;16325:2;16308:13;;16295:12;;16279:15;;16264:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16255:73;;;::::0;::::1;;15961:375:::0;;;;:::o;7156:199::-;7261:4;7283:42;7293:12;:10;:12::i;:::-;7307:9;7318:6;7283:9;:42::i;:::-;7343:4;7336:11;;7156:199;;;;:::o;12230:223::-;12287:28;12318:24;12336:4;12318:9;:24::i;:::-;12287:55;;12353:18;12403:3;12395:7;12374:20;:28;;;;:::i;:::-;:32;;;;:::i;:::-;12353:53;;12417:28;12434:10;12417:16;:28::i;:::-;12276:177;;12230:223;:::o;7363:184::-;7480:7;7512:11;:18;7524:5;7512:18;;;;;;;;;;;;;;;:27;7531:7;7512:27;;;;;;;;;;;;;;;;7505:34;;7363:184;;;;:::o;1846:244::-;1613:12;:10;:12::i;:::-;1603:22;;:6;;;;;;;;;;:22;;;1595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1955:1:::1;1935:22;;:8;:22;;;;1927:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2045:8;2016:38;;2037:6;::::0;::::1;;;;;;;;2016:38;;;;;;;;;;;;2074:8;2065:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1846:244:::0;:::o;235:98::-;288:7;315:10;308:17;;235:98;:::o;8893:369::-;9037:1;9020:19;;:5;:19;;;;9012:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9118:1;9099:21;;:7;:21;;;;9091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9200:6;9170:11;:18;9182:5;9170:18;;;;;;;;;;;;;;;:27;9189:7;9170:27;;;;;;;;;;;;;;;:36;;;;9238:7;9222:32;;9231:5;9222:32;;;9247:6;9222:32;;;;;;:::i;:::-;;;;;;;;8893:369;;;:::o;9270:2261::-;9408:1;9392:18;;:4;:18;;;;9384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9485:1;9471:16;;:2;:16;;;;9463:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9555:1;9546:6;:10;9538:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9627:7;:5;:7::i;:::-;9619:15;;:4;:15;;;;:32;;;;;9644:7;:5;:7::i;:::-;9638:13;;:2;:13;;;;9619:32;9615:1190;;;9708:11;;;;;;;;;;9703:144;;9756:7;:5;:7::i;:::-;9748:15;;:4;:15;;;9740:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9703:144;9872:13;;;;;;;;;;;9866:19;;:2;:19;;;;:42;;;;;9895:13;;;;;;;;;;;9889:19;;:2;:19;;;;9866:42;:71;;;;;9918:19;;;;;;;;;;;9912:25;;:2;:25;;;;9866:71;:94;;;;;9955:4;9941:19;;:2;:19;;;;9866:94;9863:371;;;9999:12;;9989:6;:22;;9981:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10072:13;;;;;;;;;;;10066:19;;:2;:19;;;10063:154;;10143:14;;10134:6;10118:13;10128:2;10118:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10110:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10063:154;9863:371;10250:28;10281:24;10299:4;10281:9;:24::i;:::-;10250:55;;10320:12;10359:19;;10335:20;:43;;10320:58;;10399:7;:18;;;;;10411:6;;;;;;;;;;;10410:7;10399:18;:43;;;;;10429:13;;;;;;;;;;;10421:21;;:4;:21;;;;10399:43;:58;;;;;10446:11;;;;;;;;;;;10399:58;:87;;;;;10462:18;:24;10481:4;10462:24;;;;;;;;;;;;;;;;;;;;;;;;;10461:25;10399:87;:114;;;;;10491:18;:22;10510:2;10491:22;;;;;;;;;;;;;;;;;;;;;;;;;10490:23;10399:114;10395:399;;;10534:38;10551:20;10534:16;:38::i;:::-;10591:26;10620:21;10591:50;;10685:17;10664:18;:38;10660:119;;;10727:32;10740:18;10727:12;:32::i;:::-;10660:119;10515:279;10395:399;9653:1152;;9615:1190;10817:12;10832:4;10817:19;;10881:18;:24;10900:4;10881:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10909:18;:22;10928:2;10909:22;;;;;;;;;;;;;;;;;;;;;;;;;10881:50;10880:102;;;;10945:13;;;;;;;;;;;10937:21;;:4;:21;;;;:44;;;;;10968:13;;;;;;;;;;;10962:19;;:2;:19;;;;10937:44;10880:102;10876:594;;;11009:5;10999:15;;10876:594;;;11092:13;;;;;;;;;;;11084:21;;:4;:21;;;:55;;;;;11123:15;;;;;;;;;;;11109:30;;:2;:30;;;;11084:55;11081:162;;;11172:14;;11160:9;:26;;;;11215:12;;11205:7;:22;;;;11081:162;11302:13;;;;;;;;;;;11296:19;;:2;:19;;;:55;;;;;11335:15;;;;;;;;;;;11319:32;;:4;:32;;;;11296:55;11292:165;;;11384:15;;11372:9;:27;;;;11428:13;;11418:7;:23;;;;11292:165;10876:594;11482:41;11497:4;11503:2;11507:6;11515:7;11482:14;:41::i;:::-;9373:2158;9270:2261;;;:::o;2454:224::-;2574:7;2607:1;2602;:6;;2610:12;2594:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2634:9;2650:1;2646;:5;;;;:::i;:::-;2634:17;;2669:1;2662:8;;;2454:224;;;;;:::o;12030:99::-;12087:17;;;;;;;;;;;:26;;:34;12114:6;12087:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12030:99;:::o;8210:323::-;8305:7;8363;;8352;:18;;8330:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8451:19;8473:10;:8;:10::i;:::-;8451:32;;8501:24;8513:11;8501:7;:11;;:24;;;;:::i;:::-;8494:31;;;8210:323;;;:::o;11539:483::-;5931:4;5922:6;;:13;;;;;;;;;;;;;;;;;;11617:21:::1;11655:1;11641:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11617:40;;11686:4;11668;11673:1;11668:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11712:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11702:4;11707:1;11702:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11745:62;11762:4;11777:15;;;;;;;;;;;11795:11;11745:8;:62::i;:::-;11818:15;;;;;;;;;;;:66;;;11899:11;11925:1;11941:4;11968;11988:15;11818:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11606:416;5967:5:::0;5958:6;;:14;;;;;;;;;;;;;;;;;;11539:483;:::o;12563:282::-;12719:7;12714:28;;12728:14;:12;:14::i;:::-;12714:28;12753:44;12771:6;12779:9;12790:6;12753:17;:44::i;:::-;12813:7;12808:29;;12822:15;:13;:15::i;:::-;12808:29;12563:282;;;;:::o;15524:164::-;15566:7;15587:15;15604;15623:19;:17;:19::i;:::-;15586:56;;;;15660:20;15672:7;15660;:11;;:20;;;;:::i;:::-;15653:27;;;;15524:164;:::o;2940:132::-;2998:7;3025:39;3029:1;3032;3025:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3018:46;;2940:132;;;;:::o;8541:219::-;8601:1;8588:9;;:14;:30;;;;;8617:1;8606:7;;:12;8588:30;8584:43;;;8620:7;;8584:43;8659:9;;8639:17;:29;;;;8697:7;;8679:15;:25;;;;8729:1;8717:9;:13;;;;8751:1;8741:7;:11;;;;8541:219;:::o;12853:610::-;13000:15;13030:23;13068:12;13095:23;13133:12;13160:13;13187:19;13198:7;13187:10;:19::i;:::-;12985:221;;;;;;;;;;;;13235:28;13255:7;13235;:15;13243:6;13235:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13217:7;:15;13225:6;13217:15;;;;;;;;;;;;;;;:46;;;;13295:39;13318:15;13295:7;:18;13303:9;13295:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13274:7;:18;13282:9;13274:18;;;;;;;;;;;;;;;:60;;;;13345:16;13355:5;13345:9;:16::i;:::-;13372:23;13384:4;13390;13372:11;:23::i;:::-;13428:9;13411:44;;13420:6;13411:44;;;13439:15;13411:44;;;;;;:::i;:::-;;;;;;;;12974:489;;;;;;12853:610;;;:::o;8768:117::-;8824:17;;8812:9;:29;;;;8862:15;;8852:7;:25;;;;8768:117::o;15696:257::-;15747:7;15756;15776:15;15794:7;;15776:25;;15812:15;4752:18;15812:25;;15862:20;4752:18;15862:7;;:11;;:20;;;;:::i;:::-;15852:7;:30;15848:61;;;15892:7;;4752:18;15884:25;;;;;;;;15848:61;15928:7;15937;15920:25;;;;;;15696:257;;;:::o;3080:223::-;3200:7;3232:1;3228;:5;3235:12;3220:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3259:9;3275:1;3271;:5;;;;:::i;:::-;3259:17;;3294:1;3287:8;;;3080:223;;;;;:::o;13882:615::-;13982:7;14004;14026;14048;14070;14092;14128:23;14153:12;14167:13;14197:40;14209:7;14218:9;;14229:7;;14197:11;:40::i;:::-;14127:110;;;;;;14248:19;14270:10;:8;:10::i;:::-;14248:32;;14292:15;14309:23;14334:12;14363:46;14375:7;14384:4;14390:5;14397:11;14363;:46::i;:::-;14291:118;;;;;;14428:7;14437:15;14454:4;14460:15;14477:4;14483:5;14420:69;;;;;;;;;;;;;;;;;;;13882:615;;;;;;;:::o;2310:136::-;2368:7;2395:43;2399:1;2402;2395:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2388:50;;2310:136;;;;:::o;2123:179::-;2181:7;2201:9;2217:1;2213;:5;;;;:::i;:::-;2201:17;;2242:1;2237;:6;;2229:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:1;2286:8;;;2123:179;;;;:::o;13471:211::-;13524:19;13546:10;:8;:10::i;:::-;13524:32;;13567:13;13583:22;13593:11;13583:5;:9;;:22;;;;:::i;:::-;13567:38;;13641:33;13668:5;13641:7;:22;13657:4;13641:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13616:7;:22;13632:4;13616:22;;;;;;;;;;;;;;;:58;;;;13513:169;;13471:211;:::o;13690:147::-;13768:17;13780:4;13768:7;;:11;;:17;;;;:::i;:::-;13758:7;:27;;;;13809:20;13824:4;13809:10;;:14;;:20;;;;:::i;:::-;13796:10;:33;;;;13690:147;;:::o;14505:469::-;14674:7;14696;14718;14753:12;14768:30;14794:3;14768:21;14780:8;14768:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14753:45;;14809:13;14825:28;14849:3;14825:19;14837:6;14825:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14809:44;;14864:23;14890:28;14912:5;14890:17;14902:4;14890:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14864:54;;14937:15;14954:4;14960:5;14929:37;;;;;;;;;14505:469;;;;;;;:::o;14982:534::-;15176:7;15198;15220;15255:15;15273:24;15285:11;15273:7;:11;;:24;;;;:::i;:::-;15255:42;;15308:12;15323:21;15332:11;15323:4;:8;;:21;;;;:::i;:::-;15308:36;;15355:13;15371:22;15381:11;15371:5;:9;;:22;;;;:::i;:::-;15355:38;;15404:23;15430:28;15452:5;15430:17;15442:4;15430:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15404:54;;15477:7;15486:15;15503:4;15469:39;;;;;;;;;;14982:534;;;;;;;;:::o;2686:246::-;2744:7;2773:1;2768;:6;2764:47;;;2798:1;2791:8;;;;2764:47;2821:9;2837:1;2833;:5;;;;:::i;:::-;2821:17;;2866:1;2861;2857;:5;;;;:::i;:::-;:10;2849:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2923:1;2916:8;;;2686: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:474::-;7219:6;7227;7276:2;7264:9;7255:7;7251:23;7247:32;7244:119;;;7282:79;;:::i;:::-;7244:119;7402:1;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7373:117;7529:2;7555:53;7600:7;7591:6;7580:9;7576:22;7555:53;:::i;:::-;7545:63;;7500:118;7151:474;;;;;:::o;7631:765::-;7717:6;7725;7733;7741;7790:3;7778:9;7769:7;7765:23;7761:33;7758:120;;;7797:79;;:::i;:::-;7758:120;7917:1;7942:53;7987:7;7978:6;7967:9;7963:22;7942:53;:::i;:::-;7932:63;;7888:117;8044:2;8070:53;8115:7;8106:6;8095:9;8091:22;8070:53;:::i;:::-;8060:63;;8015:118;8172:2;8198:53;8243:7;8234:6;8223:9;8219:22;8198:53;:::i;:::-;8188:63;;8143:118;8300:2;8326:53;8371:7;8362:6;8351:9;8347:22;8326:53;:::i;:::-;8316:63;;8271:118;7631:765;;;;;;;:::o;8402:329::-;8461:6;8510:2;8498:9;8489:7;8485:23;8481:32;8478:119;;;8516:79;;:::i;:::-;8478:119;8636:1;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8607:117;8402:329;;;;:::o;8737:474::-;8805:6;8813;8862:2;8850:9;8841:7;8837:23;8833:32;8830:119;;;8868:79;;:::i;:::-;8830:119;8988:1;9013:53;9058:7;9049:6;9038:9;9034:22;9013:53;:::i;:::-;9003:63;;8959:117;9115:2;9141:53;9186:7;9177:6;9166:9;9162:22;9141:53;:::i;:::-;9131:63;;9086:118;8737:474;;;;;:::o;9217:182::-;9357:34;9353:1;9345:6;9341:14;9334:58;9217:182;:::o;9405:366::-;9547:3;9568:67;9632:2;9627:3;9568:67;:::i;:::-;9561:74;;9644:93;9733:3;9644:93;:::i;:::-;9762:2;9757:3;9753:12;9746:19;;9405:366;;;:::o;9777:419::-;9943:4;9981:2;9970:9;9966:18;9958:26;;10030:9;10024:4;10020:20;10016:1;10005:9;10001:17;9994:47;10058:131;10184:4;10058:131;:::i;:::-;10050:139;;9777:419;;;:::o;10202:180::-;10250:77;10247:1;10240:88;10347:4;10344:1;10337:15;10371:4;10368:1;10361:15;10388:348;10428:7;10451:20;10469:1;10451:20;:::i;:::-;10446:25;;10485:20;10503:1;10485:20;:::i;:::-;10480:25;;10673:1;10605:66;10601:74;10598:1;10595:81;10590:1;10583:9;10576:17;10572:105;10569:131;;;10680:18;;:::i;:::-;10569:131;10728:1;10725;10721:9;10710:20;;10388:348;;;;:::o;10742:180::-;10790:77;10787:1;10780:88;10887:4;10884:1;10877:15;10911:4;10908:1;10901:15;10928:185;10968:1;10985:20;11003:1;10985:20;:::i;:::-;10980:25;;11019:20;11037:1;11019:20;:::i;:::-;11014:25;;11058:1;11048:35;;11063:18;;:::i;:::-;11048:35;11105:1;11102;11098:9;11093:14;;10928:185;;;;:::o;11119:170::-;11259:22;11255:1;11247:6;11243:14;11236:46;11119:170;:::o;11295:366::-;11437:3;11458:67;11522:2;11517:3;11458:67;:::i;:::-;11451:74;;11534:93;11623:3;11534:93;:::i;:::-;11652:2;11647:3;11643:12;11636:19;;11295:366;;;:::o;11667:419::-;11833:4;11871:2;11860:9;11856:18;11848:26;;11920:9;11914:4;11910:20;11906:1;11895:9;11891:17;11884:47;11948:131;12074:4;11948:131;:::i;:::-;11940:139;;11667:419;;;:::o;12092:305::-;12132:3;12151:20;12169:1;12151:20;:::i;:::-;12146:25;;12185:20;12203:1;12185:20;:::i;:::-;12180:25;;12339:1;12271:66;12267:74;12264:1;12261:81;12258:107;;;12345:18;;:::i;:::-;12258:107;12389:1;12386;12382:9;12375:16;;12092:305;;;;:::o;12403:225::-;12543:34;12539:1;12531:6;12527:14;12520:58;12612:8;12607:2;12599:6;12595:15;12588:33;12403:225;:::o;12634:366::-;12776:3;12797:67;12861:2;12856:3;12797:67;:::i;:::-;12790:74;;12873:93;12962:3;12873:93;:::i;:::-;12991:2;12986:3;12982:12;12975:19;;12634:366;;;:::o;13006:419::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13259:9;13253:4;13249:20;13245:1;13234:9;13230:17;13223:47;13287:131;13413:4;13287:131;:::i;:::-;13279:139;;13006:419;;;:::o;13431:223::-;13571:34;13567:1;13559:6;13555:14;13548:58;13640:6;13635:2;13627:6;13623:15;13616:31;13431:223;:::o;13660:366::-;13802:3;13823:67;13887:2;13882:3;13823:67;:::i;:::-;13816:74;;13899:93;13988:3;13899:93;:::i;:::-;14017:2;14012:3;14008:12;14001:19;;13660:366;;;:::o;14032:419::-;14198:4;14236:2;14225:9;14221:18;14213:26;;14285:9;14279:4;14275:20;14271:1;14260:9;14256:17;14249:47;14313:131;14439:4;14313:131;:::i;:::-;14305:139;;14032:419;;;:::o;14457:221::-;14597:34;14593:1;14585:6;14581:14;14574:58;14666:4;14661:2;14653:6;14649:15;14642:29;14457:221;:::o;14684:366::-;14826:3;14847:67;14911:2;14906:3;14847:67;:::i;:::-;14840:74;;14923:93;15012:3;14923:93;:::i;:::-;15041:2;15036:3;15032:12;15025:19;;14684:366;;;:::o;15056:419::-;15222:4;15260:2;15249:9;15245:18;15237:26;;15309:9;15303:4;15299:20;15295:1;15284:9;15280:17;15273:47;15337:131;15463:4;15337:131;:::i;:::-;15329:139;;15056:419;;;:::o;15481:224::-;15621:34;15617:1;15609:6;15605:14;15598:58;15690:7;15685:2;15677:6;15673:15;15666:32;15481:224;:::o;15711:366::-;15853:3;15874:67;15938:2;15933:3;15874:67;:::i;:::-;15867:74;;15950:93;16039:3;15950:93;:::i;:::-;16068:2;16063:3;16059:12;16052:19;;15711:366;;;:::o;16083:419::-;16249:4;16287:2;16276:9;16272:18;16264:26;;16336:9;16330:4;16326:20;16322:1;16311:9;16307:17;16300:47;16364:131;16490:4;16364:131;:::i;:::-;16356:139;;16083:419;;;:::o;16508:222::-;16648:34;16644:1;16636:6;16632:14;16625:58;16717:5;16712:2;16704:6;16700:15;16693:30;16508:222;:::o;16736:366::-;16878:3;16899:67;16963:2;16958:3;16899:67;:::i;:::-;16892:74;;16975:93;17064:3;16975:93;:::i;:::-;17093:2;17088:3;17084:12;17077:19;;16736:366;;;:::o;17108:419::-;17274:4;17312:2;17301:9;17297:18;17289:26;;17361:9;17355:4;17351:20;17347:1;17336:9;17332:17;17325:47;17389:131;17515:4;17389:131;:::i;:::-;17381:139;;17108:419;;;:::o;17533:228::-;17673:34;17669:1;17661:6;17657:14;17650:58;17742:11;17737:2;17729:6;17725:15;17718:36;17533:228;:::o;17767:366::-;17909:3;17930:67;17994:2;17989:3;17930:67;:::i;:::-;17923:74;;18006:93;18095:3;18006:93;:::i;:::-;18124:2;18119:3;18115:12;18108:19;;17767:366;;;:::o;18139:419::-;18305:4;18343:2;18332:9;18328:18;18320:26;;18392:9;18386:4;18382:20;18378:1;18367:9;18363:17;18356:47;18420:131;18546:4;18420:131;:::i;:::-;18412:139;;18139:419;;;:::o;18564:250::-;18704:34;18700:1;18692:6;18688:14;18681:58;18773:33;18768:2;18760:6;18756:15;18749:58;18564:250;:::o;18820:366::-;18962:3;18983:67;19047:2;19042:3;18983:67;:::i;:::-;18976:74;;19059:93;19148:3;19059:93;:::i;:::-;19177:2;19172:3;19168:12;19161:19;;18820:366;;;:::o;19192:419::-;19358:4;19396:2;19385:9;19381:18;19373:26;;19445:9;19439:4;19435:20;19431:1;19420:9;19416:17;19409:47;19473:131;19599:4;19473:131;:::i;:::-;19465:139;;19192:419;;;:::o;19617:178::-;19757:30;19753:1;19745:6;19741:14;19734:54;19617:178;:::o;19801:366::-;19943:3;19964:67;20028:2;20023:3;19964:67;:::i;:::-;19957:74;;20040:93;20129:3;20040:93;:::i;:::-;20158:2;20153:3;20149:12;20142:19;;19801:366;;;:::o;20173:419::-;20339:4;20377:2;20366:9;20362:18;20354:26;;20426:9;20420:4;20416:20;20412:1;20401:9;20397:17;20390:47;20454:131;20580:4;20454:131;:::i;:::-;20446:139;;20173:419;;;:::o;20598:222::-;20738:34;20734:1;20726:6;20722:14;20715:58;20807:5;20802:2;20794:6;20790:15;20783:30;20598:222;:::o;20826:366::-;20968:3;20989:67;21053:2;21048:3;20989:67;:::i;:::-;20982:74;;21065:93;21154:3;21065:93;:::i;:::-;21183:2;21178:3;21174:12;21167:19;;20826:366;;;:::o;21198:419::-;21364:4;21402:2;21391:9;21387:18;21379:26;;21451:9;21445:4;21441:20;21437:1;21426:9;21422:17;21415:47;21479:131;21605:4;21479:131;:::i;:::-;21471:139;;21198:419;;;:::o;21623:191::-;21663:4;21683:20;21701:1;21683:20;:::i;:::-;21678:25;;21717:20;21735:1;21717:20;:::i;:::-;21712:25;;21756:1;21753;21750:8;21747:34;;;21761:18;;:::i;:::-;21747:34;21806:1;21803;21799:9;21791:17;;21623:191;;;;:::o;21820:229::-;21960:34;21956:1;21948:6;21944:14;21937:58;22029:12;22024:2;22016:6;22012:15;22005:37;21820:229;:::o;22055:366::-;22197:3;22218:67;22282:2;22277:3;22218:67;:::i;:::-;22211:74;;22294:93;22383:3;22294:93;:::i;:::-;22412:2;22407:3;22403:12;22396:19;;22055:366;;;:::o;22427:419::-;22593:4;22631:2;22620:9;22616:18;22608:26;;22680:9;22674:4;22670:20;22666:1;22655:9;22651:17;22644:47;22708:131;22834:4;22708:131;:::i;:::-;22700:139;;22427:419;;;:::o;22852:180::-;22900:77;22897:1;22890:88;22997:4;22994:1;22987:15;23021:4;23018:1;23011:15;23038:180;23086:77;23083:1;23076:88;23183:4;23180:1;23173:15;23207:4;23204:1;23197:15;23224:143;23281:5;23312:6;23306:13;23297:22;;23328:33;23355:5;23328:33;:::i;:::-;23224:143;;;;:::o;23373:351::-;23443:6;23492:2;23480:9;23471:7;23467:23;23463:32;23460:119;;;23498:79;;:::i;:::-;23460:119;23618:1;23643:64;23699:7;23690:6;23679:9;23675:22;23643:64;:::i;:::-;23633:74;;23589:128;23373:351;;;;:::o;23730:85::-;23775:7;23804:5;23793:16;;23730:85;;;:::o;23821:158::-;23879:9;23912:61;23930:42;23939:32;23965:5;23939:32;:::i;:::-;23930:42;:::i;:::-;23912:61;:::i;:::-;23899:74;;23821:158;;;:::o;23985:147::-;24080:45;24119:5;24080:45;:::i;:::-;24075:3;24068:58;23985:147;;:::o;24138:114::-;24205:6;24239:5;24233:12;24223:22;;24138:114;;;:::o;24258:184::-;24357:11;24391:6;24386:3;24379:19;24431:4;24426:3;24422:14;24407:29;;24258:184;;;;:::o;24448:132::-;24515:4;24538:3;24530:11;;24568:4;24563:3;24559:14;24551:22;;24448:132;;;:::o;24586:108::-;24663:24;24681:5;24663:24;:::i;:::-;24658:3;24651:37;24586:108;;:::o;24700:179::-;24769:10;24790:46;24832:3;24824:6;24790:46;:::i;:::-;24868:4;24863:3;24859:14;24845:28;;24700:179;;;;:::o;24885:113::-;24955:4;24987;24982:3;24978:14;24970:22;;24885:113;;;:::o;25034:732::-;25153:3;25182:54;25230:5;25182:54;:::i;:::-;25252:86;25331:6;25326:3;25252:86;:::i;:::-;25245:93;;25362:56;25412:5;25362:56;:::i;:::-;25441:7;25472:1;25457:284;25482:6;25479:1;25476:13;25457:284;;;25558:6;25552:13;25585:63;25644:3;25629:13;25585:63;:::i;:::-;25578:70;;25671:60;25724:6;25671:60;:::i;:::-;25661:70;;25517:224;25504:1;25501;25497:9;25492:14;;25457:284;;;25461:14;25757:3;25750:10;;25158:608;;;25034:732;;;;:::o;25772:831::-;26035:4;26073:3;26062:9;26058:19;26050:27;;26087:71;26155:1;26144:9;26140:17;26131:6;26087:71;:::i;:::-;26168:80;26244:2;26233:9;26229:18;26220:6;26168:80;:::i;:::-;26295:9;26289:4;26285:20;26280:2;26269:9;26265:18;26258:48;26323:108;26426:4;26417:6;26323:108;:::i;:::-;26315:116;;26441:72;26509:2;26498:9;26494:18;26485:6;26441:72;:::i;:::-;26523:73;26591:3;26580:9;26576:19;26567:6;26523:73;:::i;:::-;25772:831;;;;;;;;:::o;26609:177::-;26749:29;26745:1;26737:6;26733:14;26726:53;26609:177;:::o;26792:366::-;26934:3;26955:67;27019:2;27014:3;26955:67;:::i;:::-;26948:74;;27031:93;27120:3;27031:93;:::i;:::-;27149:2;27144:3;27140:12;27133:19;;26792:366;;;:::o;27164:419::-;27330:4;27368:2;27357:9;27353:18;27345:26;;27417:9;27411:4;27407:20;27403:1;27392:9;27388:17;27381:47;27445:131;27571:4;27445:131;:::i;:::-;27437:139;;27164:419;;;:::o;27589:220::-;27729:34;27725:1;27717:6;27713:14;27706:58;27798:3;27793:2;27785:6;27781:15;27774:28;27589:220;:::o;27815:366::-;27957:3;27978:67;28042:2;28037:3;27978:67;:::i;:::-;27971:74;;28054:93;28143:3;28054:93;:::i;:::-;28172:2;28167:3;28163:12;28156:19;;27815:366;;;:::o;28187:419::-;28353:4;28391:2;28380:9;28376:18;28368:26;;28440:9;28434:4;28430:20;28426:1;28415:9;28411:17;28404:47;28468:131;28594:4;28468:131;:::i;:::-;28460:139;;28187:419;;;:::o

Swarm Source

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