ETH Price: $3,304.97 (+0.54%)

Token

Sombrero (SOMBRERO)
 

Overview

Max Total Supply

100,000,000 SOMBRERO

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
842,127.153747522 SOMBRERO

Value
$0.00
0xce2518103e0c766df3002d3060258e6fdb1c480a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SOMBRERO

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
Telegram: https://t.me/sombreroerc
Twitter: https://twitter.com/sombreroerc
Medium: https://medium.com/@sombreroerc       


                             888                                    
                             888                                    
                             888                                    
.d8888b  .d88b. 88888b.d88b. 88888b. 888d888 .d88b. 888d888 .d88b.  
88K     d88""88b888 "888 "88b888 "88b888P"  d8P  Y8b888P"  d88""88b 
"Y8888b.888  888888  888  888888  888888    88888888888    888  888 
     X88Y88..88P888  888  888888 d88P888    Y8b.    888    Y88..88P 
 88888P' "Y88P" 888  888  88888888P" 888     "Y8888 888     "Y88P" 
*/

pragma solidity ^0.8.7;
// SPDX-License-Identifier: UNLICENSED
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 SOMBRERO 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;
        mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet;
    
    string private constant _name = "Sombrero";
    string private constant _symbol = "SOMBRERO";
    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;
    uint256 private _maxWalletSize = _tTotal;
    uint256 private _multiplier = 1;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _feeAddrWallet = payable(0x8A8B390335e0AA66Ab9FCAf6E19cB95C680D1518);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    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 setFee() private {
        _feeAddr2 = _feeAddr2 * _multiplier;        
    }
    
    function restoreAllFee() private {
        _feeAddr2 = 5;
    }

    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 = 0;
        _feeAddr2 = 5;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            // Buy
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            // Sell
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 0;
                _feeAddr2 = 5;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                setFee();
            }
        }
		
        _tokenTransfer(from,to,amount);

        restoreAllFee;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function changeMaxTxAmount(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxTxAmount = _tTotal.mul(percentage).div(100);
    }

    function changeMaxWalletSize(uint256 percentage) external onlyOwner{
        require(percentage>0);
        _maxWalletSize = _tTotal.mul(percentage).div(100);
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet.transfer(amount);
    }  

    function removeTaxFee(uint8 mult) external onlyOwner{
        _multiplier = mult;
    }

    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);
        _maxWalletSize = _tTotal.mul(3).div(100);
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addsnipd(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delSnipa(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() == _feeAddrWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet);
        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 _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":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addsnipd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","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":"delSnipa","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":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"mult","type":"uint8"}],"name":"removeTaxFee","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"}]

