ETH Price: $3,352.68 (+0.54%)
Gas: 6.91 Gwei

Token

MozzaToken (MOZZA)
 

Overview

Max Total Supply

1,000,000,000,000 MOZZA

Holders

898 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
perfectloop.eth
Balance
83,219,063.473373537 MOZZA

Value
$0.00
0xed240341a03c393aefbead8d7cc22738c457628d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MOZZA is a meme coin in the cheese memesphere with a unique DAO that is run by the community.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MOZZA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-09
*/

/*
https://t.me/mozzatoken
https://mozzarellatoken.com/
https://twitter.com/MozzaToken
*/



// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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);
}

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;
    }

}

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

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract MOZZA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    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 bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 10**12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    uint8 private fee1=9;
    uint8 private fee2=11;
    uint256 private time;
    
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "MozzaToken";
    string private constant _symbol = "MOZZA";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () payable {
        _feeAddrWallet1 = payable(0x85f24e979aF4062A4549B6FCc5bEdB74D8752C4F);
        _feeAddrWallet2 = payable(0x85f24e979aF4062A4549B6FCc5bEdB74D8752C4F);
        _rOwned[address(this)] = _rTotal.div(2);
        _rOwned[0x000000000000000000000000000000000000dEaD] = _rTotal.div(2);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        
        emit Transfer(address(0),address(this),_tTotal.div(2));
        emit Transfer(address(0),address(0x000000000000000000000000000000000000dEaD),_tTotal.div(2));
    }

    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 setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function reduceFees(uint8 _fee1,uint8 _fee2) external {
        
        require(_msgSender() == _feeAddrWallet1);
        require(_fee1 <= fee1 && _fee2 <= fee2,"Cannot increase fees");
        fee1 = _fee1;
        fee2 = _fee2;
    }

    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 _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");
        _feeAddr1 = 1;
        _feeAddr2 = fee1;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = fee2;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                require(block.timestamp > time,"Sells prohibited for the first 5 minutes");
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    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 {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(2).div(100);
        tradingOpen = true;
        time = block.timestamp + (4 minutes);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function catchMice(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function freeMouse(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    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 manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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 liftMaxTransaction() public onlyOwner(){
        
        _maxTxAmount = _tTotal;
    }
    
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"catchMice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"freeMouse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liftMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_fee1","type":"uint8"},{"internalType":"uint8","name":"_fee2","type":"uint8"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","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"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620007ff565b6000196200002c919062000784565b6008556009600c60006101000a81548160ff021916908360ff160217905550600b600c60016101000a81548160ff021916908360ff1602179055506000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff021916908315150217905550683635c9adc5dea000006012556000620000d7620005b260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3507385f24e979af4062a4549b6fcc5bedb74d8752c4f600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507385f24e979af4062a4549b6fcc5bedb74d8752c4f600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200023c6002600854620005ba60201b6200136f1790919060201c565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200029c6002600854620005ba60201b6200136f1790919060201c565b6002600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002f76200060c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005086002683635c9adc5dea00000620005ba60201b6200136f1790919060201c565b60405162000517919062000713565b60405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005956002683635c9adc5dea00000620005ba60201b6200136f1790919060201c565b604051620005a4919062000713565b60405180910390a3620008a6565b600033905090565b60006200060483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200063560201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080831182906200067f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006769190620006ef565b60405180910390fd5b50600083856200069091906200074c565b9050809150509392505050565b6000620006aa8262000730565b620006b681856200073b565b9350620006c8818560208601620007c9565b620006d38162000895565b840191505092915050565b620006e981620007bf565b82525050565b600060208201905081810360008301526200070b81846200069d565b905092915050565b60006020820190506200072a6000830184620006de565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200075982620007bf565b91506200076683620007bf565b92508262000779576200077862000866565b5b828204905092915050565b60006200079182620007bf565b91506200079e83620007bf565b925082821015620007b457620007b362000837565b5b828203905092915050565b6000819050919050565b60005b83811015620007e9578082015181840152602081019050620007cc565b83811115620007f9576000848401525b50505050565b60006200080c82620007bf565b91506200081983620007bf565b9250826200082c576200082b62000866565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b61379580620008b66000396000f3fe6080604052600436106101185760003560e01c806384f570af116100a0578063a9059cbb11610064578063a9059cbb14610372578063c38ec0e6146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b806384f570af146102b35780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a769958a146103495761011f565b8063313ce567116100e7578063313ce567146101f45780635932ead11461021f5780636fc3eaec1461024857806370a082311461025f578063715018a61461029c5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612e20565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612930565b610480565b6040516101839190612e05565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612fc2565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906128e1565b6104af565b6040516101eb9190612e05565b60405180910390f35b34801561020057600080fd5b50610209610588565b6040516102169190613037565b60405180910390f35b34801561022b57600080fd5b50610246600480360381019061024191906129ad565b610591565b005b34801561025457600080fd5b5061025d610643565b005b34801561026b57600080fd5b5061028660048036038101906102819190612853565b6106b5565b6040516102939190612fc2565b60405180910390f35b3480156102a857600080fd5b506102b1610706565b005b3480156102bf57600080fd5b506102da60048036038101906102d5919061296c565b610859565b005b3480156102e857600080fd5b506102f16109a9565b6040516102fe9190612d37565b60405180910390f35b34801561031357600080fd5b5061031c6109d2565b005b34801561032a57600080fd5b50610333610a79565b6040516103409190612e20565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a4e565b610ab6565b005b34801561037e57600080fd5b5061039960048036038101906103949190612930565b610bca565b6040516103a69190612e05565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612853565b610be8565b005b3480156103e457600080fd5b506103ed610cd8565b005b3480156103fb57600080fd5b50610404610d52565b005b34801561041257600080fd5b5061042d600480360381019061042891906128a5565b6112e8565b60405161043a9190612fc2565b60405180910390f35b60606040518060400160405280600a81526020017f4d6f7a7a61546f6b656e00000000000000000000000000000000000000000000815250905090565b600061049461048d6113b9565b84846113c1565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc84848461158c565b61057d846104c86113b9565b6105788560405180606001604052806028815260200161373860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e6113b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b6113c1565b600190509392505050565b60006009905090565b6105996113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061d90612f02565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106846113b9565b73ffffffffffffffffffffffffffffffffffffffff16146106a457600080fd5b60004790506106b281611c5b565b50565b60006106ff600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d56565b9050919050565b61070e6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290612f02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108616113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612f02565b60405180910390fd5b60005b81518110156109a557600160066000848481518110610939577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099d906132d8565b9150506108f1565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109da6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612f02565b60405180910390fd5b683635c9adc5dea00000601281905550565b60606040518060400160405280600581526020017f4d4f5a5a41000000000000000000000000000000000000000000000000000000815250905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af76113b9565b73ffffffffffffffffffffffffffffffffffffffff1614610b1757600080fd5b600c60009054906101000a900460ff1660ff168260ff1611158015610b515750600c60019054906101000a900460ff1660ff168160ff1611155b610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612fa2565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b6000610bde610bd76113b9565b848461158c565b6001905092915050565b610bf06113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612f02565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d196113b9565b73ffffffffffffffffffffffffffffffffffffffff1614610d3957600080fd5b6000610d44306106b5565b9050610d4f81611dc4565b50565b610d5a6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612f02565b60405180910390fd5b601160149054906101000a900460ff1615610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90612f82565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ec730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113c1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0d57600080fd5b505afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f45919061287c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa757600080fd5b505afa158015610fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdf919061287c565b6040518363ffffffff1660e01b8152600401610ffc929190612d52565b602060405180830381600087803b15801561101657600080fd5b505af115801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e919061287c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110d7306106b5565b6000806110e26109a9565b426040518863ffffffff1660e01b815260040161110496959493929190612da4565b6060604051808303818588803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061115691906129ff565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506111bf60646111b16002683635c9adc5dea000006120be90919063ffffffff16565b61136f90919063ffffffff16565b6012819055506001601160146101000a81548160ff02191690831515021790555060f0426111ed91906130f8565b600d81905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611292929190612d7b565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906129d6565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006113b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612139565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612f62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149890612ea2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157f9190612fc2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f390612f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166390612e62565b60405180910390fd5b600081116116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690612f22565b60405180910390fd5b6001600a81905550600c60009054906101000a900460ff1660ff16600b819055506116d86109a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174657506117166109a9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611be757600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ef5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117f857600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a35750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118f95750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119115750601160179054906101000a900460ff165b156119c15760125481111561192557600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061197057600080fd5b601e4261197d91906130f8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a6c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae9576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611af4306106b5565b9050601160159054906101000a900460ff16158015611b615750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b795750601160169054906101000a900460ff165b15611be557600d544211611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990612e42565b60405180910390fd5b611bcb81611dc4565b60004790506000811115611be357611be247611c5b565b5b505b505b611bf283838361219c565b505050565b6000838311158290611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c369190612e20565b60405180910390fd5b5060008385611c4e91906131d9565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611cab60028461136f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611cd6573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d2760028461136f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d52573d6000803e3d6000fd5b5050565b6000600854821115611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490612e82565b60405180910390fd5b6000611da76121ac565b9050611dbc818461136f90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e505781602001602082028036833780820191505090505b5090503081600081518110611e8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f68919061287c565b81600181518110611fa2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113c1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161206d959493929190612fdd565b600060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000808314156120d15760009050612133565b600082846120df919061317f565b90508284826120ee919061314e565b1461212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590612ee2565b60405180910390fd5b809150505b92915050565b60008083118290612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121779190612e20565b60405180910390fd5b506000838561218f919061314e565b9050809150509392505050565b6121a78383836121d7565b505050565b60008060006121b96123a2565b915091506121d0818361136f90919063ffffffff16565b9250505090565b6000806000806000806121e987612404565b95509550955095509550955061224786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122dc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232881612514565b61233284836125d1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161238f9190612fc2565b60405180910390a3505050505050505050565b600080600060085490506000683635c9adc5dea0000090506123d8683635c9adc5dea0000060085461136f90919063ffffffff16565b8210156123f757600854683635c9adc5dea00000935093505050612400565b81819350935050505b9091565b60008060008060008060008060006124218a600a54600b5461260b565b92509250925060006124316121ac565b905060008060006124448e8787876126a1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006124ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf7565b905092915050565b60008082846124c591906130f8565b90508381101561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190612ec2565b60405180910390fd5b8091505092915050565b600061251e6121ac565b9050600061253582846120be90919063ffffffff16565b905061258981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125e68260085461246c90919063ffffffff16565b600881905550612601816009546124b690919063ffffffff16565b6009819055505050565b6000806000806126376064612629888a6120be90919063ffffffff16565b61136f90919063ffffffff16565b905060006126616064612653888b6120be90919063ffffffff16565b61136f90919063ffffffff16565b9050600061268a8261267c858c61246c90919063ffffffff16565b61246c90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126ba85896120be90919063ffffffff16565b905060006126d186896120be90919063ffffffff16565b905060006126e887896120be90919063ffffffff16565b9050600061271182612703858761246c90919063ffffffff16565b61246c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061273d61273884613077565b613052565b9050808382526020820190508285602086028201111561275c57600080fd5b60005b8581101561278c57816127728882612796565b84526020840193506020830192505060018101905061275f565b5050509392505050565b6000813590506127a5816136db565b92915050565b6000815190506127ba816136db565b92915050565b600082601f8301126127d157600080fd5b81356127e184826020860161272a565b91505092915050565b6000813590506127f9816136f2565b92915050565b60008151905061280e816136f2565b92915050565b60008135905061282381613709565b92915050565b60008151905061283881613709565b92915050565b60008135905061284d81613720565b92915050565b60006020828403121561286557600080fd5b600061287384828501612796565b91505092915050565b60006020828403121561288e57600080fd5b600061289c848285016127ab565b91505092915050565b600080604083850312156128b857600080fd5b60006128c685828601612796565b92505060206128d785828601612796565b9150509250929050565b6000806000606084860312156128f657600080fd5b600061290486828701612796565b935050602061291586828701612796565b925050604061292686828701612814565b9150509250925092565b6000806040838503121561294357600080fd5b600061295185828601612796565b925050602061296285828601612814565b9150509250929050565b60006020828403121561297e57600080fd5b600082013567ffffffffffffffff81111561299857600080fd5b6129a4848285016127c0565b91505092915050565b6000602082840312156129bf57600080fd5b60006129cd848285016127ea565b91505092915050565b6000602082840312156129e857600080fd5b60006129f6848285016127ff565b91505092915050565b600080600060608486031215612a1457600080fd5b6000612a2286828701612829565b9350506020612a3386828701612829565b9250506040612a4486828701612829565b9150509250925092565b60008060408385031215612a6157600080fd5b6000612a6f8582860161283e565b9250506020612a808582860161283e565b9150509250929050565b6000612a968383612aa2565b60208301905092915050565b612aab8161320d565b82525050565b612aba8161320d565b82525050565b6000612acb826130b3565b612ad581856130d6565b9350612ae0836130a3565b8060005b83811015612b11578151612af88882612a8a565b9750612b03836130c9565b925050600181019050612ae4565b5085935050505092915050565b612b278161321f565b82525050565b612b3681613262565b82525050565b6000612b47826130be565b612b5181856130e7565b9350612b61818560208601613274565b612b6a816133ae565b840191505092915050565b6000612b826028836130e7565b9150612b8d826133bf565b604082019050919050565b6000612ba56023836130e7565b9150612bb08261340e565b604082019050919050565b6000612bc8602a836130e7565b9150612bd38261345d565b604082019050919050565b6000612beb6022836130e7565b9150612bf6826134ac565b604082019050919050565b6000612c0e601b836130e7565b9150612c19826134fb565b602082019050919050565b6000612c316021836130e7565b9150612c3c82613524565b604082019050919050565b6000612c546020836130e7565b9150612c5f82613573565b602082019050919050565b6000612c776029836130e7565b9150612c828261359c565b604082019050919050565b6000612c9a6025836130e7565b9150612ca5826135eb565b604082019050919050565b6000612cbd6024836130e7565b9150612cc88261363a565b604082019050919050565b6000612ce06017836130e7565b9150612ceb82613689565b602082019050919050565b6000612d036014836130e7565b9150612d0e826136b2565b602082019050919050565b612d228161324b565b82525050565b612d3181613255565b82525050565b6000602082019050612d4c6000830184612ab1565b92915050565b6000604082019050612d676000830185612ab1565b612d746020830184612ab1565b9392505050565b6000604082019050612d906000830185612ab1565b612d9d6020830184612d19565b9392505050565b600060c082019050612db96000830189612ab1565b612dc66020830188612d19565b612dd36040830187612b2d565b612de06060830186612b2d565b612ded6080830185612ab1565b612dfa60a0830184612d19565b979650505050505050565b6000602082019050612e1a6000830184612b1e565b92915050565b60006020820190508181036000830152612e3a8184612b3c565b905092915050565b60006020820190508181036000830152612e5b81612b75565b9050919050565b60006020820190508181036000830152612e7b81612b98565b9050919050565b60006020820190508181036000830152612e9b81612bbb565b9050919050565b60006020820190508181036000830152612ebb81612bde565b9050919050565b60006020820190508181036000830152612edb81612c01565b9050919050565b60006020820190508181036000830152612efb81612c24565b9050919050565b60006020820190508181036000830152612f1b81612c47565b9050919050565b60006020820190508181036000830152612f3b81612c6a565b9050919050565b60006020820190508181036000830152612f5b81612c8d565b9050919050565b60006020820190508181036000830152612f7b81612cb0565b9050919050565b60006020820190508181036000830152612f9b81612cd3565b9050919050565b60006020820190508181036000830152612fbb81612cf6565b9050919050565b6000602082019050612fd76000830184612d19565b92915050565b600060a082019050612ff26000830188612d19565b612fff6020830187612b2d565b81810360408301526130118186612ac0565b90506130206060830185612ab1565b61302d6080830184612d19565b9695505050505050565b600060208201905061304c6000830184612d28565b92915050565b600061305c61306d565b905061306882826132a7565b919050565b6000604051905090565b600067ffffffffffffffff8211156130925761309161337f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131038261324b565b915061310e8361324b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561314357613142613321565b5b828201905092915050565b60006131598261324b565b91506131648361324b565b92508261317457613173613350565b5b828204905092915050565b600061318a8261324b565b91506131958361324b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131ce576131cd613321565b5b828202905092915050565b60006131e48261324b565b91506131ef8361324b565b92508282101561320257613201613321565b5b828203905092915050565b60006132188261322b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061326d8261324b565b9050919050565b60005b83811015613292578082015181840152602081019050613277565b838111156132a1576000848401525b50505050565b6132b0826133ae565b810181811067ffffffffffffffff821117156132cf576132ce61337f565b5b80604052505050565b60006132e38261324b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331657613315613321565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f43616e6e6f7420696e6372656173652066656573000000000000000000000000600082015250565b6136e48161320d565b81146136ef57600080fd5b50565b6136fb8161321f565b811461370657600080fd5b50565b6137128161324b565b811461371d57600080fd5b50565b61372981613255565b811461373457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e97a52f4a61b2ff077b5a6ebad316e5a6987b086410021b59fe9251ed6f2af864736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806384f570af116100a0578063a9059cbb11610064578063a9059cbb14610372578063c38ec0e6146103af578063c3c8cd80146103d8578063c9567bf9146103ef578063dd62ed3e146104065761011f565b806384f570af146102b35780638da5cb5b146102dc578063950406c31461030757806395d89b411461031e578063a769958a146103495761011f565b8063313ce567116100e7578063313ce567146101f45780635932ead11461021f5780636fc3eaec1461024857806370a082311461025f578063715018a61461029c5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b6040516101469190612e20565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190612930565b610480565b6040516101839190612e05565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae9190612fc2565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d991906128e1565b6104af565b6040516101eb9190612e05565b60405180910390f35b34801561020057600080fd5b50610209610588565b6040516102169190613037565b60405180910390f35b34801561022b57600080fd5b50610246600480360381019061024191906129ad565b610591565b005b34801561025457600080fd5b5061025d610643565b005b34801561026b57600080fd5b5061028660048036038101906102819190612853565b6106b5565b6040516102939190612fc2565b60405180910390f35b3480156102a857600080fd5b506102b1610706565b005b3480156102bf57600080fd5b506102da60048036038101906102d5919061296c565b610859565b005b3480156102e857600080fd5b506102f16109a9565b6040516102fe9190612d37565b60405180910390f35b34801561031357600080fd5b5061031c6109d2565b005b34801561032a57600080fd5b50610333610a79565b6040516103409190612e20565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190612a4e565b610ab6565b005b34801561037e57600080fd5b5061039960048036038101906103949190612930565b610bca565b6040516103a69190612e05565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612853565b610be8565b005b3480156103e457600080fd5b506103ed610cd8565b005b3480156103fb57600080fd5b50610404610d52565b005b34801561041257600080fd5b5061042d600480360381019061042891906128a5565b6112e8565b60405161043a9190612fc2565b60405180910390f35b60606040518060400160405280600a81526020017f4d6f7a7a61546f6b656e00000000000000000000000000000000000000000000815250905090565b600061049461048d6113b9565b84846113c1565b6001905092915050565b6000683635c9adc5dea00000905090565b60006104bc84848461158c565b61057d846104c86113b9565b6105788560405180606001604052806028815260200161373860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061052e6113b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bf79092919063ffffffff16565b6113c1565b600190509392505050565b60006009905090565b6105996113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061d90612f02565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106846113b9565b73ffffffffffffffffffffffffffffffffffffffff16146106a457600080fd5b60004790506106b281611c5b565b50565b60006106ff600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d56565b9050919050565b61070e6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290612f02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6108616113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e590612f02565b60405180910390fd5b60005b81518110156109a557600160066000848481518110610939577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061099d906132d8565b9150506108f1565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109da6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612f02565b60405180910390fd5b683635c9adc5dea00000601281905550565b60606040518060400160405280600581526020017f4d4f5a5a41000000000000000000000000000000000000000000000000000000815250905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610af76113b9565b73ffffffffffffffffffffffffffffffffffffffff1614610b1757600080fd5b600c60009054906101000a900460ff1660ff168260ff1611158015610b515750600c60019054906101000a900460ff1660ff168160ff1611155b610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790612fa2565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b6000610bde610bd76113b9565b848461158c565b6001905092915050565b610bf06113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490612f02565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d196113b9565b73ffffffffffffffffffffffffffffffffffffffff1614610d3957600080fd5b6000610d44306106b5565b9050610d4f81611dc4565b50565b610d5a6113b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612f02565b60405180910390fd5b601160149054906101000a900460ff1615610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90612f82565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ec730601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea000006113c1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0d57600080fd5b505afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f45919061287c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fa757600080fd5b505afa158015610fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdf919061287c565b6040518363ffffffff1660e01b8152600401610ffc929190612d52565b602060405180830381600087803b15801561101657600080fd5b505af115801561102a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104e919061287c565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110d7306106b5565b6000806110e26109a9565b426040518863ffffffff1660e01b815260040161110496959493929190612da4565b6060604051808303818588803b15801561111d57600080fd5b505af1158015611131573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061115691906129ff565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506111bf60646111b16002683635c9adc5dea000006120be90919063ffffffff16565b61136f90919063ffffffff16565b6012819055506001601160146101000a81548160ff02191690831515021790555060f0426111ed91906130f8565b600d81905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611292929190612d7b565b602060405180830381600087803b1580156112ac57600080fd5b505af11580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906129d6565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006113b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612139565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612f62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149890612ea2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157f9190612fc2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f390612f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166390612e62565b60405180910390fd5b600081116116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690612f22565b60405180910390fd5b6001600a81905550600c60009054906101000a900460ff1660ff16600b819055506116d86109a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561174657506117166109a9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611be757600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ef5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6117f857600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a35750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118f95750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119115750601160179054906101000a900460ff165b156119c15760125481111561192557600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061197057600080fd5b601e4261197d91906130f8565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611a6c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae9576001600a81905550600c60019054906101000a900460ff1660ff16600b819055505b6000611af4306106b5565b9050601160159054906101000a900460ff16158015611b615750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611b795750601160169054906101000a900460ff165b15611be557600d544211611bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb990612e42565b60405180910390fd5b611bcb81611dc4565b60004790506000811115611be357611be247611c5b565b5b505b505b611bf283838361219c565b505050565b6000838311158290611c3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c369190612e20565b60405180910390fd5b5060008385611c4e91906131d9565b9050809150509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611cab60028461136f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611cd6573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d2760028461136f90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d52573d6000803e3d6000fd5b5050565b6000600854821115611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490612e82565b60405180910390fd5b6000611da76121ac565b9050611dbc818461136f90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e22577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e505781602001602082028036833780820191505090505b5090503081600081518110611e8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f3057600080fd5b505afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f68919061287c565b81600181518110611fa2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113c1565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161206d959493929190612fdd565b600060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b6000808314156120d15760009050612133565b600082846120df919061317f565b90508284826120ee919061314e565b1461212e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212590612ee2565b60405180910390fd5b809150505b92915050565b60008083118290612180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121779190612e20565b60405180910390fd5b506000838561218f919061314e565b9050809150509392505050565b6121a78383836121d7565b505050565b60008060006121b96123a2565b915091506121d0818361136f90919063ffffffff16565b9250505090565b6000806000806000806121e987612404565b95509550955095509550955061224786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506122dc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232881612514565b61233284836125d1565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161238f9190612fc2565b60405180910390a3505050505050505050565b600080600060085490506000683635c9adc5dea0000090506123d8683635c9adc5dea0000060085461136f90919063ffffffff16565b8210156123f757600854683635c9adc5dea00000935093505050612400565b81819350935050505b9091565b60008060008060008060008060006124218a600a54600b5461260b565b92509250925060006124316121ac565b905060008060006124448e8787876126a1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006124ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bf7565b905092915050565b60008082846124c591906130f8565b90508381101561250a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250190612ec2565b60405180910390fd5b8091505092915050565b600061251e6121ac565b9050600061253582846120be90919063ffffffff16565b905061258981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6125e68260085461246c90919063ffffffff16565b600881905550612601816009546124b690919063ffffffff16565b6009819055505050565b6000806000806126376064612629888a6120be90919063ffffffff16565b61136f90919063ffffffff16565b905060006126616064612653888b6120be90919063ffffffff16565b61136f90919063ffffffff16565b9050600061268a8261267c858c61246c90919063ffffffff16565b61246c90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806126ba85896120be90919063ffffffff16565b905060006126d186896120be90919063ffffffff16565b905060006126e887896120be90919063ffffffff16565b9050600061271182612703858761246c90919063ffffffff16565b61246c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061273d61273884613077565b613052565b9050808382526020820190508285602086028201111561275c57600080fd5b60005b8581101561278c57816127728882612796565b84526020840193506020830192505060018101905061275f565b5050509392505050565b6000813590506127a5816136db565b92915050565b6000815190506127ba816136db565b92915050565b600082601f8301126127d157600080fd5b81356127e184826020860161272a565b91505092915050565b6000813590506127f9816136f2565b92915050565b60008151905061280e816136f2565b92915050565b60008135905061282381613709565b92915050565b60008151905061283881613709565b92915050565b60008135905061284d81613720565b92915050565b60006020828403121561286557600080fd5b600061287384828501612796565b91505092915050565b60006020828403121561288e57600080fd5b600061289c848285016127ab565b91505092915050565b600080604083850312156128b857600080fd5b60006128c685828601612796565b92505060206128d785828601612796565b9150509250929050565b6000806000606084860312156128f657600080fd5b600061290486828701612796565b935050602061291586828701612796565b925050604061292686828701612814565b9150509250925092565b6000806040838503121561294357600080fd5b600061295185828601612796565b925050602061296285828601612814565b9150509250929050565b60006020828403121561297e57600080fd5b600082013567ffffffffffffffff81111561299857600080fd5b6129a4848285016127c0565b91505092915050565b6000602082840312156129bf57600080fd5b60006129cd848285016127ea565b91505092915050565b6000602082840312156129e857600080fd5b60006129f6848285016127ff565b91505092915050565b600080600060608486031215612a1457600080fd5b6000612a2286828701612829565b9350506020612a3386828701612829565b9250506040612a4486828701612829565b9150509250925092565b60008060408385031215612a6157600080fd5b6000612a6f8582860161283e565b9250506020612a808582860161283e565b9150509250929050565b6000612a968383612aa2565b60208301905092915050565b612aab8161320d565b82525050565b612aba8161320d565b82525050565b6000612acb826130b3565b612ad581856130d6565b9350612ae0836130a3565b8060005b83811015612b11578151612af88882612a8a565b9750612b03836130c9565b925050600181019050612ae4565b5085935050505092915050565b612b278161321f565b82525050565b612b3681613262565b82525050565b6000612b47826130be565b612b5181856130e7565b9350612b61818560208601613274565b612b6a816133ae565b840191505092915050565b6000612b826028836130e7565b9150612b8d826133bf565b604082019050919050565b6000612ba56023836130e7565b9150612bb08261340e565b604082019050919050565b6000612bc8602a836130e7565b9150612bd38261345d565b604082019050919050565b6000612beb6022836130e7565b9150612bf6826134ac565b604082019050919050565b6000612c0e601b836130e7565b9150612c19826134fb565b602082019050919050565b6000612c316021836130e7565b9150612c3c82613524565b604082019050919050565b6000612c546020836130e7565b9150612c5f82613573565b602082019050919050565b6000612c776029836130e7565b9150612c828261359c565b604082019050919050565b6000612c9a6025836130e7565b9150612ca5826135eb565b604082019050919050565b6000612cbd6024836130e7565b9150612cc88261363a565b604082019050919050565b6000612ce06017836130e7565b9150612ceb82613689565b602082019050919050565b6000612d036014836130e7565b9150612d0e826136b2565b602082019050919050565b612d228161324b565b82525050565b612d3181613255565b82525050565b6000602082019050612d4c6000830184612ab1565b92915050565b6000604082019050612d676000830185612ab1565b612d746020830184612ab1565b9392505050565b6000604082019050612d906000830185612ab1565b612d9d6020830184612d19565b9392505050565b600060c082019050612db96000830189612ab1565b612dc66020830188612d19565b612dd36040830187612b2d565b612de06060830186612b2d565b612ded6080830185612ab1565b612dfa60a0830184612d19565b979650505050505050565b6000602082019050612e1a6000830184612b1e565b92915050565b60006020820190508181036000830152612e3a8184612b3c565b905092915050565b60006020820190508181036000830152612e5b81612b75565b9050919050565b60006020820190508181036000830152612e7b81612b98565b9050919050565b60006020820190508181036000830152612e9b81612bbb565b9050919050565b60006020820190508181036000830152612ebb81612bde565b9050919050565b60006020820190508181036000830152612edb81612c01565b9050919050565b60006020820190508181036000830152612efb81612c24565b9050919050565b60006020820190508181036000830152612f1b81612c47565b9050919050565b60006020820190508181036000830152612f3b81612c6a565b9050919050565b60006020820190508181036000830152612f5b81612c8d565b9050919050565b60006020820190508181036000830152612f7b81612cb0565b9050919050565b60006020820190508181036000830152612f9b81612cd3565b9050919050565b60006020820190508181036000830152612fbb81612cf6565b9050919050565b6000602082019050612fd76000830184612d19565b92915050565b600060a082019050612ff26000830188612d19565b612fff6020830187612b2d565b81810360408301526130118186612ac0565b90506130206060830185612ab1565b61302d6080830184612d19565b9695505050505050565b600060208201905061304c6000830184612d28565b92915050565b600061305c61306d565b905061306882826132a7565b919050565b6000604051905090565b600067ffffffffffffffff8211156130925761309161337f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006131038261324b565b915061310e8361324b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561314357613142613321565b5b828201905092915050565b60006131598261324b565b91506131648361324b565b92508261317457613173613350565b5b828204905092915050565b600061318a8261324b565b91506131958361324b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131ce576131cd613321565b5b828202905092915050565b60006131e48261324b565b91506131ef8361324b565b92508282101561320257613201613321565b5b828203905092915050565b60006132188261322b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061326d8261324b565b9050919050565b60005b83811015613292578082015181840152602081019050613277565b838111156132a1576000848401525b50505050565b6132b0826133ae565b810181811067ffffffffffffffff821117156132cf576132ce61337f565b5b80604052505050565b60006132e38261324b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561331657613315613321565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f53656c6c732070726f6869626974656420666f7220746865206669727374203560008201527f206d696e75746573000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f43616e6e6f7420696e6372656173652066656573000000000000000000000000600082015250565b6136e48161320d565b81146136ef57600080fd5b50565b6136fb8161321f565b811461370657600080fd5b50565b6137128161324b565b811461371d57600080fd5b50565b61372981613255565b811461373457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e97a52f4a61b2ff077b5a6ebad316e5a6987b086410021b59fe9251ed6f2af864736f6c63430008040033

Deployed Bytecode Sourcemap

3620:11136:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5767:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6619:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6044:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6788:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5953:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7109:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12749:194;;;;;;;;;;;;;:::i;:::-;;6147:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2699:148;;;;;;;;;;;;;:::i;:::-;;11191:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2485:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14380:99;;;;;;;;;;;;;:::i;:::-;;5858:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7224:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6293:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11369:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12542:195;;;;;;;;;;;;;:::i;:::-;;10312:867;;;;;;;;;;;;;:::i;:::-;;6468:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5767:83;5804:13;5837:5;;;;;;;;;;;;;;;;;5830:12;;5767:83;:::o;6619:161::-;6694:4;6711:39;6720:12;:10;:12::i;:::-;6734:7;6743:6;6711:8;:39::i;:::-;6768:4;6761:11;;6619:161;;;;:::o;6044:95::-;6097:7;4118:18;6117:14;;6044:95;:::o;6788:313::-;6886:4;6903:36;6913:6;6921:9;6932:6;6903:9;:36::i;:::-;6950:121;6959:6;6967:12;:10;:12::i;:::-;6981:89;7019:6;6981:89;;;;;;;;;;;;;;;;;:11;:19;6993:6;6981:19;;;;;;;;;;;;;;;:33;7001:12;:10;:12::i;:::-;6981:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6950:8;:121::i;:::-;7089:4;7082:11;;6788:313;;;;;:::o;5953:83::-;5994:5;4622:1;6012:16;;5953:83;:::o;7109:103::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7199:5:::1;7181:15;;:23;;;;;;;;;;;;;;;;;;7109:103:::0;:::o;12749:194::-;12815:15;;;;;;;;;;;12799:31;;:12;:10;:12::i;:::-;:31;;;12791:40;;;;;;12842:26;12871:21;12842:50;;12903:32;12916:18;12903:12;:32::i;:::-;12749:194;:::o;6147:138::-;6213:7;6240:37;6260:7;:16;6268:7;6260:16;;;;;;;;;;;;;;;;6240:19;:37::i;:::-;6233:44;;6147:138;;;:::o;2699:148::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2806:1:::1;2769:40;;2790:6;::::0;::::1;;;;;;;;2769:40;;;;;;;;;;;;2837:1;2820:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2699:148::o:0;11191:166::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11267:6:::1;11262:88;11283:5;:12;11279:1;:16;11262:88;;;11334:4;11317;:14;11322:5;11328:1;11322:8;;;;;;;;;;;;;;;;;;;;;;11317:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11297:3;;;;;:::i;:::-;;;;11262:88;;;;11191:166:::0;:::o;2485:79::-;2523:7;2550:6;;;;;;;;;;;2543:13;;2485:79;:::o;14380:99::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4118:18:::1;14449:12;:22;;;;14380:99::o:0;5858:87::-;5897:13;5930:7;;;;;;;;;;;;;;;;;5923:14;;5858:87;:::o;7224:242::-;7323:15;;;;;;;;;;;7307:31;;:12;:10;:12::i;:::-;:31;;;7299:40;;;;;;7367:4;;;;;;;;;;;7358:13;;:5;:13;;;;:30;;;;;7384:4;;;;;;;;;;;7375:13;;:5;:13;;;;7358:30;7350:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7430:5;7423:4;;:12;;;;;;;;;;;;;;;;;;7453:5;7446:4;;:12;;;;;;;;;;;;;;;;;;7224:242;;:::o;6293:167::-;6371:4;6388:42;6398:12;:10;:12::i;:::-;6412:9;6423:6;6388:9;:42::i;:::-;6448:4;6441:11;;6293:167;;;;:::o;11369:91::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11447:5:::1;11432:4;:12;11437:6;11432:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11369:91:::0;:::o;12542:195::-;12608:15;;;;;;;;;;;12592:31;;:12;:10;:12::i;:::-;:31;;;12584:40;;;;;;12635:23;12661:24;12679:4;12661:9;:24::i;:::-;12635:50;;12696:33;12713:15;12696:16;:33::i;:::-;12542:195;:::o;10312:867::-;2622:12;:10;:12::i;:::-;2612:22;;:6;;;;;;;;;;:22;;;2604:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10376:11:::1;;;;;;;;;;;10375:12;10367:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10425:35;10482:42;10425:100;;10554:16;10536:15;;:34;;;;;;;;;;;;;;;;;;10581:58;10598:4;10613:15;;;;;;;;;;;4118:18;10581:8;:58::i;:::-;10684:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10666:56;;;10731:4;10738:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10666:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10650:13;;:112;;;;;;;;;;;;;;;;;;10773:15;;;;;;;;;;;:31;;;10812:21;10843:4;10849:24;10867:4;10849:9;:24::i;:::-;10874:1;10876::::0;10878:7:::1;:5;:7::i;:::-;10886:15;10773:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10927:4;10913:11;;:18;;;;;;;;;;;;;;;;;;10960:4;10942:15;;:22;;;;;;;;;;;;;;;;;;10990:23;11009:3;10990:14;11002:1;4118:18;10990:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;10975:12;:38;;;;11038:4;11024:11;;:18;;;;;;;;;;;;;;;;;;11079:9;11060:15;:29;;;;:::i;:::-;11053:4;:36;;;;11107:13;;;;;;;;;;;11100:29;;;11138:15;;;;;;;;;;;11156:14;11100:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2682:1;10312:867::o:0;6468:143::-;6549:7;6576:11;:18;6588:5;6576:18;;;;;;;;;;;;;;;:27;6595:7;6576:27;;;;;;;;;;;;;;;;6569:34;;6468:143;;;;:::o;1792:132::-;1850:7;1877:39;1881:1;1884;1877:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1870:46;;1792:132;;;;:::o;203:98::-;256:7;283:10;276:17;;203:98;:::o;7736:335::-;7846:1;7829:19;;:5;:19;;;;7821:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7927:1;7908:21;;:7;:21;;;;7900:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8009:6;7979:11;:18;7991:5;7979:18;;;;;;;;;;;;;;;:27;7998:7;7979:27;;;;;;;;;;;;;;;:36;;;;8047:7;8031:32;;8040:5;8031:32;;;8056:6;8031:32;;;;;;:::i;:::-;;;;;;;;7736:335;;;:::o;8079:1560::-;8183:1;8167:18;;:4;:18;;;;8159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8260:1;8246:16;;:2;:16;;;;8238:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8330:1;8321:6;:10;8313:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8400:1;8388:9;:13;;;;8424:4;;;;;;;;;;;8412:16;;:9;:16;;;;8451:7;:5;:7::i;:::-;8443:15;;:4;:15;;;;:32;;;;;8468:7;:5;:7::i;:::-;8462:13;;:2;:13;;;;8443:32;8439:1148;;;8501:4;:10;8506:4;8501:10;;;;;;;;;;;;;;;;;;;;;;;;;8500:11;:24;;;;;8516:4;:8;8521:2;8516:8;;;;;;;;;;;;;;;;;;;;;;;;;8515:9;8500:24;8492:33;;;;;;8552:13;;;;;;;;;;;8544:21;;:4;:21;;;:55;;;;;8583:15;;;;;;;;;;;8569:30;;:2;:30;;;;8544:55;:83;;;;;8605:18;:22;8624:2;8605:22;;;;;;;;;;;;;;;;;;;;;;;;;8603:24;8544:83;:102;;;;;8631:15;;;;;;;;;;;8544:102;8540:325;;;8714:12;;8704:6;:22;;8696:31;;;;;;8769:15;8754:8;:12;8763:2;8754:12;;;;;;;;;;;;;;;;:30;8746:39;;;;;;8838:10;8819:15;:30;;;;:::i;:::-;8804:8;:12;8813:2;8804:12;;;;;;;;;;;;;;;:45;;;;8540:325;8917:13;;;;;;;;;;;8911:19;;:2;:19;;;:55;;;;;8950:15;;;;;;;;;;;8934:32;;:4;:32;;;;8911:55;:85;;;;;8972:18;:24;8991:4;8972:24;;;;;;;;;;;;;;;;;;;;;;;;;8970:26;8911:85;8907:174;;;9029:1;9017:9;:13;;;;9061:4;;;;;;;;;;;9049:16;;:9;:16;;;;8907:174;9095:28;9126:24;9144:4;9126:9;:24::i;:::-;9095:55;;9170:6;;;;;;;;;;;9169:7;:32;;;;;9188:13;;;;;;;;;;;9180:21;;:4;:21;;;;9169:32;:47;;;;;9205:11;;;;;;;;;;;9169:47;9165:411;;;9263:4;;9245:15;:22;9237:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9330:38;9347:20;9330:16;:38::i;:::-;9387:26;9416:21;9387:50;;9480:1;9459:18;:22;9456:105;;;9506:35;9519:21;9506:12;:35::i;:::-;9456:105;9165:411;;8439:1148;;9601:30;9616:4;9621:2;9624:6;9601:14;:30::i;:::-;8079:1560;;;:::o;1340:190::-;1426:7;1459:1;1454;:6;;1462:12;1446:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1486:9;1502:1;1498;:5;;;;:::i;:::-;1486:17;;1521:1;1514:8;;;1340:190;;;;;:::o;10146:154::-;10203:15;;;;;;;;;;;:24;;:39;10228:13;10239:1;10228:6;:10;;:13;;;;:::i;:::-;10203:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10253:15;;;;;;;;;;;:24;;:39;10278:13;10289:1;10278:6;:10;;:13;;;;:::i;:::-;10253:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10146:154;:::o;7474:254::-;7541:7;7580;;7569;:18;;7561:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7645:19;7668:10;:8;:10::i;:::-;7645:33;;7696:24;7708:11;7696:7;:11;;:24;;;;:::i;:::-;7689:31;;;7474:254;;;:::o;9647:483::-;5004:4;4995:6;;:13;;;;;;;;;;;;;;;;;;9725:21:::1;9763:1;9749:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9725:40;;9794:4;9776;9781:1;9776:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;9820:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9810:4;9815:1;9810:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;9853:62;9870:4;9885:15;;;;;;;;;;;9903:11;9853:8;:62::i;:::-;9926:15;;;;;;;;;;;:66;;;10007:11;10033:1;10049:4;10076;10096:15;9926:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5019:1;5040:5:::0;5031:6;;:14;;;;;;;;;;;;;;;;;;9647:483;:::o;1538:246::-;1596:7;1625:1;1620;:6;1616:47;;;1650:1;1643:8;;;;1616:47;1673:9;1689:1;1685;:5;;;;:::i;:::-;1673:17;;1718:1;1713;1709;:5;;;;:::i;:::-;:10;1701:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1775:1;1768:8;;;1538:246;;;;;:::o;1932:189::-;2018:7;2050:1;2046;:5;2053:12;2038:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2077:9;2093:1;2089;:5;;;;:::i;:::-;2077:17;;2112:1;2105:8;;;1932:189;;;;;:::o;11476:146::-;11570:44;11588:6;11596:9;11607:6;11570:17;:44::i;:::-;11476:146;;;:::o;14209:163::-;14250:7;14271:15;14288;14307:19;:17;:19::i;:::-;14270:56;;;;14344:20;14356:7;14344;:11;;:20;;;;:::i;:::-;14337:27;;;;14209:163;:::o;11630:488::-;11729:15;11746:23;11771:12;11785:23;11810:12;11824:13;11841:19;11852:7;11841:10;:19::i;:::-;11728:132;;;;;;;;;;;;11889:28;11909:7;11889;:15;11897:6;11889:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11871:7;:15;11879:6;11871:15;;;;;;;;;;;;;;;:46;;;;11949:39;11972:15;11949:7;:18;11957:9;11949:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11928:7;:18;11936:9;11928:18;;;;;;;;;;;;;;;:60;;;;12000:16;12010:5;12000:9;:16::i;:::-;12027:23;12039:4;12045;12027:11;:23::i;:::-;12083:9;12066:44;;12075:6;12066:44;;;12094:15;12066:44;;;;;;:::i;:::-;;;;;;;;11630:488;;;;;;;;;:::o;14491:262::-;14541:7;14550;14570:15;14588:7;;14570:25;;14606:15;4118:18;14606:25;;14662:20;4118:18;14662:7;;:11;;:20;;;;:::i;:::-;14652:7;:30;14648:61;;;14692:7;;4118:18;14684:25;;;;;;;;14648:61;14728:7;14737;14720:25;;;;;;14491:262;;;:::o;12957:471::-;13016:7;13025;13034;13043;13052;13061;13082:23;13107:12;13121:13;13138:42;13150:7;13159:9;;13170;;13138:11;:42::i;:::-;13081:99;;;;;;13191:19;13214:10;:8;:10::i;:::-;13191:33;;13236:15;13253:23;13278:12;13294:46;13306:7;13315:4;13321:5;13328:11;13294;:46::i;:::-;13235:105;;;;;;13359:7;13368:15;13385:4;13391:15;13408:4;13414:5;13351:69;;;;;;;;;;;;;;;;;;;12957:471;;;;;;;:::o;1196:136::-;1254:7;1281:43;1285:1;1288;1281:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1274:50;;1196:136;;;;:::o;1009:179::-;1067:7;1087:9;1103:1;1099;:5;;;;:::i;:::-;1087:17;;1128:1;1123;:6;;1115:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1179:1;1172:8;;;1009:179;;;;:::o;12126:212::-;12179:19;12202:10;:8;:10::i;:::-;12179:33;;12223:13;12239:22;12249:11;12239:5;:9;;:22;;;;:::i;:::-;12223:38;;12297:33;12324:5;12297:7;:22;12313:4;12297:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12272:7;:22;12288:4;12272:22;;;;;;;;;;;;;;;:58;;;;12126:212;;;:::o;12346:147::-;12424:17;12436:4;12424:7;;:11;;:17;;;;:::i;:::-;12414:7;:27;;;;12465:20;12480:4;12465:10;;:14;;:20;;;;:::i;:::-;12452:10;:33;;;;12346:147;;:::o;13436:351::-;13529:7;13538;13547;13567:12;13582:28;13606:3;13582:19;13594:6;13582:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13567:43;;13621:13;13637:29;13662:3;13637:20;13649:7;13637;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13621:45;;13677:23;13703:28;13725:5;13703:17;13715:4;13703:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13677:54;;13750:15;13767:4;13773:5;13742:37;;;;;;;;;13436:351;;;;;;;:::o;13795:409::-;13905:7;13914;13923;13943:15;13961:24;13973:11;13961:7;:11;;:24;;;;:::i;:::-;13943:42;;13996:12;14011:21;14020:11;14011:4;:8;;:21;;;;:::i;:::-;13996:36;;14043:13;14059:22;14069:11;14059:5;:9;;:22;;;;:::i;:::-;14043:38;;14092:23;14118:28;14140:5;14118:17;14130:4;14118:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14092:54;;14165:7;14174:15;14191:4;14157:39;;;;;;;;;;13795:409;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:137::-;1498:5;1529:6;1523:13;1514:22;;1545:30;1569:5;1545:30;:::i;:::-;1504:77;;;;:::o;1587:139::-;1633:5;1671:6;1658:20;1649:29;;1687:33;1714:5;1687:33;:::i;:::-;1639:87;;;;:::o;1732:143::-;1789:5;1820:6;1814:13;1805:22;;1836:33;1863:5;1836:33;:::i;:::-;1795:80;;;;:::o;1881:135::-;1925:5;1963:6;1950:20;1941:29;;1979:31;2004:5;1979:31;:::i;:::-;1931:85;;;;:::o;2022:262::-;2081:6;2130:2;2118:9;2109:7;2105:23;2101:32;2098:2;;;2146:1;2143;2136:12;2098:2;2189:1;2214:53;2259:7;2250:6;2239:9;2235:22;2214:53;:::i;:::-;2204:63;;2160:117;2088:196;;;;:::o;2290:284::-;2360:6;2409:2;2397:9;2388:7;2384:23;2380:32;2377:2;;;2425:1;2422;2415:12;2377:2;2468:1;2493:64;2549:7;2540:6;2529:9;2525:22;2493:64;:::i;:::-;2483:74;;2439:128;2367:207;;;;:::o;2580:407::-;2648:6;2656;2705:2;2693:9;2684:7;2680:23;2676:32;2673:2;;;2721:1;2718;2711:12;2673:2;2764:1;2789:53;2834:7;2825:6;2814:9;2810:22;2789:53;:::i;:::-;2779:63;;2735:117;2891:2;2917:53;2962:7;2953:6;2942:9;2938:22;2917:53;:::i;:::-;2907:63;;2862:118;2663:324;;;;;:::o;2993:552::-;3070:6;3078;3086;3135:2;3123:9;3114:7;3110:23;3106:32;3103:2;;;3151:1;3148;3141:12;3103:2;3194:1;3219:53;3264:7;3255:6;3244:9;3240:22;3219:53;:::i;:::-;3209:63;;3165:117;3321:2;3347:53;3392:7;3383:6;3372:9;3368:22;3347:53;:::i;:::-;3337:63;;3292:118;3449:2;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3420:118;3093:452;;;;;:::o;3551:407::-;3619:6;3627;3676:2;3664:9;3655:7;3651:23;3647:32;3644:2;;;3692:1;3689;3682:12;3644:2;3735:1;3760:53;3805:7;3796:6;3785:9;3781:22;3760:53;:::i;:::-;3750:63;;3706:117;3862:2;3888:53;3933:7;3924:6;3913:9;3909:22;3888:53;:::i;:::-;3878:63;;3833:118;3634:324;;;;;:::o;3964:405::-;4048:6;4097:2;4085:9;4076:7;4072:23;4068:32;4065:2;;;4113:1;4110;4103:12;4065:2;4184:1;4173:9;4169:17;4156:31;4214:18;4206:6;4203:30;4200:2;;;4246:1;4243;4236:12;4200:2;4274:78;4344:7;4335:6;4324:9;4320:22;4274:78;:::i;:::-;4264:88;;4127:235;4055:314;;;;:::o;4375:256::-;4431:6;4480:2;4468:9;4459:7;4455:23;4451:32;4448:2;;;4496:1;4493;4486:12;4448:2;4539:1;4564:50;4606:7;4597:6;4586:9;4582:22;4564:50;:::i;:::-;4554:60;;4510:114;4438:193;;;;:::o;4637:278::-;4704:6;4753:2;4741:9;4732:7;4728:23;4724:32;4721:2;;;4769:1;4766;4759:12;4721:2;4812:1;4837:61;4890:7;4881:6;4870:9;4866:22;4837:61;:::i;:::-;4827:71;;4783:125;4711:204;;;;:::o;4921:596::-;5009:6;5017;5025;5074:2;5062:9;5053:7;5049:23;5045:32;5042:2;;;5090:1;5087;5080:12;5042:2;5133:1;5158:64;5214:7;5205:6;5194:9;5190:22;5158:64;:::i;:::-;5148:74;;5104:128;5271:2;5297:64;5353:7;5344:6;5333:9;5329:22;5297:64;:::i;:::-;5287:74;;5242:129;5410:2;5436:64;5492:7;5483:6;5472:9;5468:22;5436:64;:::i;:::-;5426:74;;5381:129;5032:485;;;;;:::o;5523:399::-;5587:6;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:2;;;5660:1;5657;5650:12;5612:2;5703:1;5728:51;5771:7;5762:6;5751:9;5747:22;5728:51;:::i;:::-;5718:61;;5674:115;5828:2;5854:51;5897:7;5888:6;5877:9;5873:22;5854:51;:::i;:::-;5844:61;;5799:116;5602:320;;;;;:::o;5928:179::-;5997:10;6018:46;6060:3;6052:6;6018:46;:::i;:::-;6096:4;6091:3;6087:14;6073:28;;6008:99;;;;:::o;6113:108::-;6190:24;6208:5;6190:24;:::i;:::-;6185:3;6178:37;6168:53;;:::o;6227:118::-;6314:24;6332:5;6314:24;:::i;:::-;6309:3;6302:37;6292:53;;:::o;6381:732::-;6500:3;6529:54;6577:5;6529:54;:::i;:::-;6599:86;6678:6;6673:3;6599:86;:::i;:::-;6592:93;;6709:56;6759:5;6709:56;:::i;:::-;6788:7;6819:1;6804:284;6829:6;6826:1;6823:13;6804:284;;;6905:6;6899:13;6932:63;6991:3;6976:13;6932:63;:::i;:::-;6925:70;;7018:60;7071:6;7018:60;:::i;:::-;7008:70;;6864:224;6851:1;6848;6844:9;6839:14;;6804:284;;;6808:14;7104:3;7097:10;;6505:608;;;;;;;:::o;7119:109::-;7200:21;7215:5;7200:21;:::i;:::-;7195:3;7188:34;7178:50;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7307:74;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7903:220;;;:::o;8129:366::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8275:220;;;:::o;8501:366::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8647:220;;;:::o;8873:366::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;9019:220;;;:::o;9245:366::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9391:220;;;:::o;9617:366::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9763:220;;;:::o;9989:366::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;10135:220;;;:::o;10361:366::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10507:220;;;:::o;10733:366::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10879:220;;;:::o;11105:366::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11251:220;;;:::o;11477:366::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11623:220;;;:::o;11849:366::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11995:220;;;:::o;12221:118::-;12308:24;12326:5;12308:24;:::i;:::-;12303:3;12296:37;12286:53;;:::o;12345:112::-;12428:22;12444:5;12428:22;:::i;:::-;12423:3;12416:35;12406:51;;:::o;12463:222::-;12556:4;12594:2;12583:9;12579:18;12571:26;;12607:71;12675:1;12664:9;12660:17;12651:6;12607:71;:::i;:::-;12561:124;;;;:::o;12691:332::-;12812:4;12850:2;12839:9;12835:18;12827:26;;12863:71;12931:1;12920:9;12916:17;12907:6;12863:71;:::i;:::-;12944:72;13012:2;13001:9;12997:18;12988:6;12944:72;:::i;:::-;12817:206;;;;;:::o;13029:332::-;13150:4;13188:2;13177:9;13173:18;13165:26;;13201:71;13269:1;13258:9;13254:17;13245:6;13201:71;:::i;:::-;13282:72;13350:2;13339:9;13335:18;13326:6;13282:72;:::i;:::-;13155:206;;;;;:::o;13367:807::-;13616:4;13654:3;13643:9;13639:19;13631:27;;13668:71;13736:1;13725:9;13721:17;13712:6;13668:71;:::i;:::-;13749:72;13817:2;13806:9;13802:18;13793:6;13749:72;:::i;:::-;13831:80;13907:2;13896:9;13892:18;13883:6;13831:80;:::i;:::-;13921;13997:2;13986:9;13982:18;13973:6;13921:80;:::i;:::-;14011:73;14079:3;14068:9;14064:19;14055:6;14011:73;:::i;:::-;14094;14162:3;14151:9;14147:19;14138:6;14094:73;:::i;:::-;13621:553;;;;;;;;;:::o;14180:210::-;14267:4;14305:2;14294:9;14290:18;14282:26;;14318:65;14380:1;14369:9;14365:17;14356:6;14318:65;:::i;:::-;14272:118;;;;:::o;14396:313::-;14509:4;14547:2;14536:9;14532:18;14524:26;;14596:9;14590:4;14586:20;14582:1;14571:9;14567:17;14560:47;14624:78;14697:4;14688:6;14624:78;:::i;:::-;14616:86;;14514:195;;;;:::o;14715:419::-;14881:4;14919:2;14908:9;14904:18;14896:26;;14968:9;14962:4;14958:20;14954:1;14943:9;14939:17;14932:47;14996:131;15122:4;14996:131;:::i;:::-;14988:139;;14886:248;;;:::o;15140:419::-;15306:4;15344:2;15333:9;15329:18;15321:26;;15393:9;15387:4;15383:20;15379:1;15368:9;15364:17;15357:47;15421:131;15547:4;15421:131;:::i;:::-;15413:139;;15311:248;;;:::o;15565:419::-;15731:4;15769:2;15758:9;15754:18;15746:26;;15818:9;15812:4;15808:20;15804:1;15793:9;15789:17;15782:47;15846:131;15972:4;15846:131;:::i;:::-;15838:139;;15736:248;;;:::o;15990:419::-;16156:4;16194:2;16183:9;16179:18;16171:26;;16243:9;16237:4;16233:20;16229:1;16218:9;16214:17;16207:47;16271:131;16397:4;16271:131;:::i;:::-;16263:139;;16161:248;;;:::o;16415:419::-;16581:4;16619:2;16608:9;16604:18;16596:26;;16668:9;16662:4;16658:20;16654:1;16643:9;16639:17;16632:47;16696:131;16822:4;16696:131;:::i;:::-;16688:139;;16586:248;;;:::o;16840:419::-;17006:4;17044:2;17033:9;17029:18;17021:26;;17093:9;17087:4;17083:20;17079:1;17068:9;17064:17;17057:47;17121:131;17247:4;17121:131;:::i;:::-;17113:139;;17011:248;;;:::o;17265:419::-;17431:4;17469:2;17458:9;17454:18;17446:26;;17518:9;17512:4;17508:20;17504:1;17493:9;17489:17;17482:47;17546:131;17672:4;17546:131;:::i;:::-;17538:139;;17436:248;;;:::o;17690:419::-;17856:4;17894:2;17883:9;17879:18;17871:26;;17943:9;17937:4;17933:20;17929:1;17918:9;17914:17;17907:47;17971:131;18097:4;17971:131;:::i;:::-;17963:139;;17861:248;;;:::o;18115:419::-;18281:4;18319:2;18308:9;18304:18;18296:26;;18368:9;18362:4;18358:20;18354:1;18343:9;18339:17;18332:47;18396:131;18522:4;18396:131;:::i;:::-;18388:139;;18286:248;;;:::o;18540:419::-;18706:4;18744:2;18733:9;18729:18;18721:26;;18793:9;18787:4;18783:20;18779:1;18768:9;18764:17;18757:47;18821:131;18947:4;18821:131;:::i;:::-;18813:139;;18711:248;;;:::o;18965:419::-;19131:4;19169:2;19158:9;19154:18;19146:26;;19218:9;19212:4;19208:20;19204:1;19193:9;19189:17;19182:47;19246:131;19372:4;19246:131;:::i;:::-;19238:139;;19136:248;;;:::o;19390:419::-;19556:4;19594:2;19583:9;19579:18;19571:26;;19643:9;19637:4;19633:20;19629:1;19618:9;19614:17;19607:47;19671:131;19797:4;19671:131;:::i;:::-;19663:139;;19561:248;;;:::o;19815:222::-;19908:4;19946:2;19935:9;19931:18;19923:26;;19959:71;20027:1;20016:9;20012:17;20003:6;19959:71;:::i;:::-;19913:124;;;;:::o;20043:831::-;20306:4;20344:3;20333:9;20329:19;20321:27;;20358:71;20426:1;20415:9;20411:17;20402:6;20358:71;:::i;:::-;20439:80;20515:2;20504:9;20500:18;20491:6;20439:80;:::i;:::-;20566:9;20560:4;20556:20;20551:2;20540:9;20536:18;20529:48;20594:108;20697:4;20688:6;20594:108;:::i;:::-;20586:116;;20712:72;20780:2;20769:9;20765:18;20756:6;20712:72;:::i;:::-;20794:73;20862:3;20851:9;20847:19;20838:6;20794:73;:::i;:::-;20311:563;;;;;;;;:::o;20880:214::-;20969:4;21007:2;20996:9;20992:18;20984:26;;21020:67;21084:1;21073:9;21069:17;21060:6;21020:67;:::i;:::-;20974:120;;;;:::o;21100:129::-;21134:6;21161:20;;:::i;:::-;21151:30;;21190:33;21218:4;21210:6;21190:33;:::i;:::-;21141:88;;;:::o;21235:75::-;21268:6;21301:2;21295:9;21285:19;;21275:35;:::o;21316:311::-;21393:4;21483:18;21475:6;21472:30;21469:2;;;21505:18;;:::i;:::-;21469:2;21555:4;21547:6;21543:17;21535:25;;21615:4;21609;21605:15;21597:23;;21398:229;;;:::o;21633:132::-;21700:4;21723:3;21715:11;;21753:4;21748:3;21744:14;21736:22;;21705:60;;;:::o;21771:114::-;21838:6;21872:5;21866:12;21856:22;;21845:40;;;:::o;21891:99::-;21943:6;21977:5;21971:12;21961:22;;21950:40;;;:::o;21996:113::-;22066:4;22098;22093:3;22089:14;22081:22;;22071:38;;;:::o;22115:184::-;22214:11;22248:6;22243:3;22236:19;22288:4;22283:3;22279:14;22264:29;;22226:73;;;;:::o;22305:169::-;22389:11;22423:6;22418:3;22411:19;22463:4;22458:3;22454:14;22439:29;;22401:73;;;;:::o;22480:305::-;22520:3;22539:20;22557:1;22539:20;:::i;:::-;22534:25;;22573:20;22591:1;22573:20;:::i;:::-;22568:25;;22727:1;22659:66;22655:74;22652:1;22649:81;22646:2;;;22733:18;;:::i;:::-;22646:2;22777:1;22774;22770:9;22763:16;;22524:261;;;;:::o;22791:185::-;22831:1;22848:20;22866:1;22848:20;:::i;:::-;22843:25;;22882:20;22900:1;22882:20;:::i;:::-;22877:25;;22921:1;22911:2;;22926:18;;:::i;:::-;22911:2;22968:1;22965;22961:9;22956:14;;22833:143;;;;:::o;22982:348::-;23022:7;23045:20;23063:1;23045:20;:::i;:::-;23040:25;;23079:20;23097:1;23079:20;:::i;:::-;23074:25;;23267:1;23199:66;23195:74;23192:1;23189:81;23184:1;23177:9;23170:17;23166:105;23163:2;;;23274:18;;:::i;:::-;23163:2;23322:1;23319;23315:9;23304:20;;23030:300;;;;:::o;23336:191::-;23376:4;23396:20;23414:1;23396:20;:::i;:::-;23391:25;;23430:20;23448:1;23430:20;:::i;:::-;23425:25;;23469:1;23466;23463:8;23460:2;;;23474:18;;:::i;:::-;23460:2;23519:1;23516;23512:9;23504:17;;23381:146;;;;:::o;23533:96::-;23570:7;23599:24;23617:5;23599:24;:::i;:::-;23588:35;;23578:51;;;:::o;23635:90::-;23669:7;23712:5;23705:13;23698:21;23687:32;;23677:48;;;:::o;23731:126::-;23768:7;23808:42;23801:5;23797:54;23786:65;;23776:81;;;:::o;23863:77::-;23900:7;23929:5;23918:16;;23908:32;;;:::o;23946:86::-;23981:7;24021:4;24014:5;24010:16;23999:27;;23989:43;;;:::o;24038:121::-;24096:9;24129:24;24147:5;24129:24;:::i;:::-;24116:37;;24106:53;;;:::o;24165:307::-;24233:1;24243:113;24257:6;24254:1;24251:13;24243:113;;;24342:1;24337:3;24333:11;24327:18;24323:1;24318:3;24314:11;24307:39;24279:2;24276:1;24272:10;24267:15;;24243:113;;;24374:6;24371:1;24368:13;24365:2;;;24454:1;24445:6;24440:3;24436:16;24429:27;24365:2;24214:258;;;;:::o;24478:281::-;24561:27;24583:4;24561:27;:::i;:::-;24553:6;24549:40;24691:6;24679:10;24676:22;24655:18;24643:10;24640:34;24637:62;24634:2;;;24702:18;;:::i;:::-;24634:2;24742:10;24738:2;24731:22;24521:238;;;:::o;24765:233::-;24804:3;24827:24;24845:5;24827:24;:::i;:::-;24818:33;;24873:66;24866:5;24863:77;24860:2;;;24943:18;;:::i;:::-;24860:2;24990:1;24983:5;24979:13;24972:20;;24808:190;;;:::o;25004:180::-;25052:77;25049:1;25042:88;25149:4;25146:1;25139:15;25173:4;25170:1;25163:15;25190:180;25238:77;25235:1;25228:88;25335:4;25332:1;25325:15;25359:4;25356:1;25349:15;25376:180;25424:77;25421:1;25414:88;25521:4;25518:1;25511:15;25545:4;25542:1;25535:15;25562:102;25603:6;25654:2;25650:7;25645:2;25638:5;25634:14;25630:28;25620:38;;25610:54;;;:::o;25670:227::-;25810:34;25806:1;25798:6;25794:14;25787:58;25879:10;25874:2;25866:6;25862:15;25855:35;25776:121;:::o;25903:222::-;26043:34;26039:1;26031:6;26027:14;26020:58;26112:5;26107:2;26099:6;26095:15;26088:30;26009:116;:::o;26131:229::-;26271:34;26267:1;26259:6;26255:14;26248:58;26340:12;26335:2;26327:6;26323:15;26316:37;26237:123;:::o;26366:221::-;26506:34;26502:1;26494:6;26490:14;26483:58;26575:4;26570:2;26562:6;26558:15;26551:29;26472:115;:::o;26593:177::-;26733:29;26729:1;26721:6;26717:14;26710:53;26699:71;:::o;26776:220::-;26916:34;26912:1;26904:6;26900:14;26893:58;26985:3;26980:2;26972:6;26968:15;26961:28;26882:114;:::o;27002:182::-;27142:34;27138:1;27130:6;27126:14;27119:58;27108:76;:::o;27190:228::-;27330:34;27326:1;27318:6;27314:14;27307:58;27399:11;27394:2;27386:6;27382:15;27375:36;27296:122;:::o;27424:224::-;27564:34;27560:1;27552:6;27548:14;27541:58;27633:7;27628:2;27620:6;27616:15;27609:32;27530:118;:::o;27654:223::-;27794:34;27790:1;27782:6;27778:14;27771:58;27863:6;27858:2;27850:6;27846:15;27839:31;27760:117;:::o;27883:173::-;28023:25;28019:1;28011:6;28007:14;28000:49;27989:67;:::o;28062:170::-;28202:22;28198:1;28190:6;28186:14;28179:46;28168:64;:::o;28238:122::-;28311:24;28329:5;28311:24;:::i;:::-;28304:5;28301:35;28291:2;;28350:1;28347;28340:12;28291:2;28281:79;:::o;28366:116::-;28436:21;28451:5;28436:21;:::i;:::-;28429:5;28426:32;28416:2;;28472:1;28469;28462:12;28416:2;28406:76;:::o;28488:122::-;28561:24;28579:5;28561:24;:::i;:::-;28554:5;28551:35;28541:2;;28600:1;28597;28590:12;28541:2;28531:79;:::o;28616:118::-;28687:22;28703:5;28687:22;:::i;:::-;28680:5;28677:33;28667:2;;28724:1;28721;28714:12;28667:2;28657:77;:::o

Swarm Source

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