ETH Price: $3,258.01 (-0.32%)
Gas: 1 Gwei

Token

Tibetan Mastiff (MAST)
 

Overview

Max Total Supply

1,000,000,000 MAST

Holders

73

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,710,994.193116168 MAST

Value
$0.00
0x9bB866FCca1959953f233C8885FE6100F8768186
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:
TibetanMastiff

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-01
*/

/**

𝒯𝒾𝒷ℯ𝓉𝒶𝓃 ℳ𝒶𝓈𝓉𝒾𝒻𝒻

Website (coming soon): https://www.tibetanmastiff.dog

Twitter: https://twitter.com/MastiffERC20
Telegram: https://t.me/MastiffERC20

$MAST is a Chinese dog breed meme coin run by an experienced Chinese team.

*********

**/


// SPDX-License-Identifier: MIT
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 internal _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 TibetanMastiff  is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Tibetan Mastiff";
    string private constant _symbol = "MAST";
    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;
    mapping(address => bool) private _isExcludedFromMax;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _tTotal = 1_000_000_000 * 10**9;

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 25;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 35;
 
    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 _marketingAddress = payable(0x043047f36671d6193E412d0B0b8af49eD64c1BBE);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    address private _uncxLPLocker = 0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = _tTotal.mul(100).div(100);
    uint256 public _maxWalletSize = _tTotal.mul(2).div(100); 
    uint256 public _swapTokensAtAmount = _tTotal.mul(1).div(1000);
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(_uniswapV2Router)] = true;
        _isExcludedFromFee[_uncxLPLocker] = true; //UNCX LP Lock address

        _isExcludedFromMax[owner()] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[_marketingAddress] = true;
        _isExcludedFromMax[address(_uniswapV2Router)] = true;
        _isExcludedFromMax[_uncxLPLocker] = true; //UNCX LP Lock address


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

    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            if (!_isExcludedFromMax[from]){
                require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            }
            
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair && !_isExcludedFromMax[to]) {
                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;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
 
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
 
    function manualswap() external {
        require( _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require( _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unsetBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    function setMaxWalletSize(uint256 amountPercent) public onlyOwner {
        require(amountPercent>0);
        _maxWalletSize = (_tTotal * amountPercent ) / 100;
    }

    function removeLimits() external 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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unsetBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c919062000b80565b6000196200002b919062000be7565b60075560006009556019600a556000600b556023600c55600b54600d55600c54600e55600d54600f55600e5460105573043047f36671d6193e412d0b0b8af49ed64c1bbe601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073663a5c229c09b049e36dcc11a9b0d4a8eb9db214601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550620001766064620001626064670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b601755620001b66064620001a26002670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b601855620001f76103e8620001e36001670de0b6b3a7640000620009d860201b6200137d1790919060201c565b62000a5c60201b620013f81790919060201c565b6019553480156200020757600080fd5b5060006200021a62000aae60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460026000620002cf62000aae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000c8c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044c57600080fd5b505afa15801562000461573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000487919062000c8c565b6040518363ffffffff1660e01b8152600401620004a692919062000ccf565b602060405180830381600087803b158015620004c157600080fd5b505af1158015620004d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fc919062000c8c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200055262000ab660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660006200075d62000ab660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200096262000aae60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620009c9919062000d0d565b60405180910390a35062000f23565b600080831415620009ed576000905062000a56565b60008284620009fd919062000d2a565b905082848262000a0e919062000d8b565b1462000a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a489062000e4a565b60405180910390fd5b809150505b92915050565b600062000aa683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000adf60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000b29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b20919062000eff565b60405180910390fd5b506000838562000b3a919062000d8b565b9050809150509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b8d8262000b47565b915062000b9a8362000b47565b92508262000bad5762000bac62000b51565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bf48262000b47565b915062000c018362000b47565b92508282101562000c175762000c1662000bb8565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c548262000c27565b9050919050565b62000c668162000c47565b811462000c7257600080fd5b50565b60008151905062000c868162000c5b565b92915050565b60006020828403121562000ca55762000ca462000c22565b5b600062000cb58482850162000c75565b91505092915050565b62000cc98162000c47565b82525050565b600060408201905062000ce6600083018562000cbe565b62000cf5602083018462000cbe565b9392505050565b62000d078162000b47565b82525050565b600060208201905062000d24600083018462000cfc565b92915050565b600062000d378262000b47565b915062000d448362000b47565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d805762000d7f62000bb8565b5b828202905092915050565b600062000d988262000b47565b915062000da58362000b47565b92508262000db85762000db762000b51565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000e3260218362000dc3565b915062000e3f8262000dd4565b604082019050919050565b6000602082019050818103600083015262000e658162000e23565b9050919050565b600081519050919050565b60005b8381101562000e9757808201518184015260208101905062000e7a565b8381111562000ea7576000848401525b50505050565b6000601f19601f8301169050919050565b600062000ecb8262000e6c565b62000ed7818562000dc3565b935062000ee981856020860162000e77565b62000ef48162000ead565b840191505092915050565b6000602082019050818103600083015262000f1b818462000ebe565b905092915050565b613af08062000f336000396000f3fe6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a9059cbb14610552578063b515566a1461058f578063bfd79284146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104aa57806395d89b41146104d557806398a5c31514610500578063a2a957bb14610529576101c2565b80637f2feddc146104195780638da5cb5b146104565780638f70ccf714610481576101c2565b8063313ce5671161015957806370a082311161013357806370a0823114610383578063715018a6146103c0578063751039fc146103d75780637d1db4a5146103ee576101c2565b8063313ce5671461031657806349bd5a5e146103415780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632b89628b146102c25780632fd689e3146102eb576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612a05565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612acf565b6106d8565b6040516102269190612b2a565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612ba4565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612bce565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be9565b61072c565b6040516102b99190612b2a565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c3c565b610805565b005b3480156102f757600080fd5b506103006108f5565b60405161030d9190612bce565b60405180910390f35b34801561032257600080fd5b5061032b6108fb565b6040516103389190612c85565b60405180910390f35b34801561034d57600080fd5b50610356610904565b6040516103639190612caf565b60405180910390f35b34801561037857600080fd5b5061038161092a565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c3c565b61099c565b6040516103b79190612bce565b60405180910390f35b3480156103cc57600080fd5b506103d56109ed565b005b3480156103e357600080fd5b506103ec610b40565b005b3480156103fa57600080fd5b50610403610bf5565b6040516104109190612bce565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612c3c565b610bfb565b60405161044d9190612bce565b60405180910390f35b34801561046257600080fd5b5061046b610c13565b6040516104789190612caf565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612cf6565b610c3c565b005b3480156104b657600080fd5b506104bf610cee565b6040516104cc9190612bce565b60405180910390f35b3480156104e157600080fd5b506104ea610cf4565b6040516104f79190612a05565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612d23565b610d31565b005b34801561053557600080fd5b50610550600480360381019061054b9190612d50565b610dd0565b005b34801561055e57600080fd5b5061057960048036038101906105749190612acf565b610e87565b6040516105869190612b2a565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612eff565b610ea5565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612c3c565b610fcf565b6040516105ec9190612b2a565b60405180910390f35b34801561060157600080fd5b5061060a610fef565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f48565b611069565b6040516106409190612bce565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612d23565b6110f0565b005b34801561067e57600080fd5b5061069960048036038101906106949190612c3c565b6111bb565b005b60606040518060400160405280600f81526020017f5469626574616e204d6173746966660000000000000000000000000000000000815250905090565b60006106ec6106e5611442565b848461144a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610739848484611615565b6107fa84610745611442565b6107f585604051806060016040528060288152602001613a9360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611442565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b61144a565b600190509392505050565b61080d611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612fd4565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096b611442565b73ffffffffffffffffffffffffffffffffffffffff161461098b57600080fd5b600047905061099981611fa8565b50565b60006109e6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612014565b9050919050565b6109f5611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7990612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612fd4565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c44611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890612fd4565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600481526020017f4d41535400000000000000000000000000000000000000000000000000000000815250905090565b610d39611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90612fd4565b60405180910390fd5b8060198190555050565b610dd8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612fd4565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610e9b610e94611442565b8484611615565b6001905092915050565b610ead611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612fd4565b60405180910390fd5b60005b8151811015610fcb57600160116000848481518110610f5f57610f5e612ff4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fc390613052565b915050610f3d565b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611030611442565b73ffffffffffffffffffffffffffffffffffffffff161461105057600080fd5b600061105b3061099c565b905061106681612082565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110f8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90612fd4565b60405180910390fd5b6000811161119257600080fd5b606481670de0b6b3a76400006111a8919061309b565b6111b29190613124565b60188190555050565b6111c3611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906131c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561139057600090506113f2565b6000828461139e919061309b565b90508284826113ad9190613124565b146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613259565b60405180910390fd5b809150505b92915050565b600061143a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906132eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561152a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115219061337d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116089190612bce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061340f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906134a1565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613533565b60405180910390fd5b611740610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610c13565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4357601660149054906101000a900460ff1661183d576117cf610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906135c5565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d4576017548111156118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90613631565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119785750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906136c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5f5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc5760185481611a718461099c565b611a7b91906136e3565b10611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137ab565b60405180910390fd5b5b6000611ac73061099c565b9050600060195482101590506017548210611ae25760175491505b808015611afc5750601660159054906101000a900460ff16155b8015611b565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c575060168054906101000a900460ff165b8015611bc25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c185750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4057611c2682612082565b60004790506000811115611c3e57611c3d47611fa8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dab5760009050611f32565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e565750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e6e57600954600d81905550600a54600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3157600b54600d81905550600c54600e819055505b5b611f3e8484848461236d565b50505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839190612a05565b60405180910390fd5b5060008385611f9b91906137cb565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612010573d6000803e3d6000fd5b5050565b600060075482111561205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613871565b60405180910390fd5b600061206561239a565b905061207a81846113f890919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ba576120b9612dbc565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da91906138a6565b816001815181106121ee576121ed612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122b99594939291906139cc565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489190612a05565b60405180910390fd5b50600083856123609190613124565b9050809150509392505050565b8061237b5761237a6123c5565b5b612386848484612408565b80612394576123936125d3565b5b50505050565b60008060006123a76125e7565b915091506123be81836113f890919063ffffffff16565b9250505090565b6000600d541480156123d957506000600e54145b156123e357612406565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061241a87612646565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ae90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255981612756565b6125638483612813565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612bce565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a7640000905061261b670de0b6b3a76400006007546113f890919063ffffffff16565b82101561263957600754670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b60008060008060008060008060006126638a600d54600e5461284d565b925092509250600061267361239a565b905060008060006126868e8787876128e3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600080828461270791906136e3565b90508381101561274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274390613a72565b60405180910390fd5b8091505092915050565b600061276061239a565b90506000612777828461137d90919063ffffffff16565b90506127cb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612828826007546126ae90919063ffffffff16565b600781905550612843816008546126f890919063ffffffff16565b6008819055505050565b600080600080612879606461286b888a61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128a36064612895888b61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128cc826128be858c6126ae90919063ffffffff16565b6126ae90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fc858961137d90919063ffffffff16565b90506000612913868961137d90919063ffffffff16565b9050600061292a878961137d90919063ffffffff16565b905060006129538261294585876126ae90919063ffffffff16565b6126ae90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6682612a3b565b9050919050565b612a7681612a5b565b8114612a8157600080fd5b50565b600081359050612a9381612a6d565b92915050565b6000819050919050565b612aac81612a99565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b60008060408385031215612ae657612ae5612a31565b5b6000612af485828601612a84565b9250506020612b0585828601612aba565b9150509250929050565b60008115159050919050565b612b2481612b0f565b82525050565b6000602082019050612b3f6000830184612b1b565b92915050565b6000819050919050565b6000612b6a612b65612b6084612a3b565b612b45565b612a3b565b9050919050565b6000612b7c82612b4f565b9050919050565b6000612b8e82612b71565b9050919050565b612b9e81612b83565b82525050565b6000602082019050612bb96000830184612b95565b92915050565b612bc881612a99565b82525050565b6000602082019050612be36000830184612bbf565b92915050565b600080600060608486031215612c0257612c01612a31565b5b6000612c1086828701612a84565b9350506020612c2186828701612a84565b9250506040612c3286828701612aba565b9150509250925092565b600060208284031215612c5257612c51612a31565b5b6000612c6084828501612a84565b91505092915050565b600060ff82169050919050565b612c7f81612c69565b82525050565b6000602082019050612c9a6000830184612c76565b92915050565b612ca981612a5b565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612b0f565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612a31565b5b6000612d1a84828501612ce1565b91505092915050565b600060208284031215612d3957612d38612a31565b5b6000612d4784828501612aba565b91505092915050565b60008060008060808587031215612d6a57612d69612a31565b5b6000612d7887828801612aba565b9450506020612d8987828801612aba565b9350506040612d9a87828801612aba565b9250506060612dab87828801612aba565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df4826129bb565b810181811067ffffffffffffffff82111715612e1357612e12612dbc565b5b80604052505050565b6000612e26612a27565b9050612e328282612deb565b919050565b600067ffffffffffffffff821115612e5257612e51612dbc565b5b602082029050602081019050919050565b600080fd5b6000612e7b612e7684612e37565b612e1c565b90508083825260208201905060208402830185811115612e9e57612e9d612e63565b5b835b81811015612ec75780612eb38882612a84565b845260208401935050602081019050612ea0565b5050509392505050565b600082601f830112612ee657612ee5612db7565b5b8135612ef6848260208601612e68565b91505092915050565b600060208284031215612f1557612f14612a31565b5b600082013567ffffffffffffffff811115612f3357612f32612a36565b5b612f3f84828501612ed1565b91505092915050565b60008060408385031215612f5f57612f5e612a31565b5b6000612f6d85828601612a84565b9250506020612f7e85828601612a84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fbe602083612977565b9150612fc982612f88565b602082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061305d82612a99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130905761308f613023565b5b600182019050919050565b60006130a682612a99565b91506130b183612a99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130ea576130e9613023565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312f82612a99565b915061313a83612a99565b92508261314a576131496130f5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b1602683612977565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613243602183612977565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602483612977565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613367602283612977565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f9602583612977565b91506134048261339d565b604082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061348b602383612977565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351d602983612977565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006135af603f83612977565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061361b601c83612977565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006136ad602383612977565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b60006136ee82612a99565b91506136f983612a99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561372e5761372d613023565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602383612977565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b60006137d682612a99565b91506137e183612a99565b9250828210156137f4576137f3613023565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061385b602a83612977565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b6000815190506138a081612a6d565b92915050565b6000602082840312156138bc576138bb612a31565b5b60006138ca84828501613891565b91505092915050565b6000819050919050565b60006138f86138f36138ee846138d3565b612b45565b612a99565b9050919050565b613908816138dd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61394381612a5b565b82525050565b6000613955838361393a565b60208301905092915050565b6000602082019050919050565b60006139798261390e565b6139838185613919565b935061398e8361392a565b8060005b838110156139bf5781516139a68882613949565b97506139b183613961565b925050600181019050613992565b5085935050505092915050565b600060a0820190506139e16000830188612bbf565b6139ee60208301876138ff565b8181036040830152613a00818661396e565b9050613a0f6060830185612ca0565b613a1c6080830184612bbf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a5c601b83612977565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059438c96e696e47a6aff14e4029aad4d7b78a3c7a1afff04c80c1412a6f9b38a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd80146105f5578063dd62ed3e1461060c578063ea1644d514610649578063f2fde38b14610672576101c2565b8063a9059cbb14610552578063b515566a1461058f578063bfd79284146105b8576101c2565b80638f9a55c0116100c65780638f9a55c0146104aa57806395d89b41146104d557806398a5c31514610500578063a2a957bb14610529576101c2565b80637f2feddc146104195780638da5cb5b146104565780638f70ccf714610481576101c2565b8063313ce5671161015957806370a082311161013357806370a0823114610383578063715018a6146103c0578063751039fc146103d75780637d1db4a5146103ee576101c2565b8063313ce5671461031657806349bd5a5e146103415780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632b89628b146102c25780632fd689e3146102eb576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069b565b6040516101e99190612a05565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612acf565b6106d8565b6040516102269190612b2a565b60405180910390f35b34801561023b57600080fd5b506102446106f6565b6040516102519190612ba4565b60405180910390f35b34801561026657600080fd5b5061026f61071c565b60405161027c9190612bce565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612be9565b61072c565b6040516102b99190612b2a565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612c3c565b610805565b005b3480156102f757600080fd5b506103006108f5565b60405161030d9190612bce565b60405180910390f35b34801561032257600080fd5b5061032b6108fb565b6040516103389190612c85565b60405180910390f35b34801561034d57600080fd5b50610356610904565b6040516103639190612caf565b60405180910390f35b34801561037857600080fd5b5061038161092a565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c3c565b61099c565b6040516103b79190612bce565b60405180910390f35b3480156103cc57600080fd5b506103d56109ed565b005b3480156103e357600080fd5b506103ec610b40565b005b3480156103fa57600080fd5b50610403610bf5565b6040516104109190612bce565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612c3c565b610bfb565b60405161044d9190612bce565b60405180910390f35b34801561046257600080fd5b5061046b610c13565b6040516104789190612caf565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a39190612cf6565b610c3c565b005b3480156104b657600080fd5b506104bf610cee565b6040516104cc9190612bce565b60405180910390f35b3480156104e157600080fd5b506104ea610cf4565b6040516104f79190612a05565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190612d23565b610d31565b005b34801561053557600080fd5b50610550600480360381019061054b9190612d50565b610dd0565b005b34801561055e57600080fd5b5061057960048036038101906105749190612acf565b610e87565b6040516105869190612b2a565b60405180910390f35b34801561059b57600080fd5b506105b660048036038101906105b19190612eff565b610ea5565b005b3480156105c457600080fd5b506105df60048036038101906105da9190612c3c565b610fcf565b6040516105ec9190612b2a565b60405180910390f35b34801561060157600080fd5b5061060a610fef565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f48565b611069565b6040516106409190612bce565b60405180910390f35b34801561065557600080fd5b50610670600480360381019061066b9190612d23565b6110f0565b005b34801561067e57600080fd5b5061069960048036038101906106949190612c3c565b6111bb565b005b60606040518060400160405280600f81526020017f5469626574616e204d6173746966660000000000000000000000000000000000815250905090565b60006106ec6106e5611442565b848461144a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6000610739848484611615565b6107fa84610745611442565b6107f585604051806060016040528060288152602001613a9360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107ab611442565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f449092919063ffffffff16565b61144a565b600190509392505050565b61080d611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612fd4565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60195481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096b611442565b73ffffffffffffffffffffffffffffffffffffffff161461098b57600080fd5b600047905061099981611fa8565b50565b60006109e6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612014565b9050919050565b6109f5611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7990612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b48611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90612fd4565b60405180910390fd5b670de0b6b3a7640000601781905550670de0b6b3a7640000601881905550565b60175481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c44611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc890612fd4565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600481526020017f4d41535400000000000000000000000000000000000000000000000000000000815250905090565b610d39611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbd90612fd4565b60405180910390fd5b8060198190555050565b610dd8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c90612fd4565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b6000610e9b610e94611442565b8484611615565b6001905092915050565b610ead611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612fd4565b60405180910390fd5b60005b8151811015610fcb57600160116000848481518110610f5f57610f5e612ff4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fc390613052565b915050610f3d565b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611030611442565b73ffffffffffffffffffffffffffffffffffffffff161461105057600080fd5b600061105b3061099c565b905061106681612082565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110f8611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90612fd4565b60405180910390fd5b6000811161119257600080fd5b606481670de0b6b3a76400006111a8919061309b565b6111b29190613124565b60188190555050565b6111c3611442565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906131c7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561139057600090506113f2565b6000828461139e919061309b565b90508284826113ad9190613124565b146113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613259565b60405180910390fd5b809150505b92915050565b600061143a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061230a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b1906132eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561152a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115219061337d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116089190612bce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c9061340f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906134a1565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90613533565b60405180910390fd5b611740610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610c13565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c4357601660149054906101000a900460ff1661183d576117cf610c13565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906135c5565b60405180910390fd5b5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d4576017548111156118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca90613631565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119785750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906136c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611a5f5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc5760185481611a718461099c565b611a7b91906136e3565b10611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137ab565b60405180910390fd5b5b6000611ac73061099c565b9050600060195482101590506017548210611ae25760175491505b808015611afc5750601660159054906101000a900460ff16155b8015611b565750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b6c575060168054906101000a900460ff165b8015611bc25750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c185750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c4057611c2682612082565b60004790506000811115611c3e57611c3d47611fa8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cea5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d9d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611dab5760009050611f32565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e565750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e6e57600954600d81905550600a54600e819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f3157600b54600d81905550600c54600e819055505b5b611f3e8484848461236d565b50505050565b6000838311158290611f8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f839190612a05565b60405180910390fd5b5060008385611f9b91906137cb565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612010573d6000803e3d6000fd5b5050565b600060075482111561205b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205290613871565b60405180910390fd5b600061206561239a565b905061207a81846113f890919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120ba576120b9612dbc565b5b6040519080825280602002602001820160405280156120e85781602001602082028036833780820191505090505b5090503081600081518110612100576120ff612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121a257600080fd5b505afa1580156121b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121da91906138a6565b816001815181106121ee576121ed612ff4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061225530601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122b99594939291906139cc565b600060405180830381600087803b1580156122d357600080fd5b505af11580156122e7573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b60008083118290612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123489190612a05565b60405180910390fd5b50600083856123609190613124565b9050809150509392505050565b8061237b5761237a6123c5565b5b612386848484612408565b80612394576123936125d3565b5b50505050565b60008060006123a76125e7565b915091506123be81836113f890919063ffffffff16565b9250505090565b6000600d541480156123d957506000600e54145b156123e357612406565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b60008060008060008061241a87612646565b95509550955095509550955061247886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ae90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061250d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255981612756565b6125638483612813565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516125c09190612bce565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b600080600060075490506000670de0b6b3a7640000905061261b670de0b6b3a76400006007546113f890919063ffffffff16565b82101561263957600754670de0b6b3a7640000935093505050612642565b81819350935050505b9091565b60008060008060008060008060006126638a600d54600e5461284d565b925092509250600061267361239a565b905060008060006126868e8787876128e3565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006126f083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f44565b905092915050565b600080828461270791906136e3565b90508381101561274c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274390613a72565b60405180910390fd5b8091505092915050565b600061276061239a565b90506000612777828461137d90919063ffffffff16565b90506127cb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126f890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612828826007546126ae90919063ffffffff16565b600781905550612843816008546126f890919063ffffffff16565b6008819055505050565b600080600080612879606461286b888a61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128a36064612895888b61137d90919063ffffffff16565b6113f890919063ffffffff16565b905060006128cc826128be858c6126ae90919063ffffffff16565b6126ae90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128fc858961137d90919063ffffffff16565b90506000612913868961137d90919063ffffffff16565b9050600061292a878961137d90919063ffffffff16565b905060006129538261294585876126ae90919063ffffffff16565b6126ae90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6682612a3b565b9050919050565b612a7681612a5b565b8114612a8157600080fd5b50565b600081359050612a9381612a6d565b92915050565b6000819050919050565b612aac81612a99565b8114612ab757600080fd5b50565b600081359050612ac981612aa3565b92915050565b60008060408385031215612ae657612ae5612a31565b5b6000612af485828601612a84565b9250506020612b0585828601612aba565b9150509250929050565b60008115159050919050565b612b2481612b0f565b82525050565b6000602082019050612b3f6000830184612b1b565b92915050565b6000819050919050565b6000612b6a612b65612b6084612a3b565b612b45565b612a3b565b9050919050565b6000612b7c82612b4f565b9050919050565b6000612b8e82612b71565b9050919050565b612b9e81612b83565b82525050565b6000602082019050612bb96000830184612b95565b92915050565b612bc881612a99565b82525050565b6000602082019050612be36000830184612bbf565b92915050565b600080600060608486031215612c0257612c01612a31565b5b6000612c1086828701612a84565b9350506020612c2186828701612a84565b9250506040612c3286828701612aba565b9150509250925092565b600060208284031215612c5257612c51612a31565b5b6000612c6084828501612a84565b91505092915050565b600060ff82169050919050565b612c7f81612c69565b82525050565b6000602082019050612c9a6000830184612c76565b92915050565b612ca981612a5b565b82525050565b6000602082019050612cc46000830184612ca0565b92915050565b612cd381612b0f565b8114612cde57600080fd5b50565b600081359050612cf081612cca565b92915050565b600060208284031215612d0c57612d0b612a31565b5b6000612d1a84828501612ce1565b91505092915050565b600060208284031215612d3957612d38612a31565b5b6000612d4784828501612aba565b91505092915050565b60008060008060808587031215612d6a57612d69612a31565b5b6000612d7887828801612aba565b9450506020612d8987828801612aba565b9350506040612d9a87828801612aba565b9250506060612dab87828801612aba565b91505092959194509250565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612df4826129bb565b810181811067ffffffffffffffff82111715612e1357612e12612dbc565b5b80604052505050565b6000612e26612a27565b9050612e328282612deb565b919050565b600067ffffffffffffffff821115612e5257612e51612dbc565b5b602082029050602081019050919050565b600080fd5b6000612e7b612e7684612e37565b612e1c565b90508083825260208201905060208402830185811115612e9e57612e9d612e63565b5b835b81811015612ec75780612eb38882612a84565b845260208401935050602081019050612ea0565b5050509392505050565b600082601f830112612ee657612ee5612db7565b5b8135612ef6848260208601612e68565b91505092915050565b600060208284031215612f1557612f14612a31565b5b600082013567ffffffffffffffff811115612f3357612f32612a36565b5b612f3f84828501612ed1565b91505092915050565b60008060408385031215612f5f57612f5e612a31565b5b6000612f6d85828601612a84565b9250506020612f7e85828601612a84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fbe602083612977565b9150612fc982612f88565b602082019050919050565b60006020820190508181036000830152612fed81612fb1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061305d82612a99565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130905761308f613023565b5b600182019050919050565b60006130a682612a99565b91506130b183612a99565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130ea576130e9613023565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312f82612a99565b915061313a83612a99565b92508261314a576131496130f5565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131b1602683612977565b91506131bc82613155565b604082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613243602183612977565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132d5602483612977565b91506132e082613279565b604082019050919050565b60006020820190508181036000830152613304816132c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613367602283612977565b91506133728261330b565b604082019050919050565b600060208201905081810360008301526133968161335a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133f9602583612977565b91506134048261339d565b604082019050919050565b60006020820190508181036000830152613428816133ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061348b602383612977565b91506134968261342f565b604082019050919050565b600060208201905081810360008301526134ba8161347e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351d602983612977565b9150613528826134c1565b604082019050919050565b6000602082019050818103600083015261354c81613510565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006135af603f83612977565b91506135ba82613553565b604082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061361b601c83612977565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006136ad602383612977565b91506136b882613651565b604082019050919050565b600060208201905081810360008301526136dc816136a0565b9050919050565b60006136ee82612a99565b91506136f983612a99565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561372e5761372d613023565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613795602383612977565b91506137a082613739565b604082019050919050565b600060208201905081810360008301526137c481613788565b9050919050565b60006137d682612a99565b91506137e183612a99565b9250828210156137f4576137f3613023565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061385b602a83612977565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b6000815190506138a081612a6d565b92915050565b6000602082840312156138bc576138bb612a31565b5b60006138ca84828501613891565b91505092915050565b6000819050919050565b60006138f86138f36138ee846138d3565b612b45565b612a99565b9050919050565b613908816138dd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61394381612a5b565b82525050565b6000613955838361393a565b60208301905092915050565b6000602082019050919050565b60006139798261390e565b6139838185613919565b935061398e8361392a565b8060005b838110156139bf5781516139a68882613949565b97506139b183613961565b925050600181019050613992565b5085935050505092915050565b600060a0820190506139e16000830188612bbf565b6139ee60208301876138ff565b8181036040830152613a00818661396e565b9050613a0f6060830185612ca0565b613a1c6080830184612bbf565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a5c601b83612977565b9150613a6782613a26565b602082019050919050565b60006020820190508181036000830152613a8b81613a4f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122059438c96e696e47a6aff14e4029aad4d7b78a3c7a1afff04c80c1412a6f9b38a64736f6c63430008090033

Deployed Bytecode Sourcemap

4395:13624:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7347:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8279:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5706:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7627:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8481:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13758:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6106:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7535:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5754:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13376:197;;;;;;;;;;;;;:::i;:::-;;7731:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1869:148;;;;;;;;;;;;;:::i;:::-;;17894:118;;;;;;;;;;;;;:::i;:::-;;5981:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5551:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1653:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13059:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6043:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7439:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17569:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17265:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7878:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13582:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5513:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13169:198;;;;;;;;;;;;;:::i;:::-;;8086:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17717:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2026:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7347:83;7384:13;7417:5;;;;;;;;;;;;;;;;;7410:12;;7347:83;:::o;8279:193::-;8381:4;8403:39;8412:12;:10;:12::i;:::-;8426:7;8435:6;8403:8;:39::i;:::-;8460:4;8453:11;;8279:193;;;;:::o;5706:41::-;;;;;;;;;;;;;:::o;7627:95::-;7680:7;5019:21;7700:14;;7627:95;:::o;8481:446::-;8613:4;8630:36;8640:6;8648:9;8659:6;8630:9;:36::i;:::-;8677:220;8700:6;8721:12;:10;:12::i;:::-;8748:138;8804:6;8748:138;;;;;;;;;;;;;;;;;:11;:19;8760:6;8748:19;;;;;;;;;;;;;;;:33;8768:12;:10;:12::i;:::-;8748:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8677:8;:220::i;:::-;8915:4;8908:11;;8481:446;;;;;:::o;13758:90::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13835:5:::1;13820:4;:12;13825:6;13820:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13758:90:::0;:::o;6106:61::-;;;;:::o;7535:83::-;7576:5;4632:1;7594:16;;7535:83;:::o;5754:28::-;;;;;;;;;;;;;:::o;13376:197::-;13443:17;;;;;;;;;;;13427:33;;:12;:10;:12::i;:::-;:33;;;13418:43;;;;;;13472:26;13501:21;13472:50;;13533:32;13546:18;13533:12;:32::i;:::-;13407:166;13376:197::o;7731:138::-;7797:7;7824:37;7844:7;:16;7852:7;7844:16;;;;;;;;;;;;;;;;7824:19;:37::i;:::-;7817:44;;7731:138;;;:::o;1869:148::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1976:1:::1;1939:40;;1960:6;::::0;::::1;;;;;;;;1939:40;;;;;;;;;;;;2007:1;1990:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1869:148::o:0;17894:118::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5019:21:::1;17947:12;:22;;;;5019:21;17980:14;:24;;;;17894:118::o:0;5981:55::-;;;;:::o;5551:43::-;;;;;;;;;;;;;;;;;:::o;1653:79::-;1691:7;1718:6;;;;;;;;;;;1711:13;;1653:79;:::o;13059:101::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13140:12:::1;13126:11;;:26;;;;;;;;;;;;;;;;;;13059:101:::0;:::o;6043:55::-;;;;:::o;7439:87::-;7478:13;7511:7;;;;;;;;;;;;;;;;;7504:14;;7439:87;:::o;17569:139::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17682:18:::1;17660:19;:40;;;;17569:139:::0;:::o;17265:295::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17418:13:::1;17401:14;:30;;;;17460:14;17442:15;:32;;;;17500:11;17485:12;:26;;;;17538:12;17522:13;:28;;;;17265:295:::0;;;;:::o;7878:199::-;7983:4;8005:42;8015:12;:10;:12::i;:::-;8029:9;8040:6;8005:9;:42::i;:::-;8065:4;8058:11;;7878:199;;;;:::o;13582:167::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13656:9:::1;13651:91;13675:5;:12;13671:1;:16;13651:91;;;13726:4;13709;:14;13714:5;13720:1;13714:8;;;;;;;;:::i;:::-;;;;;;;;13709:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13689:3;;;;;:::i;:::-;;;;13651:91;;;;13582:167:::0;:::o;5513:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13169:198::-;13236:17;;;;;;;;;;;13220:33;;:12;:10;:12::i;:::-;:33;;;13211:43;;;;;;13265:23;13291:24;13309:4;13291:9;:24::i;:::-;13265:50;;13326:33;13343:15;13326:16;:33::i;:::-;13200:167;13169:198::o;8086:184::-;8203:7;8235:11;:18;8247:5;8235:18;;;;;;;;;;;;;;;:27;8254:7;8235:27;;;;;;;;;;;;;;;;8228:34;;8086:184;;;;:::o;17717:169::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17816:1:::1;17802:13;:15;17794:24;;;::::0;::::1;;17875:3;17857:13;5019:21;17847:23;;;;:::i;:::-;17846:32;;;;:::i;:::-;17829:14;:49;;;;17717:169:::0;:::o;2026:244::-;1791:12;:10;:12::i;:::-;1781:22;;:6;;;;;;;;;;:22;;;1773:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2135:1:::1;2115:22;;:8;:22;;;;2107:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2225:8;2196:38;;2217:6;::::0;::::1;;;;;;;;2196:38;;;;;;;;;;;;2254:8;2245:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2026:244:::0;:::o;2870:246::-;2928:7;2957:1;2952;:6;2948:47;;;2982:1;2975:8;;;;2948:47;3005:9;3021:1;3017;:5;;;;:::i;:::-;3005:17;;3050:1;3045;3041;:5;;;;:::i;:::-;:10;3033:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3107:1;3100:8;;;2870:246;;;;;:::o;3125:132::-;3183:7;3210:39;3214:1;3217;3210:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3203:46;;3125:132;;;;:::o;401:98::-;454:7;481:10;474:17;;401:98;:::o;9624:369::-;9768:1;9751:19;;:5;:19;;;;9743:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9849:1;9830:21;;:7;:21;;;;9822:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9931:6;9901:11;:18;9913:5;9901:18;;;;;;;;;;;;;;;:27;9920:7;9901:27;;;;;;;;;;;;;;;:36;;;;9969:7;9953:32;;9962:5;9953:32;;;9978:6;9953:32;;;;;;:::i;:::-;;;;;;;;9624:369;;;:::o;10002:2448::-;10140:1;10124:18;;:4;:18;;;;10116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10217:1;10203:16;;:2;:16;;;;10195:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10287:1;10278:6;:10;10270:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10360:7;:5;:7::i;:::-;10352:15;;:4;:15;;;;:32;;;;;10377:7;:5;:7::i;:::-;10371:13;;:2;:13;;;;10352:32;10348:1369;;;10442:11;;;;;;;;;;;10437:144;;10490:7;:5;:7::i;:::-;10482:15;;:4;:15;;;10474:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10437:144;10602:18;:24;10621:4;10602:24;;;;;;;;;;;;;;;;;;;;;;;;;10597:128;;10664:12;;10654:6;:22;;10646:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10597:128;10762:4;:10;10767:4;10762:10;;;;;;;;;;;;;;;;;;;;;;;;;10761:11;:24;;;;;10777:4;:8;10782:2;10777:8;;;;;;;;;;;;;;;;;;;;;;;;;10776:9;10761:24;10753:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10852:13;;;;;;;;;;;10846:19;;:2;:19;;;;:46;;;;;10870:18;:22;10889:2;10870:22;;;;;;;;;;;;;;;;;;;;;;;;;10869:23;10846:46;10843:173;;;10946:14;;10937:6;10921:13;10931:2;10921:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10913:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10843:173;11033:28;11064:24;11082:4;11064:9;:24::i;:::-;11033:55;;11103:12;11142:19;;11118:20;:43;;11103:58;;11206:12;;11182:20;:36;11179:124;;11275:12;;11252:35;;11179:124;11324:7;:18;;;;;11336:6;;;;;;;;;;;11335:7;11324:18;:43;;;;;11354:13;;;;;;;;;;;11346:21;;:4;:21;;;;11324:43;:58;;;;;11371:11;;;;;;;;;;11324:58;:87;;;;;11387:18;:24;11406:4;11387:24;;;;;;;;;;;;;;;;;;;;;;;;;11386:25;11324:87;:114;;;;;11416:18;:22;11435:2;11416:22;;;;;;;;;;;;;;;;;;;;;;;;;11415:23;11324:114;11320:386;;;11459:38;11476:20;11459:16;:38::i;:::-;11516:26;11545:21;11516:50;;11610:1;11589:18;:22;11585:106;;;11636:35;11649:21;11636:12;:35::i;:::-;11585:106;11440:266;11320:386;10386:1331;;10348:1369;11731:12;11746:4;11731:19;;11796:18;:24;11815:4;11796:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11824:18;:22;11843:2;11824:22;;;;;;;;;;;;;;;;;;;;;;;;;11796:50;11795:102;;;;11860:13;;;;;;;;;;;11852:21;;:4;:21;;;;:44;;;;;11883:13;;;;;;;;;;;11877:19;;:2;:19;;;;11852:44;11795:102;11791:597;;;11924:5;11914:15;;11791:597;;;12008:13;;;;;;;;;;;12000:21;;:4;:21;;;:55;;;;;12039:15;;;;;;;;;;;12025:30;;:2;:30;;;;12000:55;11997:162;;;12088:14;;12076:9;:26;;;;12131:12;;12121:7;:22;;;;11997:162;12219:13;;;;;;;;;;;12213:19;;:2;:19;;;:55;;;;;12252:15;;;;;;;;;;;12236:32;;:4;:32;;;;12213:55;12209:165;;;12301:15;;12289:9;:27;;;;12345:13;;12335:7;:23;;;;12209:165;11791:597;12401:41;12416:4;12422:2;12426:6;12434:7;12401:14;:41::i;:::-;10105:2345;10002:2448;;;:::o;2637:224::-;2757:7;2790:1;2785;:6;;2793:12;2777:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2817:9;2833:1;2829;:5;;;;:::i;:::-;2817:17;;2852:1;2845:8;;;2637:224;;;;;:::o;12951:99::-;13008:17;;;;;;;;;;;:26;;:34;13035:6;13008:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12951:99;:::o;8936:323::-;9031:7;9089;;9078;:18;;9056:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9177:19;9199:10;:8;:10::i;:::-;9177:32;;9227:24;9239:11;9227:7;:11;;:24;;;;:::i;:::-;9220:31;;;8936:323;;;:::o;12459:483::-;6271:4;6262:6;;:13;;;;;;;;;;;;;;;;;;12537:21:::1;12575:1;12561:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12537:40;;12606:4;12588;12593:1;12588:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12632:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12622:4;12627:1;12622:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12665:62;12682:4;12697:15;;;;;;;;;;;12715:11;12665:8;:62::i;:::-;12738:15;;;;;;;;;;;:66;;;12819:11;12845:1;12861:4;12888;12908:15;12738:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12526:416;6307:5:::0;6298:6;;:14;;;;;;;;;;;;;;;;;;12459:483;:::o;3266:223::-;3386:7;3418:1;3414;:5;3421:12;3406:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3445:9;3461:1;3457;:5;;;;:::i;:::-;3445:17;;3480:1;3473:8;;;3266:223;;;;;:::o;13857:282::-;14013:7;14008:28;;14022:14;:12;:14::i;:::-;14008:28;14047:44;14065:6;14073:9;14084:6;14047:17;:44::i;:::-;14107:7;14102:29;;14116:15;:13;:15::i;:::-;14102:29;13857:282;;;;:::o;16826:164::-;16868:7;16889:15;16906;16925:19;:17;:19::i;:::-;16888:56;;;;16962:20;16974:7;16962;:11;;:20;;;;:::i;:::-;16955:27;;;;16826:164;:::o;9268:221::-;9328:1;9315:9;;:14;:30;;;;;9344:1;9333:7;;:12;9315:30;9311:43;;;9347:7;;9311:43;9387:9;;9367:17;:29;;;;9425:7;;9407:15;:25;;;;9458:1;9446:9;:13;;;;9480:1;9470:7;:11;;;;9268:221;:::o;14148:610::-;14295:15;14325:23;14363:12;14390:23;14428:12;14455:13;14482:19;14493:7;14482:10;:19::i;:::-;14280:221;;;;;;;;;;;;14530:28;14550:7;14530;:15;14538:6;14530:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14512:7;:15;14520:6;14512:15;;;;;;;;;;;;;;;:46;;;;14590:39;14613:15;14590:7;:18;14598:9;14590:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14569:7;:18;14577:9;14569:18;;;;;;;;;;;;;;;:60;;;;14640:16;14650:5;14640:9;:16::i;:::-;14667:23;14679:4;14685;14667:11;:23::i;:::-;14723:9;14706:44;;14715:6;14706:44;;;14734:15;14706:44;;;;;;:::i;:::-;;;;;;;;14269:489;;;;;;14148:610;;;:::o;9498:117::-;9554:17;;9542:9;:29;;;;9592:15;;9582:7;:25;;;;9498:117::o;16999:257::-;17050:7;17059;17079:15;17097:7;;17079:25;;17115:15;5019:21;17115:25;;17165:20;5019:21;17165:7;;:11;;:20;;;;:::i;:::-;17155:7;:30;17151:61;;;17195:7;;5019:21;17187:25;;;;;;;;17151:61;17231:7;17240;17223:25;;;;;;16999:257;;;:::o;15181:615::-;15281:7;15303;15325;15347;15369;15391;15427:23;15452:12;15466:13;15496:40;15508:7;15517:9;;15528:7;;15496:11;:40::i;:::-;15426:110;;;;;;15547:19;15569:10;:8;:10::i;:::-;15547:32;;15591:15;15608:23;15633:12;15662:46;15674:7;15683:4;15689:5;15696:11;15662;:46::i;:::-;15590:118;;;;;;15727:7;15736:15;15753:4;15759:15;15776:4;15782:5;15719:69;;;;;;;;;;;;;;;;;;;15181:615;;;;;;;:::o;2492:136::-;2550:7;2577:43;2581:1;2584;2577:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2570:50;;2492:136;;;;:::o;2304:179::-;2362:7;2382:9;2398:1;2394;:5;;;;:::i;:::-;2382:17;;2423:1;2418;:6;;2410:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2474:1;2467:8;;;2304:179;;;;:::o;14767:211::-;14820:19;14842:10;:8;:10::i;:::-;14820:32;;14863:13;14879:22;14889:11;14879:5;:9;;:22;;;;:::i;:::-;14863:38;;14937:33;14964:5;14937:7;:22;14953:4;14937:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14912:7;:22;14928:4;14912:22;;;;;;;;;;;;;;;:58;;;;14809:169;;14767:211;:::o;14987:147::-;15065:17;15077:4;15065:7;;:11;;:17;;;;:::i;:::-;15055:7;:27;;;;15106:20;15121:4;15106:10;;:14;;:20;;;;:::i;:::-;15093:10;:33;;;;14987:147;;:::o;15805:469::-;15974:7;15996;16018;16053:12;16068:30;16094:3;16068:21;16080:8;16068:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16053:45;;16109:13;16125:28;16149:3;16125:19;16137:6;16125:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16109:44;;16164:23;16190:28;16212:5;16190:17;16202:4;16190:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16164:54;;16237:15;16254:4;16260:5;16229:37;;;;;;;;;15805:469;;;;;;;:::o;16283:534::-;16477:7;16499;16521;16556:15;16574:24;16586:11;16574:7;:11;;:24;;;;:::i;:::-;16556:42;;16609:12;16624:21;16633:11;16624:4;:8;;:21;;;;:::i;:::-;16609:36;;16656:13;16672:22;16682:11;16672:5;:9;;:22;;;;:::i;:::-;16656:38;;16705:23;16731:28;16753:5;16731:17;16743:4;16731:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16705:54;;16778:7;16787:15;16804:4;16770:39;;;;;;;;;;16283:534;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:329::-;5503:6;5552:2;5540:9;5531:7;5527:23;5523:32;5520:119;;;5558:79;;:::i;:::-;5520:119;5678:1;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5649:117;5444:329;;;;:::o;5779:86::-;5814:7;5854:4;5847:5;5843:16;5832:27;;5779:86;;;:::o;5871:112::-;5954:22;5970:5;5954:22;:::i;:::-;5949:3;5942:35;5871:112;;:::o;5989:214::-;6078:4;6116:2;6105:9;6101:18;6093:26;;6129:67;6193:1;6182:9;6178:17;6169:6;6129:67;:::i;:::-;5989:214;;;;:::o;6209:118::-;6296:24;6314:5;6296:24;:::i;:::-;6291:3;6284:37;6209:118;;:::o;6333:222::-;6426:4;6464:2;6453:9;6449:18;6441:26;;6477:71;6545:1;6534:9;6530:17;6521:6;6477:71;:::i;:::-;6333:222;;;;:::o;6561:116::-;6631:21;6646:5;6631:21;:::i;:::-;6624:5;6621:32;6611:60;;6667:1;6664;6657:12;6611:60;6561:116;:::o;6683:133::-;6726:5;6764:6;6751:20;6742:29;;6780:30;6804:5;6780:30;:::i;:::-;6683:133;;;;:::o;6822:323::-;6878:6;6927:2;6915:9;6906:7;6902:23;6898:32;6895:119;;;6933:79;;:::i;:::-;6895:119;7053:1;7078:50;7120:7;7111:6;7100:9;7096:22;7078:50;:::i;:::-;7068:60;;7024:114;6822:323;;;;:::o;7151:329::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:180;8428:77;8425:1;8418:88;8525:4;8522:1;8515:15;8549:4;8546:1;8539:15;8566:281;8649:27;8671:4;8649:27;:::i;:::-;8641:6;8637:40;8779:6;8767:10;8764:22;8743:18;8731:10;8728:34;8725:62;8722:88;;;8790:18;;:::i;:::-;8722:88;8830:10;8826:2;8819:22;8609:238;8566:281;;:::o;8853:129::-;8887:6;8914:20;;:::i;:::-;8904:30;;8943:33;8971:4;8963:6;8943:33;:::i;:::-;8853:129;;;:::o;8988:311::-;9065:4;9155:18;9147:6;9144:30;9141:56;;;9177:18;;:::i;:::-;9141:56;9227:4;9219:6;9215:17;9207:25;;9287:4;9281;9277:15;9269:23;;8988:311;;;:::o;9305:117::-;9414:1;9411;9404:12;9445:710;9541:5;9566:81;9582:64;9639:6;9582:64;:::i;:::-;9566:81;:::i;:::-;9557:90;;9667:5;9696:6;9689:5;9682:21;9730:4;9723:5;9719:16;9712:23;;9783:4;9775:6;9771:17;9763:6;9759:30;9812:3;9804:6;9801:15;9798:122;;;9831:79;;:::i;:::-;9798:122;9946:6;9929:220;9963:6;9958:3;9955:15;9929:220;;;10038:3;10067:37;10100:3;10088:10;10067:37;:::i;:::-;10062:3;10055:50;10134:4;10129:3;10125:14;10118:21;;10005:144;9989:4;9984:3;9980:14;9973:21;;9929:220;;;9933:21;9547:608;;9445:710;;;;;:::o;10178:370::-;10249:5;10298:3;10291:4;10283:6;10279:17;10275:27;10265:122;;10306:79;;:::i;:::-;10265:122;10423:6;10410:20;10448:94;10538:3;10530:6;10523:4;10515:6;10511:17;10448:94;:::i;:::-;10439:103;;10255:293;10178:370;;;;:::o;10554:539::-;10638:6;10687:2;10675:9;10666:7;10662:23;10658:32;10655:119;;;10693:79;;:::i;:::-;10655:119;10841:1;10830:9;10826:17;10813:31;10871:18;10863:6;10860:30;10857:117;;;10893:79;;:::i;:::-;10857:117;10998:78;11068:7;11059:6;11048:9;11044:22;10998:78;:::i;:::-;10988:88;;10784:302;10554:539;;;;:::o;11099:474::-;11167:6;11175;11224:2;11212:9;11203:7;11199:23;11195:32;11192:119;;;11230:79;;:::i;:::-;11192:119;11350:1;11375:53;11420:7;11411:6;11400:9;11396:22;11375:53;:::i;:::-;11365:63;;11321:117;11477:2;11503:53;11548:7;11539:6;11528:9;11524:22;11503:53;:::i;:::-;11493:63;;11448:118;11099:474;;;;;:::o;11579:182::-;11719:34;11715:1;11707:6;11703:14;11696:58;11579:182;:::o;11767:366::-;11909:3;11930:67;11994:2;11989:3;11930:67;:::i;:::-;11923:74;;12006:93;12095:3;12006:93;:::i;:::-;12124:2;12119:3;12115:12;12108:19;;11767:366;;;:::o;12139:419::-;12305:4;12343:2;12332:9;12328:18;12320:26;;12392:9;12386:4;12382:20;12378:1;12367:9;12363:17;12356:47;12420:131;12546:4;12420:131;:::i;:::-;12412:139;;12139:419;;;:::o;12564:180::-;12612:77;12609:1;12602:88;12709:4;12706:1;12699:15;12733:4;12730:1;12723:15;12750:180;12798:77;12795:1;12788:88;12895:4;12892:1;12885:15;12919:4;12916:1;12909:15;12936:233;12975:3;12998:24;13016:5;12998:24;:::i;:::-;12989:33;;13044:66;13037:5;13034:77;13031:103;;;13114:18;;:::i;:::-;13031:103;13161:1;13154:5;13150:13;13143:20;;12936:233;;;:::o;13175:348::-;13215:7;13238:20;13256:1;13238:20;:::i;:::-;13233:25;;13272:20;13290:1;13272:20;:::i;:::-;13267:25;;13460:1;13392:66;13388:74;13385:1;13382:81;13377:1;13370:9;13363:17;13359:105;13356:131;;;13467:18;;:::i;:::-;13356:131;13515:1;13512;13508:9;13497:20;;13175:348;;;;:::o;13529:180::-;13577:77;13574:1;13567:88;13674:4;13671:1;13664:15;13698:4;13695:1;13688:15;13715:185;13755:1;13772:20;13790:1;13772:20;:::i;:::-;13767:25;;13806:20;13824:1;13806:20;:::i;:::-;13801:25;;13845:1;13835:35;;13850:18;;:::i;:::-;13835:35;13892:1;13889;13885:9;13880:14;;13715:185;;;;:::o;13906:225::-;14046:34;14042:1;14034:6;14030:14;14023:58;14115:8;14110:2;14102:6;14098:15;14091:33;13906:225;:::o;14137:366::-;14279:3;14300:67;14364:2;14359:3;14300:67;:::i;:::-;14293:74;;14376:93;14465:3;14376:93;:::i;:::-;14494:2;14489:3;14485:12;14478:19;;14137:366;;;:::o;14509:419::-;14675:4;14713:2;14702:9;14698:18;14690:26;;14762:9;14756:4;14752:20;14748:1;14737:9;14733:17;14726:47;14790:131;14916:4;14790:131;:::i;:::-;14782:139;;14509:419;;;:::o;14934:220::-;15074:34;15070:1;15062:6;15058:14;15051:58;15143:3;15138:2;15130:6;15126:15;15119:28;14934:220;:::o;15160:366::-;15302:3;15323:67;15387:2;15382:3;15323:67;:::i;:::-;15316:74;;15399:93;15488:3;15399:93;:::i;:::-;15517:2;15512:3;15508:12;15501:19;;15160:366;;;:::o;15532:419::-;15698:4;15736:2;15725:9;15721:18;15713:26;;15785:9;15779:4;15775:20;15771:1;15760:9;15756:17;15749:47;15813:131;15939:4;15813:131;:::i;:::-;15805:139;;15532:419;;;:::o;15957:223::-;16097:34;16093:1;16085:6;16081:14;16074:58;16166:6;16161:2;16153:6;16149:15;16142:31;15957:223;:::o;16186:366::-;16328:3;16349:67;16413:2;16408:3;16349:67;:::i;:::-;16342:74;;16425:93;16514:3;16425:93;:::i;:::-;16543:2;16538:3;16534:12;16527:19;;16186:366;;;:::o;16558:419::-;16724:4;16762:2;16751:9;16747:18;16739:26;;16811:9;16805:4;16801:20;16797:1;16786:9;16782:17;16775:47;16839:131;16965:4;16839:131;:::i;:::-;16831:139;;16558:419;;;:::o;16983:221::-;17123:34;17119:1;17111:6;17107:14;17100:58;17192:4;17187:2;17179:6;17175:15;17168:29;16983:221;:::o;17210:366::-;17352:3;17373:67;17437:2;17432:3;17373:67;:::i;:::-;17366:74;;17449:93;17538:3;17449:93;:::i;:::-;17567:2;17562:3;17558:12;17551:19;;17210:366;;;:::o;17582:419::-;17748:4;17786:2;17775:9;17771:18;17763:26;;17835:9;17829:4;17825:20;17821:1;17810:9;17806:17;17799:47;17863:131;17989:4;17863:131;:::i;:::-;17855:139;;17582:419;;;:::o;18007:224::-;18147:34;18143:1;18135:6;18131:14;18124:58;18216:7;18211:2;18203:6;18199:15;18192:32;18007:224;:::o;18237:366::-;18379:3;18400:67;18464:2;18459:3;18400:67;:::i;:::-;18393:74;;18476:93;18565:3;18476:93;:::i;:::-;18594:2;18589:3;18585:12;18578:19;;18237:366;;;:::o;18609:419::-;18775:4;18813:2;18802:9;18798:18;18790:26;;18862:9;18856:4;18852:20;18848:1;18837:9;18833:17;18826:47;18890:131;19016:4;18890:131;:::i;:::-;18882:139;;18609:419;;;:::o;19034:222::-;19174:34;19170:1;19162:6;19158:14;19151:58;19243:5;19238:2;19230:6;19226:15;19219:30;19034:222;:::o;19262:366::-;19404:3;19425:67;19489:2;19484:3;19425:67;:::i;:::-;19418:74;;19501:93;19590:3;19501:93;:::i;:::-;19619:2;19614:3;19610:12;19603:19;;19262:366;;;:::o;19634:419::-;19800:4;19838:2;19827:9;19823:18;19815:26;;19887:9;19881:4;19877:20;19873:1;19862:9;19858:17;19851:47;19915:131;20041:4;19915:131;:::i;:::-;19907:139;;19634:419;;;:::o;20059:228::-;20199:34;20195:1;20187:6;20183:14;20176:58;20268:11;20263:2;20255:6;20251:15;20244:36;20059:228;:::o;20293:366::-;20435:3;20456:67;20520:2;20515:3;20456:67;:::i;:::-;20449:74;;20532:93;20621:3;20532:93;:::i;:::-;20650:2;20645:3;20641:12;20634:19;;20293:366;;;:::o;20665:419::-;20831:4;20869:2;20858:9;20854:18;20846:26;;20918:9;20912:4;20908:20;20904:1;20893:9;20889:17;20882:47;20946:131;21072:4;20946:131;:::i;:::-;20938:139;;20665:419;;;:::o;21090:250::-;21230:34;21226:1;21218:6;21214:14;21207:58;21299:33;21294:2;21286:6;21282:15;21275:58;21090:250;:::o;21346:366::-;21488:3;21509:67;21573:2;21568:3;21509:67;:::i;:::-;21502:74;;21585:93;21674:3;21585:93;:::i;:::-;21703:2;21698:3;21694:12;21687:19;;21346:366;;;:::o;21718:419::-;21884:4;21922:2;21911:9;21907:18;21899:26;;21971:9;21965:4;21961:20;21957:1;21946:9;21942:17;21935:47;21999:131;22125:4;21999:131;:::i;:::-;21991:139;;21718:419;;;:::o;22143:178::-;22283:30;22279:1;22271:6;22267:14;22260:54;22143:178;:::o;22327:366::-;22469:3;22490:67;22554:2;22549:3;22490:67;:::i;:::-;22483:74;;22566:93;22655:3;22566:93;:::i;:::-;22684:2;22679:3;22675:12;22668:19;;22327:366;;;:::o;22699:419::-;22865:4;22903:2;22892:9;22888:18;22880:26;;22952:9;22946:4;22942:20;22938:1;22927:9;22923:17;22916:47;22980:131;23106:4;22980:131;:::i;:::-;22972:139;;22699:419;;;:::o;23124:222::-;23264:34;23260:1;23252:6;23248:14;23241:58;23333:5;23328:2;23320:6;23316:15;23309:30;23124:222;:::o;23352:366::-;23494:3;23515:67;23579:2;23574:3;23515:67;:::i;:::-;23508:74;;23591:93;23680:3;23591:93;:::i;:::-;23709:2;23704:3;23700:12;23693:19;;23352:366;;;:::o;23724:419::-;23890:4;23928:2;23917:9;23913:18;23905:26;;23977:9;23971:4;23967:20;23963:1;23952:9;23948:17;23941:47;24005:131;24131:4;24005:131;:::i;:::-;23997:139;;23724:419;;;:::o;24149:305::-;24189:3;24208:20;24226:1;24208:20;:::i;:::-;24203:25;;24242:20;24260:1;24242:20;:::i;:::-;24237:25;;24396:1;24328:66;24324:74;24321:1;24318:81;24315:107;;;24402:18;;:::i;:::-;24315:107;24446:1;24443;24439:9;24432:16;;24149:305;;;;:::o;24460:222::-;24600:34;24596:1;24588:6;24584:14;24577:58;24669:5;24664:2;24656:6;24652:15;24645:30;24460:222;:::o;24688:366::-;24830:3;24851:67;24915:2;24910:3;24851:67;:::i;:::-;24844:74;;24927:93;25016:3;24927:93;:::i;:::-;25045:2;25040:3;25036:12;25029:19;;24688:366;;;:::o;25060:419::-;25226:4;25264:2;25253:9;25249:18;25241:26;;25313:9;25307:4;25303:20;25299:1;25288:9;25284:17;25277:47;25341:131;25467:4;25341:131;:::i;:::-;25333:139;;25060:419;;;:::o;25485:191::-;25525:4;25545:20;25563:1;25545:20;:::i;:::-;25540:25;;25579:20;25597:1;25579:20;:::i;:::-;25574:25;;25618:1;25615;25612:8;25609:34;;;25623:18;;:::i;:::-;25609:34;25668:1;25665;25661:9;25653:17;;25485:191;;;;:::o;25682:229::-;25822:34;25818:1;25810:6;25806:14;25799:58;25891:12;25886:2;25878:6;25874:15;25867:37;25682:229;:::o;25917:366::-;26059:3;26080:67;26144:2;26139:3;26080:67;:::i;:::-;26073:74;;26156:93;26245:3;26156:93;:::i;:::-;26274:2;26269:3;26265:12;26258:19;;25917:366;;;:::o;26289:419::-;26455:4;26493:2;26482:9;26478:18;26470:26;;26542:9;26536:4;26532:20;26528:1;26517:9;26513:17;26506:47;26570:131;26696:4;26570:131;:::i;:::-;26562:139;;26289:419;;;:::o;26714:143::-;26771:5;26802:6;26796:13;26787:22;;26818:33;26845:5;26818:33;:::i;:::-;26714:143;;;;:::o;26863:351::-;26933:6;26982:2;26970:9;26961:7;26957:23;26953:32;26950:119;;;26988:79;;:::i;:::-;26950:119;27108:1;27133:64;27189:7;27180:6;27169:9;27165:22;27133:64;:::i;:::-;27123:74;;27079:128;26863:351;;;;:::o;27220:85::-;27265:7;27294:5;27283:16;;27220:85;;;:::o;27311:158::-;27369:9;27402:61;27420:42;27429:32;27455:5;27429:32;:::i;:::-;27420:42;:::i;:::-;27402:61;:::i;:::-;27389:74;;27311:158;;;:::o;27475:147::-;27570:45;27609:5;27570:45;:::i;:::-;27565:3;27558:58;27475:147;;:::o;27628:114::-;27695:6;27729:5;27723:12;27713:22;;27628:114;;;:::o;27748:184::-;27847:11;27881:6;27876:3;27869:19;27921:4;27916:3;27912:14;27897:29;;27748:184;;;;:::o;27938:132::-;28005:4;28028:3;28020:11;;28058:4;28053:3;28049:14;28041:22;;27938:132;;;:::o;28076:108::-;28153:24;28171:5;28153:24;:::i;:::-;28148:3;28141:37;28076:108;;:::o;28190:179::-;28259:10;28280:46;28322:3;28314:6;28280:46;:::i;:::-;28358:4;28353:3;28349:14;28335:28;;28190:179;;;;:::o;28375:113::-;28445:4;28477;28472:3;28468:14;28460:22;;28375:113;;;:::o;28524:732::-;28643:3;28672:54;28720:5;28672:54;:::i;:::-;28742:86;28821:6;28816:3;28742:86;:::i;:::-;28735:93;;28852:56;28902:5;28852:56;:::i;:::-;28931:7;28962:1;28947:284;28972:6;28969:1;28966:13;28947:284;;;29048:6;29042:13;29075:63;29134:3;29119:13;29075:63;:::i;:::-;29068:70;;29161:60;29214:6;29161:60;:::i;:::-;29151:70;;29007:224;28994:1;28991;28987:9;28982:14;;28947:284;;;28951:14;29247:3;29240:10;;28648:608;;;28524:732;;;;:::o;29262:831::-;29525:4;29563:3;29552:9;29548:19;29540:27;;29577:71;29645:1;29634:9;29630:17;29621:6;29577:71;:::i;:::-;29658:80;29734:2;29723:9;29719:18;29710:6;29658:80;:::i;:::-;29785:9;29779:4;29775:20;29770:2;29759:9;29755:18;29748:48;29813:108;29916:4;29907:6;29813:108;:::i;:::-;29805:116;;29931:72;29999:2;29988:9;29984:18;29975:6;29931:72;:::i;:::-;30013:73;30081:3;30070:9;30066:19;30057:6;30013:73;:::i;:::-;29262:831;;;;;;;;:::o;30099:177::-;30239:29;30235:1;30227:6;30223:14;30216:53;30099:177;:::o;30282:366::-;30424:3;30445:67;30509:2;30504:3;30445:67;:::i;:::-;30438:74;;30521:93;30610:3;30521:93;:::i;:::-;30639:2;30634:3;30630:12;30623:19;;30282:366;;;:::o;30654:419::-;30820:4;30858:2;30847:9;30843:18;30835:26;;30907:9;30901:4;30897:20;30893:1;30882:9;30878:17;30871:47;30935:131;31061:4;30935:131;:::i;:::-;30927:139;;30654:419;;;:::o

Swarm Source

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