608060405267016345785d8a00006000196200001c919062000466565b6000196200002b919062000421565b600a556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff02191690831515021790555067016345785d8a000060115567016345785d8a00006012556001601355348015620000a957600080fd5b506000620000bc620003c260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350738a8b390335e0aa66ab9fcaf6e19cb95c680d1518600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5460026000620001c6620003c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200021a620003ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200034d620003c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620003b4919062000404565b60405180910390a3620004fc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003fe816200045c565b82525050565b60006020820190506200041b6000830184620003f3565b92915050565b60006200042e826200045c565b91506200043b836200045c565b9250828210156200045157620004506200049e565b5b828203905092915050565b6000819050919050565b600062000473826200045c565b915062000480836200045c565b925082620004935762000492620004cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6138f3806200050c6000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab578063b87f137a1161006f578063b87f137a146103c5578063c3c8cd80146103ee578063c9567bf914610405578063ca7a523e1461041c578063dabecdb214610445578063dd62ed3e1461046e57610135565b8063715018a614610304578063751039fc1461031b5780638da5cb5b1461033257806395d89b411461035d578063a9059cbb1461038857610135565b8063418956b3116100f2578063418956b3146102355780635932ead11461025e578063677daa57146102875780636fc3eaec146102b057806370a08231146102c757610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ab565b60405161015c9190612f61565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612a3b565b6104e8565b6040516101999190612f46565b60405180910390f35b3480156101ae57600080fd5b506101b7610506565b6040516101c49190613103565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef91906129e8565b610516565b6040516102019190612f46565b60405180910390f35b34801561021657600080fd5b5061021f6105ef565b60405161022c9190613178565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061294e565b6105f8565b005b34801561026a57600080fd5b5061028560048036038101906102809190612ac4565b6106e8565b005b34801561029357600080fd5b506102ae60048036038101906102a99190612b1e565b61079a565b005b3480156102bc57600080fd5b506102c5610873565b005b3480156102d357600080fd5b506102ee60048036038101906102e9919061294e565b6108e5565b6040516102fb9190613103565b60405180910390f35b34801561031057600080fd5b50610319610936565b005b34801561032757600080fd5b50610330610a89565b005b34801561033e57600080fd5b50610347610b3e565b6040516103549190612e78565b60405180910390f35b34801561036957600080fd5b50610372610b67565b60405161037f9190612f61565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612a3b565b610ba4565b6040516103bc9190612f46565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612b1e565b610bc2565b005b3480156103fa57600080fd5b50610403610c9b565b005b34801561041157600080fd5b5061041a610d15565b005b34801561042857600080fd5b50610443600480360381019061043e9190612a7b565b6112cb565b005b34801561045157600080fd5b5061046c60048036038101906104679190612b9e565b6113f5565b005b34801561047a57600080fd5b50610495600480360381019061049091906129a8565b611497565b6040516104a29190613103565b60405180910390f35b60606040518060400160405280600881526020017f536f6d627265726f000000000000000000000000000000000000000000000000815250905090565b60006104fc6104f561151e565b8484611526565b6001905092915050565b600067016345785d8a0000905090565b60006105238484846116f1565b6105e48461052f61151e565b6105df8560405180606001604052806028815260200161389660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059561151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8c9092919063ffffffff16565b611526565b600190509392505050565b60006009905090565b61060061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490613043565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106f061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490613043565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b6107a261151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690613043565b60405180910390fd5b6000811161083c57600080fd5b61086a606461085c8367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60118190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108b461151e565b73ffffffffffffffffffffffffffffffffffffffff16146108d457600080fd5b60004790506108e281611eb5565b50565b600061092f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f21565b9050919050565b61093e61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290613043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9161151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590613043565b60405180910390fd5b67016345785d8a000060118190555067016345785d8a0000601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f534f4d425245524f000000000000000000000000000000000000000000000000815250905090565b6000610bb8610bb161151e565b84846116f1565b6001905092915050565b610bca61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613043565b60405180910390fd5b60008111610c6457600080fd5b610c926064610c848367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdc61151e565b73ffffffffffffffffffffffffffffffffffffffff1614610cfc57600080fd5b6000610d07306108e5565b9050610d1281611f8f565b50565b610d1d61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613043565b60405180910390fd5b601060149054906101000a900460ff1615610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df1906130e3565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e8930600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a0000611526565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecf57600080fd5b505afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061297b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa1919061297b565b6040518363ffffffff1660e01b8152600401610fbe929190612e93565b602060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611010919061297b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611099306108e5565b6000806110a4610b3e565b426040518863ffffffff1660e01b81526004016110c696959493929190612ee5565b6060604051808303818588803b1580156110df57600080fd5b505af11580156110f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111189190612b4b565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506111806064611172600267016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6011819055506111b560646111a7600367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6012819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611275929190612ebc565b602060405180830381600087803b15801561128f57600080fd5b505af11580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c79190612af1565b5050565b6112d361151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613043565b60405180910390fd5b60005b81518110156113f157600160066000848481518110611385576113846134c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113e990613419565b915050611363565b5050565b6113fd61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613043565b60405180910390fd5b8060ff1660138190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906130c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612fe3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190613103565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890612f83565b60405180910390fd5b60008111611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613063565b60405180910390fd5b6000600c819055506005600d8190555061182c610b3e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561189a575061186a610b3e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119435750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61194c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119f75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a4d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a655750601060179054906101000a900460ff165b15611ba357601154811115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612fa3565b60405180910390fd5b60125481611abc846108e5565b611ac69190613239565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130a3565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b5257600080fd5b601e42611b5f9190613239565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c4e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cba576000600c819055506005600d819055505b6000611cc5306108e5565b9050601060159054906101000a900460ff16158015611d325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4a5750601060169054906101000a900460ff165b15611d7a57611d5881611f8f565b60004790506000811115611d7057611d6f47611eb5565b5b611d78612217565b505b505b611d8783838361222f565b505050565b6000838311158290611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb9190612f61565b60405180910390fd5b5060008385611de3919061331a565b9050809150509392505050565b600080831415611e035760009050611e65565b60008284611e1191906132c0565b9050828482611e20919061328f565b14611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790613023565b60405180910390fd5b809150505b92915050565b6000611ead83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223f565b905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1d573d6000803e3d6000fd5b5050565b6000600a54821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90612fc3565b60405180910390fd5b6000611f726122a2565b9050611f878184611e6b90919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fc757611fc66134ef565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b509050308160008151811061200d5761200c6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120af57600080fd5b505afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e7919061297b565b816001815181106120fb576120fa6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611526565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c695949392919061311e565b600060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b601354600d5461222791906132c0565b600d81905550565b61223a8383836122cd565b505050565b60008083118290612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9190612f61565b60405180910390fd5b5060008385612295919061328f565b9050809150509392505050565b60008060006122af612498565b915091506122c68183611e6b90919063ffffffff16565b9250505090565b6000806000806000806122df876124f7565b95509550955095509550955061233d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241e81612607565b61242884836126c4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124859190613103565b60405180910390a3505050505050505050565b6000806000600a549050600067016345785d8a000090506124cc67016345785d8a0000600a54611e6b90919063ffffffff16565b8210156124ea57600a5467016345785d8a00009350935050506124f3565b81819350935050505b9091565b60008060008060008060008060006125148a600c54600d546126fe565b92509250925060006125246122a2565b905060008060006125378e878787612794565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8c565b905092915050565b60008082846125b89190613239565b9050838110156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490613003565b60405180910390fd5b8091505092915050565b60006126116122a2565b905060006126288284611df090919063ffffffff16565b905061267c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d982600a5461255f90919063ffffffff16565b600a819055506126f481600b546125a990919063ffffffff16565b600b819055505050565b60008060008061272a606461271c888a611df090919063ffffffff16565b611e6b90919063ffffffff16565b905060006127546064612746888b611df090919063ffffffff16565b611e6b90919063ffffffff16565b9050600061277d8261276f858c61255f90919063ffffffff16565b61255f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127ad8589611df090919063ffffffff16565b905060006127c48689611df090919063ffffffff16565b905060006127db8789611df090919063ffffffff16565b90506000612804826127f6858761255f90919063ffffffff16565b61255f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061283061282b846131b8565b613193565b9050808382526020820190508285602086028201111561285357612852613523565b5b60005b858110156128835781612869888261288d565b845260208401935060208301925050600181019050612856565b5050509392505050565b60008135905061289c81613839565b92915050565b6000815190506128b181613839565b92915050565b600082601f8301126128cc576128cb61351e565b5b81356128dc84826020860161281d565b91505092915050565b6000813590506128f481613850565b92915050565b60008151905061290981613850565b92915050565b60008135905061291e81613867565b92915050565b60008151905061293381613867565b92915050565b6000813590506129488161387e565b92915050565b6000602082840312156129645761296361352d565b5b60006129728482850161288d565b91505092915050565b6000602082840312156129915761299061352d565b5b600061299f848285016128a2565b91505092915050565b600080604083850312156129bf576129be61352d565b5b60006129cd8582860161288d565b92505060206129de8582860161288d565b9150509250929050565b600080600060608486031215612a0157612a0061352d565b5b6000612a0f8682870161288d565b9350506020612a208682870161288d565b9250506040612a318682870161290f565b9150509250925092565b60008060408385031215612a5257612a5161352d565b5b6000612a608582860161288d565b9250506020612a718582860161290f565b9150509250929050565b600060208284031215612a9157612a9061352d565b5b600082013567ffffffffffffffff811115612aaf57612aae613528565b5b612abb848285016128b7565b91505092915050565b600060208284031215612ada57612ad961352d565b5b6000612ae8848285016128e5565b91505092915050565b600060208284031215612b0757612b0661352d565b5b6000612b15848285016128fa565b91505092915050565b600060208284031215612b3457612b3361352d565b5b6000612b428482850161290f565b91505092915050565b600080600060608486031215612b6457612b6361352d565b5b6000612b7286828701612924565b9350506020612b8386828701612924565b9250506040612b9486828701612924565b9150509250925092565b600060208284031215612bb457612bb361352d565b5b6000612bc284828501612939565b91505092915050565b6000612bd78383612be3565b60208301905092915050565b612bec8161334e565b82525050565b612bfb8161334e565b82525050565b6000612c0c826131f4565b612c168185613217565b9350612c21836131e4565b8060005b83811015612c52578151612c398882612bcb565b9750612c448361320a565b925050600181019050612c25565b5085935050505092915050565b612c6881613360565b82525050565b612c77816133a3565b82525050565b6000612c88826131ff565b612c928185613228565b9350612ca28185602086016133b5565b612cab81613532565b840191505092915050565b6000612cc3602383613228565b9150612cce82613543565b604082019050919050565b6000612ce6601983613228565b9150612cf182613592565b602082019050919050565b6000612d09602a83613228565b9150612d14826135bb565b604082019050919050565b6000612d2c602283613228565b9150612d378261360a565b604082019050919050565b6000612d4f601b83613228565b9150612d5a82613659565b602082019050919050565b6000612d72602183613228565b9150612d7d82613682565b604082019050919050565b6000612d95602083613228565b9150612da0826136d1565b602082019050919050565b6000612db8602983613228565b9150612dc3826136fa565b604082019050919050565b6000612ddb602583613228565b9150612de682613749565b604082019050919050565b6000612dfe601a83613228565b9150612e0982613798565b602082019050919050565b6000612e21602483613228565b9150612e2c826137c1565b604082019050919050565b6000612e44601783613228565b9150612e4f82613810565b602082019050919050565b612e638161338c565b82525050565b612e7281613396565b82525050565b6000602082019050612e8d6000830184612bf2565b92915050565b6000604082019050612ea86000830185612bf2565b612eb56020830184612bf2565b9392505050565b6000604082019050612ed16000830185612bf2565b612ede6020830184612e5a565b9392505050565b600060c082019050612efa6000830189612bf2565b612f076020830188612e5a565b612f146040830187612c6e565b612f216060830186612c6e565b612f2e6080830185612bf2565b612f3b60a0830184612e5a565b979650505050505050565b6000602082019050612f5b6000830184612c5f565b92915050565b60006020820190508181036000830152612f7b8184612c7d565b905092915050565b60006020820190508181036000830152612f9c81612cb6565b9050919050565b60006020820190508181036000830152612fbc81612cd9565b9050919050565b60006020820190508181036000830152612fdc81612cfc565b9050919050565b60006020820190508181036000830152612ffc81612d1f565b9050919050565b6000602082019050818103600083015261301c81612d42565b9050919050565b6000602082019050818103600083015261303c81612d65565b9050919050565b6000602082019050818103600083015261305c81612d88565b9050919050565b6000602082019050818103600083015261307c81612dab565b9050919050565b6000602082019050818103600083015261309c81612dce565b9050919050565b600060208201905081810360008301526130bc81612df1565b9050919050565b600060208201905081810360008301526130dc81612e14565b9050919050565b600060208201905081810360008301526130fc81612e37565b9050919050565b60006020820190506131186000830184612e5a565b92915050565b600060a0820190506131336000830188612e5a565b6131406020830187612c6e565b81810360408301526131528186612c01565b90506131616060830185612bf2565b61316e6080830184612e5a565b9695505050505050565b600060208201905061318d6000830184612e69565b92915050565b600061319d6131ae565b90506131a982826133e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156131d3576131d26134ef565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132448261338c565b915061324f8361338c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328457613283613462565b5b828201905092915050565b600061329a8261338c565b91506132a58361338c565b9250826132b5576132b4613491565b5b828204905092915050565b60006132cb8261338c565b91506132d68361338c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561330f5761330e613462565b5b828202905092915050565b60006133258261338c565b91506133308361338c565b92508282101561334357613342613462565b5b828203905092915050565b60006133598261336c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133ae8261338c565b9050919050565b60005b838110156133d35780820151818401526020810190506133b8565b838111156133e2576000848401525b50505050565b6133f182613532565b810181811067ffffffffffffffff821117156134105761340f6134ef565b5b80604052505050565b60006134248261338c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345757613456613462565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6138428161334e565b811461384d57600080fd5b50565b61385981613360565b811461386457600080fd5b50565b6138708161338c565b811461387b57600080fd5b50565b61388781613396565b811461389257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220360cc143d9be7ab5baea7b9d7446f23546e6e65517ed3d5b3b7a26afcb837afb64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063b87f137a1161006f578063b87f137a146103c5578063c3c8cd80146103ee578063c9567bf914610405578063ca7a523e1461041c578063dabecdb214610445578063dd62ed3e1461046e57610135565b8063715018a614610304578063751039fc1461031b5780638da5cb5b1461033257806395d89b411461035d578063a9059cbb1461038857610135565b8063418956b3116100f2578063418956b3146102355780635932ead11461025e578063677daa57146102875780636fc3eaec146102b057806370a08231146102c757610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ab565b60405161015c9190612f61565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612a3b565b6104e8565b6040516101999190612f46565b60405180910390f35b3480156101ae57600080fd5b506101b7610506565b6040516101c49190613103565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef91906129e8565b610516565b6040516102019190612f46565b60405180910390f35b34801561021657600080fd5b5061021f6105ef565b60405161022c9190613178565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061294e565b6105f8565b005b34801561026a57600080fd5b5061028560048036038101906102809190612ac4565b6106e8565b005b34801561029357600080fd5b506102ae60048036038101906102a99190612b1e565b61079a565b005b3480156102bc57600080fd5b506102c5610873565b005b3480156102d357600080fd5b506102ee60048036038101906102e9919061294e565b6108e5565b6040516102fb9190613103565b60405180910390f35b34801561031057600080fd5b50610319610936565b005b34801561032757600080fd5b50610330610a89565b005b34801561033e57600080fd5b50610347610b3e565b6040516103549190612e78565b60405180910390f35b34801561036957600080fd5b50610372610b67565b60405161037f9190612f61565b60405180910390f35b34801561039457600080fd5b506103af60048036038101906103aa9190612a3b565b610ba4565b6040516103bc9190612f46565b60405180910390f35b3480156103d157600080fd5b506103ec60048036038101906103e79190612b1e565b610bc2565b005b3480156103fa57600080fd5b50610403610c9b565b005b34801561041157600080fd5b5061041a610d15565b005b34801561042857600080fd5b50610443600480360381019061043e9190612a7b565b6112cb565b005b34801561045157600080fd5b5061046c60048036038101906104679190612b9e565b6113f5565b005b34801561047a57600080fd5b50610495600480360381019061049091906129a8565b611497565b6040516104a29190613103565b60405180910390f35b60606040518060400160405280600881526020017f536f6d627265726f000000000000000000000000000000000000000000000000815250905090565b60006104fc6104f561151e565b8484611526565b6001905092915050565b600067016345785d8a0000905090565b60006105238484846116f1565b6105e48461052f61151e565b6105df8560405180606001604052806028815260200161389660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059561151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8c9092919063ffffffff16565b611526565b600190509392505050565b60006009905090565b61060061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490613043565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106f061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490613043565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b6107a261151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690613043565b60405180910390fd5b6000811161083c57600080fd5b61086a606461085c8367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60118190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108b461151e565b73ffffffffffffffffffffffffffffffffffffffff16146108d457600080fd5b60004790506108e281611eb5565b50565b600061092f600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f21565b9050919050565b61093e61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290613043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9161151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590613043565b60405180910390fd5b67016345785d8a000060118190555067016345785d8a0000601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f534f4d425245524f000000000000000000000000000000000000000000000000815250905090565b6000610bb8610bb161151e565b84846116f1565b6001905092915050565b610bca61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613043565b60405180910390fd5b60008111610c6457600080fd5b610c926064610c848367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cdc61151e565b73ffffffffffffffffffffffffffffffffffffffff1614610cfc57600080fd5b6000610d07306108e5565b9050610d1281611f8f565b50565b610d1d61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190613043565b60405180910390fd5b601060149054906101000a900460ff1615610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df1906130e3565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e8930600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a0000611526565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecf57600080fd5b505afa158015610ee3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f07919061297b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6957600080fd5b505afa158015610f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa1919061297b565b6040518363ffffffff1660e01b8152600401610fbe929190612e93565b602060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611010919061297b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611099306108e5565b6000806110a4610b3e565b426040518863ffffffff1660e01b81526004016110c696959493929190612ee5565b6060604051808303818588803b1580156110df57600080fd5b505af11580156110f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111189190612b4b565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506111806064611172600267016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6011819055506111b560646111a7600367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6012819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611275929190612ebc565b602060405180830381600087803b15801561128f57600080fd5b505af11580156112a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c79190612af1565b5050565b6112d361151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613043565b60405180910390fd5b60005b81518110156113f157600160066000848481518110611385576113846134c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113e990613419565b915050611363565b5050565b6113fd61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613043565b60405180910390fd5b8060ff1660138190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906130c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612fe3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190613103565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890612f83565b60405180910390fd5b60008111611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613063565b60405180910390fd5b6000600c819055506005600d8190555061182c610b3e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561189a575061186a610b3e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119435750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61194c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119f75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a4d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a655750601060179054906101000a900460ff165b15611ba357601154811115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612fa3565b60405180910390fd5b60125481611abc846108e5565b611ac69190613239565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130a3565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b5257600080fd5b601e42611b5f9190613239565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c4e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cba576000600c819055506005600d819055505b6000611cc5306108e5565b9050601060159054906101000a900460ff16158015611d325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4a5750601060169054906101000a900460ff165b15611d7a57611d5881611f8f565b60004790506000811115611d7057611d6f47611eb5565b5b611d78612217565b505b505b611d8783838361222f565b505050565b6000838311158290611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb9190612f61565b60405180910390fd5b5060008385611de3919061331a565b9050809150509392505050565b600080831415611e035760009050611e65565b60008284611e1191906132c0565b9050828482611e20919061328f565b14611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790613023565b60405180910390fd5b809150505b92915050565b6000611ead83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223f565b905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1d573d6000803e3d6000fd5b5050565b6000600a54821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90612fc3565b60405180910390fd5b6000611f726122a2565b9050611f878184611e6b90919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fc757611fc66134ef565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b509050308160008151811061200d5761200c6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120af57600080fd5b505afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e7919061297b565b816001815181106120fb576120fa6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611526565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c695949392919061311e565b600060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b601354600d5461222791906132c0565b600d81905550565b61223a8383836122cd565b505050565b60008083118290612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9190612f61565b60405180910390fd5b5060008385612295919061328f565b9050809150509392505050565b60008060006122af612498565b915091506122c68183611e6b90919063ffffffff16565b9250505090565b6000806000806000806122df876124f7565b95509550955095509550955061233d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241e81612607565b61242884836126c4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124859190613103565b60405180910390a3505050505050505050565b6000806000600a549050600067016345785d8a000090506124cc67016345785d8a0000600a54611e6b90919063ffffffff16565b8210156124ea57600a5467016345785d8a00009350935050506124f3565b81819350935050505b9091565b60008060008060008060008060006125148a600c54600d546126fe565b92509250925060006125246122a2565b905060008060006125378e878787612794565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8c565b905092915050565b60008082846125b89190613239565b9050838110156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490613003565b60405180910390fd5b8091505092915050565b60006126116122a2565b905060006126288284611df090919063ffffffff16565b905061267c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d982600a5461255f90919063ffffffff16565b600a819055506126f481600b546125a990919063ffffffff16565b600b819055505050565b60008060008061272a606461271c888a611df090919063ffffffff16565b611e6b90919063ffffffff16565b905060006127546064612746888b611df090919063ffffffff16565b611e6b90919063ffffffff16565b9050600061277d8261276f858c61255f90919063ffffffff16565b61255f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127ad8589611df090919063ffffffff16565b905060006127c48689611df090919063ffffffff16565b905060006127db8789611df090919063ffffffff16565b90506000612804826127f6858761255f90919063ffffffff16565b61255f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061283061282b846131b8565b613193565b9050808382526020820190508285602086028201111561285357612852613523565b5b60005b858110156128835781612869888261288d565b845260208401935060208301925050600181019050612856565b5050509392505050565b60008135905061289c81613839565b92915050565b6000815190506128b181613839565b92915050565b600082601f8301126128cc576128cb61351e565b5b81356128dc84826020860161281d565b91505092915050565b6000813590506128f481613850565b92915050565b60008151905061290981613850565b92915050565b60008135905061291e81613867565b92915050565b60008151905061293381613867565b92915050565b6000813590506129488161387e565b92915050565b6000602082840312156129645761296361352d565b5b60006129728482850161288d565b91505092915050565b6000602082840312156129915761299061352d565b5b600061299f848285016128a2565b91505092915050565b600080604083850312156129bf576129be61352d565b5b60006129cd8582860161288d565b92505060206129de8582860161288d565b9150509250929050565b600080600060608486031215612a0157612a0061352d565b5b6000612a0f8682870161288d565b9350506020612a208682870161288d565b9250506040612a318682870161290f565b9150509250925092565b60008060408385031215612a5257612a5161352d565b5b6000612a608582860161288d565b9250506020612a718582860161290f565b9150509250929050565b600060208284031215612a9157612a9061352d565b5b600082013567ffffffffffffffff811115612aaf57612aae613528565b5b612abb848285016128b7565b91505092915050565b600060208284031215612ada57612ad961352d565b5b6000612ae8848285016128e5565b91505092915050565b600060208284031215612b0757612b0661352d565b5b6000612b15848285016128fa565b91505092915050565b600060208284031215612b3457612b3361352d565b5b6000612b428482850161290f565b91505092915050565b600080600060608486031215612b6457612b6361352d565b5b6000612b7286828701612924565b9350506020612b8386828701612924565b9250506040612b9486828701612924565b9150509250925092565b600060208284031215612bb457612bb361352d565b5b6000612bc284828501612939565b91505092915050565b6000612bd78383612be3565b60208301905092915050565b612bec8161334e565b82525050565b612bfb8161334e565b82525050565b6000612c0c826131f4565b612c168185613217565b9350612c21836131e4565b8060005b83811015612c52578151612c398882612bcb565b9750612c448361320a565b925050600181019050612c25565b5085935050505092915050565b612c6881613360565b82525050565b612c77816133a3565b82525050565b6000612c88826131ff565b612c928185613228565b9350612ca28185602086016133b5565b612cab81613532565b840191505092915050565b6000612cc3602383613228565b9150612cce82613543565b604082019050919050565b6000612ce6601983613228565b9150612cf182613592565b602082019050919050565b6000612d09602a83613228565b9150612d14826135bb565b604082019050919050565b6000612d2c602283613228565b9150612d378261360a565b604082019050919050565b6000612d4f601b83613228565b9150612d5a82613659565b602082019050919050565b6000612d72602183613228565b9150612d7d82613682565b604082019050919050565b6000612d95602083613228565b9150612da0826136d1565b602082019050919050565b6000612db8602983613228565b9150612dc3826136fa565b604082019050919050565b6000612ddb602583613228565b9150612de682613749565b604082019050919050565b6000612dfe601a83613228565b9150612e0982613798565b602082019050919050565b6000612e21602483613228565b9150612e2c826137c1565b604082019050919050565b6000612e44601783613228565b9150612e4f82613810565b602082019050919050565b612e638161338c565b82525050565b612e7281613396565b82525050565b6000602082019050612e8d6000830184612bf2565b92915050565b6000604082019050612ea86000830185612bf2565b612eb56020830184612bf2565b9392505050565b6000604082019050612ed16000830185612bf2565b612ede6020830184612e5a565b9392505050565b600060c082019050612efa6000830189612bf2565b612f076020830188612e5a565b612f146040830187612c6e565b612f216060830186612c6e565b612f2e6080830185612bf2565b612f3b60a0830184612e5a565b979650505050505050565b6000602082019050612f5b6000830184612c5f565b92915050565b60006020820190508181036000830152612f7b8184612c7d565b905092915050565b60006020820190508181036000830152612f9c81612cb6565b9050919050565b60006020820190508181036000830152612fbc81612cd9565b9050919050565b60006020820190508181036000830152612fdc81612cfc565b9050919050565b60006020820190508181036000830152612ffc81612d1f565b9050919050565b6000602082019050818103600083015261301c81612d42565b9050919050565b6000602082019050818103600083015261303c81612d65565b9050919050565b6000602082019050818103600083015261305c81612d88565b9050919050565b6000602082019050818103600083015261307c81612dab565b9050919050565b6000602082019050818103600083015261309c81612dce565b9050919050565b600060208201905081810360008301526130bc81612df1565b9050919050565b600060208201905081810360008301526130dc81612e14565b9050919050565b600060208201905081810360008301526130fc81612e37565b9050919050565b60006020820190506131186000830184612e5a565b92915050565b600060a0820190506131336000830188612e5a565b6131406020830187612c6e565b81810360408301526131528186612c01565b90506131616060830185612bf2565b61316e6080830184612e5a565b9695505050505050565b600060208201905061318d6000830184612e69565b92915050565b600061319d6131ae565b90506131a982826133e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156131d3576131d26134ef565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132448261338c565b915061324f8361338c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328457613283613462565b5b828201905092915050565b600061329a8261338c565b91506132a58361338c565b9250826132b5576132b4613491565b5b828204905092915050565b60006132cb8261338c565b91506132d68361338c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561330f5761330e613462565b5b828202905092915050565b60006133258261338c565b91506133308361338c565b92508282101561334357613342613462565b5b828203905092915050565b60006133598261336c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133ae8261338c565b9050919050565b60005b838110156133d35780820151818401526020810190506133b8565b838111156133e2576000848401525b50505050565b6133f182613532565b810181811067ffffffffffffffff821117156134105761340f6134ef565b5b80604052505050565b60006134248261338c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345757613456613462565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6138428161334e565b811461384d57600080fd5b50565b61385981613360565b811461386457600080fd5b50565b6138708161338c565b811461387b57600080fd5b50565b61388781613396565b811461389257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220360cc143d9be7ab5baea7b9d7446f23546e6e65517ed3d5b3b7a26afcb837afb64736f6c63430008070033

Deployed Bytecode Sourcemap

4215:11282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6083:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6935:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6360:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7104:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6269:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12224:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7425:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10607:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13602:193;;;;;;;;;;;;;:::i;:::-;;6463:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3294:148;;;;;;;;;;;;;:::i;:::-;;10481:118;;;;;;;;;;;;;:::i;:::-;;3080:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6174:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6609:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10778;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13396:194;;;;;;;;;;;;;:::i;:::-;;11164:871;;;;;;;;;;;;;:::i;:::-;;12047:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11067:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6784:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6083:83;6120:13;6153:5;;;;;;;;;;;;;;;;;6146:12;;6083:83;:::o;6935:161::-;7010:4;7027:39;7036:12;:10;:12::i;:::-;7050:7;7059:6;7027:8;:39::i;:::-;7084:4;7077:11;;6935:161;;;;:::o;6360:95::-;6413:7;4831:17;6433:14;;6360:95;:::o;7104:313::-;7202:4;7219:36;7229:6;7237:9;7248:6;7219:9;:36::i;:::-;7266:121;7275:6;7283:12;:10;:12::i;:::-;7297:89;7335:6;7297:89;;;;;;;;;;;;;;;;;:11;:19;7309:6;7297:19;;;;;;;;;;;;;;;:33;7317:12;:10;:12::i;:::-;7297:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7266:8;:121::i;:::-;7405:4;7398:11;;7104:313;;;;;:::o;6269:83::-;6310:5;5200:1;6328:16;;6269:83;:::o;12224:90::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12301:5:::1;12286:4;:12;12291:6;12286:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12224:90:::0;:::o;7425:103::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7515:5:::1;7497:15;;:23;;;;;;;;;;;;;;;;;;7425:103:::0;:::o;10607:163::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10702:1:::1;10691:10;:12;10683:21;;;::::0;::::1;;10730:32;10758:3;10730:23;10742:10;4831:17;10730:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;10715:12;:47;;;;10607:163:::0;:::o;13602:193::-;13668:14;;;;;;;;;;;13652:30;;:12;:10;:12::i;:::-;:30;;;13644:39;;;;;;13694:26;13723:21;13694:50;;13755:32;13768:18;13755:12;:32::i;:::-;13633:162;13602:193::o;6463:138::-;6529:7;6556:37;6576:7;:16;6584:7;6576:16;;;;;;;;;;;;;;;;6556:19;:37::i;:::-;6549:44;;6463:138;;;:::o;3294:148::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3401:1:::1;3364:40;;3385:6;::::0;::::1;;;;;;;;3364:40;;;;;;;;;;;;3432:1;3415:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3294:148::o:0;10481:118::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4831:17:::1;10534:12;:22;;;;4831:17;10567:14;:24;;;;10481:118::o:0;3080:79::-;3118:7;3145:6;;;;;;;;;;;3138:13;;3080:79;:::o;6174:87::-;6213:13;6246:7;;;;;;;;;;;;;;;;;6239:14;;6174:87;:::o;6609:167::-;6687:4;6704:42;6714:12;:10;:12::i;:::-;6728:9;6739:6;6704:9;:42::i;:::-;6764:4;6757:11;;6609:167;;;;:::o;10778:::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10875:1:::1;10864:10;:12;10856:21;;;::::0;::::1;;10905:32;10933:3;10905:23;10917:10;4831:17;10905:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;10888:14;:49;;;;10778:167:::0;:::o;13396:194::-;13462:14;;;;;;;;;;;13446:30;;:12;:10;:12::i;:::-;:30;;;13438:39;;;;;;13488:23;13514:24;13532:4;13514:9;:24::i;:::-;13488:50;;13549:33;13566:15;13549:16;:33::i;:::-;13427:163;13396:194::o;11164:871::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11228:11:::1;;;;;;;;;;;11227:12;11219:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11277:35;11334:42;11277:100;;11406:16;11388:15;;:34;;;;;;;;;;;;;;;;;;11433:58;11450:4;11465:15;;;;;;;;;;;4831:17;11433:8;:58::i;:::-;11536:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11518:56;;;11583:4;11590:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11518:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11502:13;;:112;;;;;;;;;;;;;;;;;;11625:15;;;;;;;;;;;:31;;;11664:21;11695:4;11701:24;11719:4;11701:9;:24::i;:::-;11726:1;11728::::0;11730:7:::1;:5;:7::i;:::-;11738:15;11625:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11779:4;11765:11;;:18;;;;;;;;;;;;;;;;;;11812:4;11794:15;;:22;;;;;;;;;;;;;;;;;;11842:23;11861:3;11842:14;11854:1;4831:17;11842:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11827:12;:38;;;;11893:23;11912:3;11893:14;11905:1;4831:17;11893:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11876:14;:40;;;;11941:4;11927:11;;:18;;;;;;;;;;;;;;;;;;11963:13;;;;;;;;;;;11956:29;;;11994:15;;;;;;;;;;;12012:14;11956:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11208:827;11164:871::o:0;12047:165::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12122:6:::1;12117:88;12138:5;:12;12134:1;:16;12117:88;;;12189:4;12172;:14;12177:5;12183:1;12177:8;;;;;;;;:::i;:::-;;;;;;;;12172:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12152:3;;;;;:::i;:::-;;;;12117:88;;;;12047:165:::0;:::o;11067:89::-;3217:12;:10;:12::i;:::-;3207:22;;:6;;;;;;;;;;:22;;;3199:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11144:4:::1;11130:18;;:11;:18;;;;11067:89:::0;:::o;6784:143::-;6865:7;6892:11;:18;6904:5;6892:18;;;;;;;;;;;;;;;:27;6911:7;6892:27;;;;;;;;;;;;;;;;6885:34;;6784:143;;;;:::o;798:98::-;851:7;878:10;871:17;;798:98;:::o;7971:335::-;8081:1;8064:19;;:5;:19;;;;8056:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8162:1;8143:21;;:7;:21;;;;8135:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8244:6;8214:11;:18;8226:5;8214:18;;;;;;;;;;;;;;;:27;8233:7;8214:27;;;;;;;;;;;;;;;:36;;;;8282:7;8266:32;;8275:5;8266:32;;;8291:6;8266:32;;;;;;:::i;:::-;;;;;;;;7971:335;;;:::o;8314:1668::-;8418:1;8402:18;;:4;:18;;;;8394:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8495:1;8481:16;;:2;:16;;;;8473:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8565:1;8556:6;:10;8548:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8635:1;8623:9;:13;;;;8659:1;8647:9;:13;;;;8683:7;:5;:7::i;:::-;8675:15;;:4;:15;;;;:32;;;;;8700:7;:5;:7::i;:::-;8694:13;;:2;:13;;;;8675:32;8671:1233;;;8733:4;:10;8738:4;8733:10;;;;;;;;;;;;;;;;;;;;;;;;;8732:11;:24;;;;;8748:4;:8;8753:2;8748:8;;;;;;;;;;;;;;;;;;;;;;;;;8747:9;8732:24;8724:33;;;;;;8804:13;;;;;;;;;;;8796:21;;:4;:21;;;:55;;;;;8835:15;;;;;;;;;;;8821:30;;:2;:30;;;;8796:55;:83;;;;;8857:18;:22;8876:2;8857:22;;;;;;;;;;;;;;;;;;;;;;;;;8855:24;8796:83;:102;;;;;8883:15;;;;;;;;;;;8796:102;8792:452;;;8966:12;;8956:6;:22;;8948:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9061:14;;9051:6;9035:13;9045:2;9035:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9027:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9148:15;9133:8;:12;9142:2;9133:12;;;;;;;;;;;;;;;;:30;9125:39;;;;;;9217:10;9198:15;:30;;;;:::i;:::-;9183:8;:12;9192:2;9183:12;;;;;;;;;;;;;;;:45;;;;8792:452;9303:13;;;;;;;;;;;9297:19;;:2;:19;;;:55;;;;;9336:15;;;;;;;;;;;9320:32;;:4;:32;;;;9297:55;:85;;;;;9358:18;:24;9377:4;9358:24;;;;;;;;;;;;;;;;;;;;;;;;;9356:26;9297:85;9293:171;;;9415:1;9403:9;:13;;;;9447:1;9435:9;:13;;;;9293:171;9478:28;9509:24;9527:4;9509:9;:24::i;:::-;9478:55;;9553:6;;;;;;;;;;;9552:7;:32;;;;;9571:13;;;;;;;;;;;9563:21;;:4;:21;;;;9552:32;:47;;;;;9588:11;;;;;;;;;;;9552:47;9548:345;;;9620:38;9637:20;9620:16;:38::i;:::-;9677:26;9706:21;9677:50;;9770:1;9749:18;:22;9746:105;;;9796:35;9809:21;9796:12;:35::i;:::-;9746:105;9869:8;:6;:8::i;:::-;9601:292;9548:345;8709:1195;8671:1233;9918:30;9933:4;9938:2;9941:6;9918:14;:30::i;:::-;8314:1668;;;:::o;1935:190::-;2021:7;2054:1;2049;:6;;2057:12;2041:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2081:9;2097:1;2093;:5;;;;:::i;:::-;2081:17;;2116:1;2109:8;;;1935:190;;;;;:::o;2133:246::-;2191:7;2220:1;2215;:6;2211:47;;;2245:1;2238:8;;;;2211:47;2268:9;2284:1;2280;:5;;;;:::i;:::-;2268:17;;2313:1;2308;2304;:5;;;;:::i;:::-;:10;2296:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2370:1;2363:8;;;2133:246;;;;;:::o;2387:132::-;2445:7;2472:39;2476:1;2479;2472:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2465:46;;2387:132;;;;:::o;10961:96::-;11018:14;;;;;;;;;;;:23;;:31;11042:6;11018:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10961:96;:::o;7536:254::-;7603:7;7642;;7631;:18;;7623:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7707:19;7730:10;:8;:10::i;:::-;7707:33;;7758:24;7770:11;7758:7;:11;;:24;;;;:::i;:::-;7751:31;;;7536:254;;;:::o;9990:483::-;5667:4;5658:6;;:13;;;;;;;;;;;;;;;;;;10068:21:::1;10106:1;10092:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10068:40;;10137:4;10119;10124:1;10119:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10163:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10153:4;10158:1;10153:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10196:62;10213:4;10228:15;;;;;;;;;;;10246:11;10196:8;:62::i;:::-;10269:15;;;;;;;;;;;:66;;;10350:11;10376:1;10392:4;10419;10439:15;10269:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10057:416;5703:5:::0;5694:6;;:14;;;;;;;;;;;;;;;;;;9990:483;:::o;7798:88::-;7859:11;;7847:9;;:23;;;;:::i;:::-;7835:9;:35;;;;7798:88::o;12330:146::-;12424:44;12442:6;12450:9;12461:6;12424:17;:44::i;:::-;12330:146;;;:::o;2527:189::-;2613:7;2645:1;2641;:5;2648:12;2633:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2672:9;2688:1;2684;:5;;;;:::i;:::-;2672:17;;2707:1;2700:8;;;2527:189;;;;;:::o;15061:163::-;15102:7;15123:15;15140;15159:19;:17;:19::i;:::-;15122:56;;;;15196:20;15208:7;15196;:11;;:20;;;;:::i;:::-;15189:27;;;;15061:163;:::o;12484:488::-;12583:15;12600:23;12625:12;12639:23;12664:12;12678:13;12695:19;12706:7;12695:10;:19::i;:::-;12582:132;;;;;;;;;;;;12743:28;12763:7;12743;:15;12751:6;12743:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12725:7;:15;12733:6;12725:15;;;;;;;;;;;;;;;:46;;;;12803:39;12826:15;12803:7;:18;12811:9;12803:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12782:7;:18;12790:9;12782:18;;;;;;;;;;;;;;;:60;;;;12854:16;12864:5;12854:9;:16::i;:::-;12881:23;12893:4;12899;12881:11;:23::i;:::-;12937:9;12920:44;;12929:6;12920:44;;;12948:15;12920:44;;;;;;:::i;:::-;;;;;;;;12571:401;;;;;;12484:488;;;:::o;15232:262::-;15282:7;15291;15311:15;15329:7;;15311:25;;15347:15;4831:17;15347:25;;15403:20;4831:17;15403:7;;:11;;:20;;;;:::i;:::-;15393:7;:30;15389:61;;;15433:7;;4831:17;15425:25;;;;;;;;15389:61;15469:7;15478;15461:25;;;;;;15232:262;;;:::o;13809:471::-;13868:7;13877;13886;13895;13904;13913;13934:23;13959:12;13973:13;13990:42;14002:7;14011:9;;14022;;13990:11;:42::i;:::-;13933:99;;;;;;14043:19;14066:10;:8;:10::i;:::-;14043:33;;14088:15;14105:23;14130:12;14146:46;14158:7;14167:4;14173:5;14180:11;14146;:46::i;:::-;14087:105;;;;;;14211:7;14220:15;14237:4;14243:15;14260:4;14266:5;14203:69;;;;;;;;;;;;;;;;;;;13809:471;;;;;;;:::o;1791:136::-;1849:7;1876:43;1880:1;1883;1876:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1869:50;;1791:136;;;;:::o;1604:179::-;1662:7;1682:9;1698:1;1694;:5;;;;:::i;:::-;1682:17;;1723:1;1718;:6;;1710:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1774:1;1767:8;;;1604:179;;;;:::o;12980:212::-;13033:19;13056:10;:8;:10::i;:::-;13033:33;;13077:13;13093:22;13103:11;13093:5;:9;;:22;;;;:::i;:::-;13077:38;;13151:33;13178:5;13151:7;:22;13167:4;13151:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13126:7;:22;13142:4;13126:22;;;;;;;;;;;;;;;:58;;;;13022:170;;12980:212;:::o;13200:147::-;13278:17;13290:4;13278:7;;:11;;:17;;;;:::i;:::-;13268:7;:27;;;;13319:20;13334:4;13319:10;;:14;;:20;;;;:::i;:::-;13306:10;:33;;;;13200:147;;:::o;14288:351::-;14381:7;14390;14399;14419:12;14434:28;14458:3;14434:19;14446:6;14434:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14419:43;;14473:13;14489:29;14514:3;14489:20;14501:7;14489;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14473:45;;14529:23;14555:28;14577:5;14555:17;14567:4;14555:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14529:54;;14602:15;14619:4;14625:5;14594:37;;;;;;;;;14288:351;;;;;;;:::o;14647:409::-;14757:7;14766;14775;14795:15;14813:24;14825:11;14813:7;:11;;:24;;;;:::i;:::-;14795:42;;14848:12;14863:21;14872:11;14863:4;:8;;:21;;;;:::i;:::-;14848:36;;14895:13;14911:22;14921:11;14911:5;:9;;:22;;;;:::i;:::-;14895:38;;14944:23;14970:28;14992:5;14970:17;14982:4;14970:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14944:54;;15017:7;15026:15;15043:4;15009:39;;;;;;;;;;14647:409;;;;;;;;:::o;24:722: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:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:135::-;2059:5;2097:6;2084:20;2075:29;;2113:31;2138:5;2113:31;:::i;:::-;2015:135;;;;:::o;2156:329::-;2215:6;2264:2;2252:9;2243:7;2239:23;2235:32;2232:119;;;2270:79;;:::i;:::-;2232:119;2390:1;2415:53;2460:7;2451:6;2440:9;2436:22;2415:53;:::i;:::-;2405:63;;2361:117;2156:329;;;;:::o;2491:351::-;2561:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:119;;;2616:79;;:::i;:::-;2578:119;2736:1;2761:64;2817:7;2808:6;2797:9;2793:22;2761:64;:::i;:::-;2751:74;;2707:128;2491:351;;;;:::o;2848:474::-;2916:6;2924;2973:2;2961:9;2952:7;2948:23;2944:32;2941:119;;;2979:79;;:::i;:::-;2941:119;3099:1;3124:53;3169:7;3160:6;3149:9;3145:22;3124:53;:::i;:::-;3114:63;;3070:117;3226:2;3252:53;3297:7;3288:6;3277:9;3273:22;3252:53;:::i;:::-;3242:63;;3197:118;2848:474;;;;;:::o;3328:619::-;3405:6;3413;3421;3470:2;3458:9;3449:7;3445:23;3441:32;3438:119;;;3476:79;;:::i;:::-;3438:119;3596:1;3621:53;3666:7;3657:6;3646:9;3642:22;3621:53;:::i;:::-;3611:63;;3567:117;3723:2;3749:53;3794:7;3785:6;3774:9;3770:22;3749:53;:::i;:::-;3739:63;;3694:118;3851:2;3877:53;3922:7;3913:6;3902:9;3898:22;3877:53;:::i;:::-;3867:63;;3822:118;3328:619;;;;;:::o;3953:474::-;4021:6;4029;4078:2;4066:9;4057:7;4053:23;4049:32;4046:119;;;4084:79;;:::i;:::-;4046:119;4204:1;4229:53;4274:7;4265:6;4254:9;4250:22;4229:53;:::i;:::-;4219:63;;4175:117;4331:2;4357:53;4402:7;4393:6;4382:9;4378:22;4357:53;:::i;:::-;4347:63;;4302:118;3953:474;;;;;:::o;4433:539::-;4517:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:119;;;4572:79;;:::i;:::-;4534:119;4720:1;4709:9;4705:17;4692:31;4750:18;4742:6;4739:30;4736:117;;;4772:79;;:::i;:::-;4736:117;4877:78;4947:7;4938:6;4927:9;4923:22;4877:78;:::i;:::-;4867:88;;4663:302;4433:539;;;;:::o;4978:323::-;5034:6;5083:2;5071:9;5062:7;5058:23;5054:32;5051:119;;;5089:79;;:::i;:::-;5051:119;5209:1;5234:50;5276:7;5267:6;5256:9;5252:22;5234:50;:::i;:::-;5224:60;;5180:114;4978:323;;;;:::o;5307:345::-;5374:6;5423:2;5411:9;5402:7;5398:23;5394:32;5391:119;;;5429:79;;:::i;:::-;5391:119;5549:1;5574:61;5627:7;5618:6;5607:9;5603:22;5574:61;:::i;:::-;5564:71;;5520:125;5307:345;;;;:::o;5658:329::-;5717:6;5766:2;5754:9;5745:7;5741:23;5737:32;5734:119;;;5772:79;;:::i;:::-;5734:119;5892:1;5917:53;5962:7;5953:6;5942:9;5938:22;5917:53;:::i;:::-;5907:63;;5863:117;5658:329;;;;:::o;5993:663::-;6081:6;6089;6097;6146:2;6134:9;6125:7;6121:23;6117:32;6114:119;;;6152:79;;:::i;:::-;6114:119;6272:1;6297:64;6353:7;6344:6;6333:9;6329:22;6297:64;:::i;:::-;6287:74;;6243:128;6410:2;6436:64;6492:7;6483:6;6472:9;6468:22;6436:64;:::i;:::-;6426:74;;6381:129;6549:2;6575:64;6631:7;6622:6;6611:9;6607:22;6575:64;:::i;:::-;6565:74;;6520:129;5993:663;;;;;:::o;6662:325::-;6719:6;6768:2;6756:9;6747:7;6743:23;6739:32;6736:119;;;6774:79;;:::i;:::-;6736:119;6894:1;6919:51;6962:7;6953:6;6942:9;6938:22;6919:51;:::i;:::-;6909:61;;6865:115;6662:325;;;;:::o;6993:179::-;7062:10;7083:46;7125:3;7117:6;7083:46;:::i;:::-;7161:4;7156:3;7152:14;7138:28;;6993:179;;;;:::o;7178:108::-;7255:24;7273:5;7255:24;:::i;:::-;7250:3;7243:37;7178:108;;:::o;7292:118::-;7379:24;7397:5;7379:24;:::i;:::-;7374:3;7367:37;7292:118;;:::o;7446:732::-;7565:3;7594:54;7642:5;7594:54;:::i;:::-;7664:86;7743:6;7738:3;7664:86;:::i;:::-;7657:93;;7774:56;7824:5;7774:56;:::i;:::-;7853:7;7884:1;7869:284;7894:6;7891:1;7888:13;7869:284;;;7970:6;7964:13;7997:63;8056:3;8041:13;7997:63;:::i;:::-;7990:70;;8083:60;8136:6;8083:60;:::i;:::-;8073:70;;7929:224;7916:1;7913;7909:9;7904:14;;7869:284;;;7873:14;8169:3;8162:10;;7570:608;;;7446:732;;;;:::o;8184:109::-;8265:21;8280:5;8265:21;:::i;:::-;8260:3;8253:34;8184:109;;:::o;8299:147::-;8394:45;8433:5;8394:45;:::i;:::-;8389:3;8382:58;8299:147;;:::o;8452:364::-;8540:3;8568:39;8601:5;8568:39;:::i;:::-;8623:71;8687:6;8682:3;8623:71;:::i;:::-;8616:78;;8703:52;8748:6;8743:3;8736:4;8729:5;8725:16;8703:52;:::i;:::-;8780:29;8802:6;8780:29;:::i;:::-;8775:3;8771:39;8764:46;;8544:272;8452:364;;;;:::o;8822:366::-;8964:3;8985:67;9049:2;9044:3;8985:67;:::i;:::-;8978:74;;9061:93;9150:3;9061:93;:::i;:::-;9179:2;9174:3;9170:12;9163:19;;8822:366;;;:::o;9194:::-;9336:3;9357:67;9421:2;9416:3;9357:67;:::i;:::-;9350:74;;9433:93;9522:3;9433:93;:::i;:::-;9551:2;9546:3;9542:12;9535:19;;9194:366;;;:::o;9566:::-;9708:3;9729:67;9793:2;9788:3;9729:67;:::i;:::-;9722:74;;9805:93;9894:3;9805:93;:::i;:::-;9923:2;9918:3;9914:12;9907:19;;9566:366;;;:::o;9938:::-;10080:3;10101:67;10165:2;10160:3;10101:67;:::i;:::-;10094:74;;10177:93;10266:3;10177:93;:::i;:::-;10295:2;10290:3;10286:12;10279:19;;9938:366;;;:::o;10310:::-;10452:3;10473:67;10537:2;10532:3;10473:67;:::i;:::-;10466:74;;10549:93;10638:3;10549:93;:::i;:::-;10667:2;10662:3;10658:12;10651:19;;10310:366;;;:::o;10682:::-;10824:3;10845:67;10909:2;10904:3;10845:67;:::i;:::-;10838:74;;10921:93;11010:3;10921:93;:::i;:::-;11039:2;11034:3;11030:12;11023:19;;10682:366;;;:::o;11054:::-;11196:3;11217:67;11281:2;11276:3;11217:67;:::i;:::-;11210:74;;11293:93;11382:3;11293:93;:::i;:::-;11411:2;11406:3;11402:12;11395:19;;11054:366;;;:::o;11426:::-;11568:3;11589:67;11653:2;11648:3;11589:67;:::i;:::-;11582:74;;11665:93;11754:3;11665:93;:::i;:::-;11783:2;11778:3;11774:12;11767:19;;11426:366;;;:::o;11798:::-;11940:3;11961:67;12025:2;12020:3;11961:67;:::i;:::-;11954:74;;12037:93;12126:3;12037:93;:::i;:::-;12155:2;12150:3;12146:12;12139:19;;11798:366;;;:::o;12170:::-;12312:3;12333:67;12397:2;12392:3;12333:67;:::i;:::-;12326:74;;12409:93;12498:3;12409:93;:::i;:::-;12527:2;12522:3;12518:12;12511:19;;12170:366;;;:::o;12542:::-;12684:3;12705:67;12769:2;12764:3;12705:67;:::i;:::-;12698:74;;12781:93;12870:3;12781:93;:::i;:::-;12899:2;12894:3;12890:12;12883:19;;12542:366;;;:::o;12914:::-;13056:3;13077:67;13141:2;13136:3;13077:67;:::i;:::-;13070:74;;13153:93;13242:3;13153:93;:::i;:::-;13271:2;13266:3;13262:12;13255:19;;12914:366;;;:::o;13286:118::-;13373:24;13391:5;13373:24;:::i;:::-;13368:3;13361:37;13286:118;;:::o;13410:112::-;13493:22;13509:5;13493:22;:::i;:::-;13488:3;13481:35;13410:112;;:::o;13528:222::-;13621:4;13659:2;13648:9;13644:18;13636:26;;13672:71;13740:1;13729:9;13725:17;13716:6;13672:71;:::i;:::-;13528:222;;;;:::o;13756:332::-;13877:4;13915:2;13904:9;13900:18;13892:26;;13928:71;13996:1;13985:9;13981:17;13972:6;13928:71;:::i;:::-;14009:72;14077:2;14066:9;14062:18;14053:6;14009:72;:::i;:::-;13756:332;;;;;:::o;14094:::-;14215:4;14253:2;14242:9;14238:18;14230:26;;14266:71;14334:1;14323:9;14319:17;14310:6;14266:71;:::i;:::-;14347:72;14415:2;14404:9;14400:18;14391:6;14347:72;:::i;:::-;14094:332;;;;;:::o;14432:807::-;14681:4;14719:3;14708:9;14704:19;14696:27;;14733:71;14801:1;14790:9;14786:17;14777:6;14733:71;:::i;:::-;14814:72;14882:2;14871:9;14867:18;14858:6;14814:72;:::i;:::-;14896:80;14972:2;14961:9;14957:18;14948:6;14896:80;:::i;:::-;14986;15062:2;15051:9;15047:18;15038:6;14986:80;:::i;:::-;15076:73;15144:3;15133:9;15129:19;15120:6;15076:73;:::i;:::-;15159;15227:3;15216:9;15212:19;15203:6;15159:73;:::i;:::-;14432:807;;;;;;;;;:::o;15245:210::-;15332:4;15370:2;15359:9;15355:18;15347:26;;15383:65;15445:1;15434:9;15430:17;15421:6;15383:65;:::i;:::-;15245:210;;;;:::o;15461:313::-;15574:4;15612:2;15601:9;15597:18;15589:26;;15661:9;15655:4;15651:20;15647:1;15636:9;15632:17;15625:47;15689:78;15762:4;15753:6;15689:78;:::i;:::-;15681:86;;15461:313;;;;:::o;15780:419::-;15946:4;15984:2;15973:9;15969:18;15961:26;;16033:9;16027:4;16023:20;16019:1;16008:9;16004:17;15997:47;16061:131;16187:4;16061:131;:::i;:::-;16053:139;;15780:419;;;:::o;16205:::-;16371:4;16409:2;16398:9;16394:18;16386:26;;16458:9;16452:4;16448:20;16444:1;16433:9;16429:17;16422:47;16486:131;16612:4;16486:131;:::i;:::-;16478:139;;16205:419;;;:::o;16630:::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:131;17037:4;16911:131;:::i;:::-;16903:139;;16630:419;;;:::o;17055:::-;17221:4;17259:2;17248:9;17244:18;17236:26;;17308:9;17302:4;17298:20;17294:1;17283:9;17279:17;17272:47;17336:131;17462:4;17336:131;:::i;:::-;17328:139;;17055:419;;;:::o;17480:::-;17646:4;17684:2;17673:9;17669:18;17661:26;;17733:9;17727:4;17723:20;17719:1;17708:9;17704:17;17697:47;17761:131;17887:4;17761:131;:::i;:::-;17753:139;;17480:419;;;:::o;17905:::-;18071:4;18109:2;18098:9;18094:18;18086:26;;18158:9;18152:4;18148:20;18144:1;18133:9;18129:17;18122:47;18186:131;18312:4;18186:131;:::i;:::-;18178:139;;17905:419;;;:::o;18330:::-;18496:4;18534:2;18523:9;18519:18;18511:26;;18583:9;18577:4;18573:20;18569:1;18558:9;18554:17;18547:47;18611:131;18737:4;18611:131;:::i;:::-;18603:139;;18330:419;;;:::o;18755:::-;18921:4;18959:2;18948:9;18944:18;18936:26;;19008:9;19002:4;18998:20;18994:1;18983:9;18979:17;18972:47;19036:131;19162:4;19036:131;:::i;:::-;19028:139;;18755:419;;;:::o;19180:::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19433:9;19427:4;19423:20;19419:1;19408:9;19404:17;19397:47;19461:131;19587:4;19461:131;:::i;:::-;19453:139;;19180:419;;;:::o;19605:::-;19771:4;19809:2;19798:9;19794:18;19786:26;;19858:9;19852:4;19848:20;19844:1;19833:9;19829:17;19822:47;19886:131;20012:4;19886:131;:::i;:::-;19878:139;;19605:419;;;:::o;20030:::-;20196:4;20234:2;20223:9;20219:18;20211:26;;20283:9;20277:4;20273:20;20269:1;20258:9;20254:17;20247:47;20311:131;20437:4;20311:131;:::i;:::-;20303:139;;20030:419;;;:::o;20455:::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:222::-;20973:4;21011:2;21000:9;20996:18;20988:26;;21024:71;21092:1;21081:9;21077:17;21068:6;21024:71;:::i;:::-;20880:222;;;;:::o;21108:831::-;21371:4;21409:3;21398:9;21394:19;21386:27;;21423:71;21491:1;21480:9;21476:17;21467:6;21423:71;:::i;:::-;21504:80;21580:2;21569:9;21565:18;21556:6;21504:80;:::i;:::-;21631:9;21625:4;21621:20;21616:2;21605:9;21601:18;21594:48;21659:108;21762:4;21753:6;21659:108;:::i;:::-;21651:116;;21777:72;21845:2;21834:9;21830:18;21821:6;21777:72;:::i;:::-;21859:73;21927:3;21916:9;21912:19;21903:6;21859:73;:::i;:::-;21108:831;;;;;;;;:::o;21945:214::-;22034:4;22072:2;22061:9;22057:18;22049:26;;22085:67;22149:1;22138:9;22134:17;22125:6;22085:67;:::i;:::-;21945:214;;;;:::o;22165:129::-;22199:6;22226:20;;:::i;:::-;22216:30;;22255:33;22283:4;22275:6;22255:33;:::i;:::-;22165:129;;;:::o;22300:75::-;22333:6;22366:2;22360:9;22350:19;;22300:75;:::o;22381:311::-;22458:4;22548:18;22540:6;22537:30;22534:56;;;22570:18;;:::i;:::-;22534:56;22620:4;22612:6;22608:17;22600:25;;22680:4;22674;22670:15;22662:23;;22381:311;;;:::o;22698:132::-;22765:4;22788:3;22780:11;;22818:4;22813:3;22809:14;22801:22;;22698:132;;;:::o;22836:114::-;22903:6;22937:5;22931:12;22921:22;;22836:114;;;:::o;22956:99::-;23008:6;23042:5;23036:12;23026:22;;22956:99;;;:::o;23061:113::-;23131:4;23163;23158:3;23154:14;23146:22;;23061:113;;;:::o;23180:184::-;23279:11;23313:6;23308:3;23301:19;23353:4;23348:3;23344:14;23329:29;;23180:184;;;;:::o;23370:169::-;23454:11;23488:6;23483:3;23476:19;23528:4;23523:3;23519:14;23504:29;;23370:169;;;;:::o;23545:305::-;23585:3;23604:20;23622:1;23604:20;:::i;:::-;23599:25;;23638:20;23656:1;23638:20;:::i;:::-;23633:25;;23792:1;23724:66;23720:74;23717:1;23714:81;23711:107;;;23798:18;;:::i;:::-;23711:107;23842:1;23839;23835:9;23828:16;;23545:305;;;;:::o;23856:185::-;23896:1;23913:20;23931:1;23913:20;:::i;:::-;23908:25;;23947:20;23965:1;23947:20;:::i;:::-;23942:25;;23986:1;23976:35;;23991:18;;:::i;:::-;23976:35;24033:1;24030;24026:9;24021:14;;23856:185;;;;:::o;24047:348::-;24087:7;24110:20;24128:1;24110:20;:::i;:::-;24105:25;;24144:20;24162:1;24144:20;:::i;:::-;24139:25;;24332:1;24264:66;24260:74;24257:1;24254:81;24249:1;24242:9;24235:17;24231:105;24228:131;;;24339:18;;:::i;:::-;24228:131;24387:1;24384;24380:9;24369:20;;24047:348;;;;:::o;24401:191::-;24441:4;24461:20;24479:1;24461:20;:::i;:::-;24456:25;;24495:20;24513:1;24495:20;:::i;:::-;24490:25;;24534:1;24531;24528:8;24525:34;;;24539:18;;:::i;:::-;24525:34;24584:1;24581;24577:9;24569:17;;24401:191;;;;:::o;24598:96::-;24635:7;24664:24;24682:5;24664:24;:::i;:::-;24653:35;;24598:96;;;:::o;24700:90::-;24734:7;24777:5;24770:13;24763:21;24752:32;;24700:90;;;:::o;24796:126::-;24833:7;24873:42;24866:5;24862:54;24851:65;;24796:126;;;:::o;24928:77::-;24965:7;24994:5;24983:16;;24928:77;;;:::o;25011:86::-;25046:7;25086:4;25079:5;25075:16;25064:27;;25011:86;;;:::o;25103:121::-;25161:9;25194:24;25212:5;25194:24;:::i;:::-;25181:37;;25103:121;;;:::o;25230:307::-;25298:1;25308:113;25322:6;25319:1;25316:13;25308:113;;;25407:1;25402:3;25398:11;25392:18;25388:1;25383:3;25379:11;25372:39;25344:2;25341:1;25337:10;25332:15;;25308:113;;;25439:6;25436:1;25433:13;25430:101;;;25519:1;25510:6;25505:3;25501:16;25494:27;25430:101;25279:258;25230:307;;;:::o;25543:281::-;25626:27;25648:4;25626:27;:::i;:::-;25618:6;25614:40;25756:6;25744:10;25741:22;25720:18;25708:10;25705:34;25702:62;25699:88;;;25767:18;;:::i;:::-;25699:88;25807:10;25803:2;25796:22;25586:238;25543:281;;:::o;25830:233::-;25869:3;25892:24;25910:5;25892:24;:::i;:::-;25883:33;;25938:66;25931:5;25928:77;25925:103;;;26008:18;;:::i;:::-;25925:103;26055:1;26048:5;26044:13;26037:20;;25830:233;;;:::o;26069:180::-;26117:77;26114:1;26107:88;26214:4;26211:1;26204:15;26238:4;26235:1;26228:15;26255:180;26303:77;26300:1;26293:88;26400:4;26397:1;26390:15;26424:4;26421:1;26414:15;26441:180;26489:77;26486:1;26479:88;26586:4;26583:1;26576:15;26610:4;26607:1;26600:15;26627:180;26675:77;26672:1;26665:88;26772:4;26769:1;26762:15;26796:4;26793:1;26786:15;26813:117;26922:1;26919;26912:12;26936:117;27045:1;27042;27035:12;27059:117;27168:1;27165;27158:12;27182:117;27291:1;27288;27281:12;27305:102;27346:6;27397:2;27393:7;27388:2;27381:5;27377:14;27373:28;27363:38;;27305:102;;;:::o;27413:222::-;27553:34;27549:1;27541:6;27537:14;27530:58;27622:5;27617:2;27609:6;27605:15;27598:30;27413:222;:::o;27641:175::-;27781:27;27777:1;27769:6;27765:14;27758:51;27641:175;:::o;27822:229::-;27962:34;27958:1;27950:6;27946:14;27939:58;28031:12;28026:2;28018:6;28014:15;28007:37;27822:229;:::o;28057:221::-;28197:34;28193:1;28185:6;28181:14;28174:58;28266:4;28261:2;28253:6;28249:15;28242:29;28057:221;:::o;28284:177::-;28424:29;28420:1;28412:6;28408:14;28401:53;28284:177;:::o;28467:220::-;28607:34;28603:1;28595:6;28591:14;28584:58;28676:3;28671:2;28663:6;28659:15;28652:28;28467:220;:::o;28693:182::-;28833:34;28829:1;28821:6;28817:14;28810:58;28693:182;:::o;28881:228::-;29021:34;29017:1;29009:6;29005:14;28998:58;29090:11;29085:2;29077:6;29073:15;29066:36;28881:228;:::o;29115:224::-;29255:34;29251:1;29243:6;29239:14;29232:58;29324:7;29319:2;29311:6;29307:15;29300:32;29115:224;:::o;29345:176::-;29485:28;29481:1;29473:6;29469:14;29462:52;29345:176;:::o;29527:223::-;29667:34;29663:1;29655:6;29651:14;29644:58;29736:6;29731:2;29723:6;29719:15;29712:31;29527:223;:::o;29756:173::-;29896:25;29892:1;29884:6;29880:14;29873:49;29756:173;:::o;29935:122::-;30008:24;30026:5;30008:24;:::i;:::-;30001:5;29998:35;29988:63;;30047:1;30044;30037:12;29988:63;29935:122;:::o;30063:116::-;30133:21;30148:5;30133:21;:::i;:::-;30126:5;30123:32;30113:60;;30169:1;30166;30159:12;30113:60;30063:116;:::o;30185:122::-;30258:24;30276:5;30258:24;:::i;:::-;30251:5;30248:35;30238:63;;30297:1;30294;30287:12;30238:63;30185:122;:::o;30313:118::-;30384:22;30400:5;30384:22;:::i;:::-;30377:5;30374:33;30364:61;;30421:1;30418;30411:12;30364:61;30313:118;:::o

Swarm Source

ipfs://360cc143d9be7ab5baea7b9d7446f23546e6e65517ed3d5b3b7a26afcb837afb
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.