ETH Price: $3,419.80 (+1.13%)
Gas: 3 Gwei

Token

Vampirez World (Vampire)
 

Overview

Max Total Supply

10,000,000,000 Vampire

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
135,619,324.001393644 Vampire

Value
$0.00
0x4a4f365cb9422556d995ed3ad2c446d008350355
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:
VAMPIREWORLD

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-28
*/

// Telegram: https://t.me/VampirezWorld
//website: https://vampirez.world/


// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.10;

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner() {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

contract VAMPIREWORLD 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 _isBot;

    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e10 * 10**9;
    uint256 private _rTotal = (_MAX - (_MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = "Vampirez World";
    string private constant _symbol = "Vampire";
    
    uint private constant _decimals = 9;
    uint256 private _teamFee = 13;
    uint256 private _previousteamFee = _teamFee;

    address payable private _feeAddress;

    // Uniswap Pair
    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;

    bool private _initialized = false;
    bool private _noTaxMode = false;
    bool private _inSwap = false;
    bool private _tradingOpen = false;
    uint256 private _launchTime;
    uint256 private _initialLimitDuration;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    modifier handleFees(bool takeFee) {
        if (!takeFee) _removeAllFees();
        _;
        if (!takeFee) _restoreAllFees();
    }
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[payable(0x000000000000000000000000000000000000dEaD)] = 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 (uint) {
        return _decimals;
    }

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

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

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

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

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

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

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

    function _removeAllFees() private {
        require(_teamFee > 0);

        _previousteamFee = _teamFee;
        _teamFee = 0;
    }
    
    function _restoreAllFees() private {
        _teamFee = _previousteamFee;
    }

    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");
        require(!_isBot[from], "Your address has been marked as a bot, please contact staff to appeal your case.");
        
        bool takeFee = false;
        if (
            !_isExcludedFromFee[from] 
            && !_isExcludedFromFee[to] 
            && !_noTaxMode 
            && (from == _uniswapV2Pair || to == _uniswapV2Pair)
        ) {
            require(_tradingOpen, 'Trading has not yet been opened.');
            takeFee = true;

            if (from == _uniswapV2Pair && to != address(_uniswapV2Router) && _initialLimitDuration > block.timestamp) {
                uint walletBalance = balanceOf(address(to));
                require(amount.add(walletBalance) <= _tTotal.mul(5).div(100));
            }

            if (block.timestamp == _launchTime) _isBot[to] = true;

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!_inSwap && from != _uniswapV2Pair) {
                if (contractTokenBalance > 0) {
                    if (contractTokenBalance > balanceOf(_uniswapV2Pair).mul(20).div(100))
                        contractTokenBalance = balanceOf(_uniswapV2Pair).mul(20).div(100);
                    
                    _swapTokensForEth(contractTokenBalance);
                }
            }
        }
                
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private handleFees(takeFee) {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

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

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

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

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

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function initContract(address payable feeAddress) external onlyOwner() {
        require(!_initialized,"Contract has already been initialized");
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _uniswapV2Router = uniswapV2Router;

        _feeAddress = feeAddress;
        _isExcludedFromFee[_feeAddress] = true;

        _initialized = true;
    }

    function openTrading() external onlyOwner() {
        require(_initialized, "Contract must be initialized first");
        _tradingOpen = true;
        _launchTime = block.timestamp;
        _initialLimitDuration = _launchTime + (20 minutes);
    }

    function setFeeWallet(address payable feeWalletAddress) external onlyOwner() {
        _isExcludedFromFee[_feeAddress] = false;

        _feeAddress = feeWalletAddress;
        _isExcludedFromFee[_feeAddress] = true;
    }

    function excludeFromFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = false;
    }
    
    function setNoTaxMode(bool onoff) external onlyOwner() {
        _noTaxMode = onoff;
    }
    
    function setTeamFee(uint256 fee) external onlyOwner() {
        require(fee <= 15, "Don't over 15%");
        _teamFee = fee;
    }
    
    function setBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != _uniswapV2Pair && bots_[i] != address(_uniswapV2Router)) {
                _isBot[bots_[i]] = true;
            }
        }
    }
    
    function delBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            _isBot[bots_[i]] = false;
        }
    }
    
    function isBot(address ad) public view returns (bool) {
        return _isBot[ad];
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }
    
    function swapFeesManual() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        _swapTokensForEth(contractBalance);
    }
    
    function withdrawFees() external {
        uint256 contractETHBalance = address(this).balance;
        _feeAddress.transfer(contractETHBalance);
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddress","type":"address"}],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeWalletAddress","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFeesManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052678ac7230489e800006000196200001c91906200039c565b6000196200002b919062000403565b600655600d6008556008546009556000600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506000600c60166101000a81548160ff0219169083151502179055506000600c60176101000a81548160ff021916908315150217905550348015620000b257600080fd5b50620000d3620000c76200026e60201b60201c565b6200027660201b60201c565b60065460016000620000ea6200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200013e6200033a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001f96200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200026091906200044f565b60405180910390a36200046c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003a98262000363565b9150620003b68362000363565b925082620003c957620003c86200036d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620004108262000363565b91506200041d8362000363565b925082821015620004335762000432620003d4565b5b828203905092915050565b620004498162000363565b82525050565b60006020820190506200046660008301846200043e565b92915050565b613be5806200047c6000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612ae2565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612bac565b610697565b6040516101ec9190612c07565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612c31565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612c4c565b6106c5565b6040516102549190612c07565b60405180910390f35b34801561026957600080fd5b5061027261079e565b60405161027f9190612c31565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612de7565b6107a7565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612e30565b6108b8565b6040516102e59190612c07565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612e9b565b61090e565b005b34801561032357600080fd5b5061032c6109e5565b005b34801561033a57600080fd5b5061035560048036038101906103509190612ef4565b610a56565b005b34801561036357600080fd5b5061037e60048036038101906103799190612e30565b610aef565b60405161038b9190612c07565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612e30565b610b45565b6040516103c89190612c31565b60405180910390f35b3480156103dd57600080fd5b506103e6610b96565b005b3480156103f457600080fd5b506103fd610c1e565b60405161040a9190612f30565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612e9b565b610c47565b005b34801561044857600080fd5b50610451610dfb565b60405161045e9190612ae2565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612bac565b610e38565b60405161049b9190612c07565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612de7565b610e56565b005b3480156104d957600080fd5b506104e261104d565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612e9b565b611152565b005b34801561051957600080fd5b50610534600480360381019061052f9190612e9b565b611229565b005b34801561054257600080fd5b5061055d60048036038101906105589190612f4b565b6115c3565b60405161056a9190612c31565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612f8b565b61164a565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612e30565b611714565b005b6105cd61180c565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890613004565b60405180910390fd5b600061064c30610b45565b905061065781611814565b50565b60606040518060400160405280600e81526020017f56616d706972657a20576f726c64000000000000000000000000000000000000815250905090565b60006106ab6106a461180c565b8484611a8d565b6001905092915050565b6000678ac7230489e80000905090565b60006106d2848484611c58565b610793846106de61180c565b61078e85604051806060016040528060288152602001613b8860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061074461180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229d9092919063ffffffff16565b611a8d565b600190509392505050565b60006009905090565b6107af61180c565b73ffffffffffffffffffffffffffffffffffffffff166107cd610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90613004565b60405180910390fd5b60005b81518110156108b45760006005600084848151811061084857610847613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ac90613082565b915050610826565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61091661180c565b73ffffffffffffffffffffffffffffffffffffffff16610934610c1e565b73ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190613004565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a52573d6000803e3d6000fd5b5050565b610a5e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610a7c610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990613004565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b8f600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612301565b9050919050565b610b9e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610bbc610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990613004565b60405180910390fd5b610c1c600061236f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c4f61180c565b73ffffffffffffffffffffffffffffffffffffffff16610c6d610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613004565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600781526020017f56616d7069726500000000000000000000000000000000000000000000000000815250905090565b6000610e4c610e4561180c565b8484611c58565b6001905092915050565b610e5e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610e7c610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613004565b60405180910390fd5b60005b815181101561104957600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f2a57610f29613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610fbe5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f9d57610f9c613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561103657600160056000848481518110610fdc57610fdb613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061104190613082565b915050610ed5565b5050565b61105561180c565b73ffffffffffffffffffffffffffffffffffffffff16611073610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c090613004565b60405180910390fd5b600c60149054906101000a900460ff16611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f9061313d565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d819055506104b0600d5461114a919061315d565b600e81905550565b61115a61180c565b73ffffffffffffffffffffffffffffffffffffffff16611178610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590613004565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123161180c565b73ffffffffffffffffffffffffffffffffffffffff1661124f610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613004565b60405180910390fd5b600c60149054906101000a900460ff16156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613225565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061325a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611408919061325a565b6040518363ffffffff1660e01b8152600401611425929190613287565b6020604051808303816000875af1158015611444573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611468919061325a565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61165261180c565b73ffffffffffffffffffffffffffffffffffffffff16611670610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613004565b60405180910390fd5b600f81111561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906132fc565b60405180910390fd5b8060088190555050565b61171c61180c565b73ffffffffffffffffffffffffffffffffffffffff1661173a610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790613004565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f79061338e565b60405180910390fd5b6118098161236f565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561184c5761184b612ca4565b5b60405190808252806020026020018201604052801561187a5781602001602082028036833780820191505090505b509050308160008151811061189257611891613024565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195d919061325a565b8160018151811061197157611970613024565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119d830600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a8d565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a3c9594939291906134b1565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061357d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b649061360f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c4b9190612c31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90613733565b60405180910390fd5b60008111611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d72906137c5565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9061387d565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eae5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec75750600c60159054906101000a900460ff16155b8015611f785750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f775750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b1561228b57600c60179054906101000a900460ff16611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc3906138e9565b60405180910390fd5b60019050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561207b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612088575042600e54115b156120e957600061209884610b45565b90506120c960646120bb6005678ac7230489e8000061243390919063ffffffff16565b6124ae90919063ffffffff16565b6120dc82856124f890919063ffffffff16565b11156120e757600080fd5b505b600d5442141561214c576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061215730610b45565b9050600c60169054906101000a900460ff161580156121c45750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122895760008111156122885761222360646122156014612207600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45565b61243390919063ffffffff16565b6124ae90919063ffffffff16565b81111561227e5761227b606461226d601461225f600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45565b61243390919063ffffffff16565b6124ae90919063ffffffff16565b90505b61228781611814565b5b5b505b61229784848484612556565b50505050565b60008383111582906122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc9190612ae2565b60405180910390fd5b50600083856122f49190613909565b9050809150509392505050565b6000600654821115612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f906139af565b60405180910390fd5b600061235261272d565b905061236781846124ae90919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561244657600090506124a8565b6000828461245491906139cf565b90508284826124639190613a58565b146124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a90613afb565b60405180910390fd5b809150505b92915050565b60006124f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612758565b905092915050565b6000808284612507919061315d565b90508381101561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390613b67565b60405180910390fd5b8091505092915050565b8080612565576125646127bb565b5b600080600080612574876127dd565b93509350935093506125ce84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266383600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126af81612876565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161270c9190612c31565b60405180910390a3505050508061272657612725612933565b5b5050505050565b600080600061273a61293e565b9150915061275181836124ae90919063ffffffff16565b9250505090565b6000808311829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612ae2565b60405180910390fd5b50600083856127ae9190613a58565b9050809150509392505050565b6000600854116127ca57600080fd5b6008546009819055506000600881905550565b6000806000806000806127f28760085461299d565b91509150600061280061272d565b90506000806128108a85856129f0565b9150915081818686985098509850985050505050509193509193565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229d565b905092915050565b600061288061272d565b90506000612897828461243390919063ffffffff16565b90506128eb81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b600080600060065490506000678ac7230489e800009050612972678ac7230489e800006006546124ae90919063ffffffff16565b82101561299057600654678ac7230489e80000935093505050612999565b81819350935050505b9091565b60008060006129c860646129ba868861243390919063ffffffff16565b6124ae90919063ffffffff16565b905060006129df828761282c90919063ffffffff16565b905080829350935050509250929050565b6000806000612a08848761243390919063ffffffff16565b90506000612a1f858761243390919063ffffffff16565b90506000612a36828461282c90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a83578082015181840152602081019050612a68565b83811115612a92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab482612a49565b612abe8185612a54565b9350612ace818560208601612a65565b612ad781612a98565b840191505092915050565b60006020820190508181036000830152612afc8184612aa9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4382612b18565b9050919050565b612b5381612b38565b8114612b5e57600080fd5b50565b600081359050612b7081612b4a565b92915050565b6000819050919050565b612b8981612b76565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612b0e565b5b6000612bd185828601612b61565b9250506020612be285828601612b97565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b612c2b81612b76565b82525050565b6000602082019050612c466000830184612c22565b92915050565b600080600060608486031215612c6557612c64612b0e565b5b6000612c7386828701612b61565b9350506020612c8486828701612b61565b9250506040612c9586828701612b97565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612a98565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612b04565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600080fd5b6000612d63612d5e84612d1f565b612d04565b90508083825260208201905060208402830185811115612d8657612d85612d4b565b5b835b81811015612daf5780612d9b8882612b61565b845260208401935050602081019050612d88565b5050509392505050565b600082601f830112612dce57612dcd612c9f565b5b8135612dde848260208601612d50565b91505092915050565b600060208284031215612dfd57612dfc612b0e565b5b600082013567ffffffffffffffff811115612e1b57612e1a612b13565b5b612e2784828501612db9565b91505092915050565b600060208284031215612e4657612e45612b0e565b5b6000612e5484828501612b61565b91505092915050565b6000612e6882612b18565b9050919050565b612e7881612e5d565b8114612e8357600080fd5b50565b600081359050612e9581612e6f565b92915050565b600060208284031215612eb157612eb0612b0e565b5b6000612ebf84828501612e86565b91505092915050565b612ed181612bec565b8114612edc57600080fd5b50565b600081359050612eee81612ec8565b92915050565b600060208284031215612f0a57612f09612b0e565b5b6000612f1884828501612edf565b91505092915050565b612f2a81612b38565b82525050565b6000602082019050612f456000830184612f21565b92915050565b60008060408385031215612f6257612f61612b0e565b5b6000612f7085828601612b61565b9250506020612f8185828601612b61565b9150509250929050565b600060208284031215612fa157612fa0612b0e565b5b6000612faf84828501612b97565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fee602083612a54565b9150612ff982612fb8565b602082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308d82612b76565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c0576130bf613053565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000613127602283612a54565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b600061316882612b76565b915061317383612b76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131a8576131a7613053565b5b828201905092915050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b600061320f602583612a54565b915061321a826131b3565b604082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b60008151905061325481612b4a565b92915050565b6000602082840312156132705761326f612b0e565b5b600061327e84828501613245565b91505092915050565b600060408201905061329c6000830185612f21565b6132a96020830184612f21565b9392505050565b7f446f6e2774206f76657220313525000000000000000000000000000000000000600082015250565b60006132e6600e83612a54565b91506132f1826132b0565b602082019050919050565b60006020820190508181036000830152613315816132d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613378602683612a54565b91506133838261331c565b604082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b6000819050919050565b6000819050919050565b60006133dd6133d86133d3846133ae565b6133b8565b612b76565b9050919050565b6133ed816133c2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342881612b38565b82525050565b600061343a838361341f565b60208301905092915050565b6000602082019050919050565b600061345e826133f3565b61346881856133fe565b93506134738361340f565b8060005b838110156134a457815161348b888261342e565b975061349683613446565b925050600181019050613477565b5085935050505092915050565b600060a0820190506134c66000830188612c22565b6134d360208301876133e4565b81810360408301526134e58186613453565b90506134f46060830185612f21565b6135016080830184612c22565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613567602483612a54565b91506135728261350b565b604082019050919050565b600060208201905081810360008301526135968161355a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135f9602283612a54565b91506136048261359d565b604082019050919050565b60006020820190508181036000830152613628816135ec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061368b602583612a54565b91506136968261362f565b604082019050919050565b600060208201905081810360008301526136ba8161367e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371d602383612a54565b9150613728826136c1565b604082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137af602983612a54565b91506137ba82613753565b604082019050919050565b600060208201905081810360008301526137de816137a2565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b6000613867605083612a54565b9150613872826137e5565b606082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006138d3602083612a54565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b600061391482612b76565b915061391f83612b76565b92508282101561393257613931613053565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613999602a83612a54565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b60006139da82612b76565b91506139e583612b76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1e57613a1d613053565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a6382612b76565b9150613a6e83612b76565b925082613a7e57613a7d613a29565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae5602183612a54565b9150613af082613a89565b604082019050919050565b60006020820190508181036000830152613b1481613ad8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b51601b83612a54565b9150613b5c82613b1b565b602082019050919050565b60006020820190508181036000830152613b8081613b44565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb395b54bdcdbee3f1c68aed00a21d249174f0e886d069312b4a3a3999b0e24764736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612ae2565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612bac565b610697565b6040516101ec9190612c07565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612c31565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612c4c565b6106c5565b6040516102549190612c07565b60405180910390f35b34801561026957600080fd5b5061027261079e565b60405161027f9190612c31565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612de7565b6107a7565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612e30565b6108b8565b6040516102e59190612c07565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612e9b565b61090e565b005b34801561032357600080fd5b5061032c6109e5565b005b34801561033a57600080fd5b5061035560048036038101906103509190612ef4565b610a56565b005b34801561036357600080fd5b5061037e60048036038101906103799190612e30565b610aef565b60405161038b9190612c07565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612e30565b610b45565b6040516103c89190612c31565b60405180910390f35b3480156103dd57600080fd5b506103e6610b96565b005b3480156103f457600080fd5b506103fd610c1e565b60405161040a9190612f30565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612e9b565b610c47565b005b34801561044857600080fd5b50610451610dfb565b60405161045e9190612ae2565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612bac565b610e38565b60405161049b9190612c07565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612de7565b610e56565b005b3480156104d957600080fd5b506104e261104d565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612e9b565b611152565b005b34801561051957600080fd5b50610534600480360381019061052f9190612e9b565b611229565b005b34801561054257600080fd5b5061055d60048036038101906105589190612f4b565b6115c3565b60405161056a9190612c31565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612f8b565b61164a565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612e30565b611714565b005b6105cd61180c565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890613004565b60405180910390fd5b600061064c30610b45565b905061065781611814565b50565b60606040518060400160405280600e81526020017f56616d706972657a20576f726c64000000000000000000000000000000000000815250905090565b60006106ab6106a461180c565b8484611a8d565b6001905092915050565b6000678ac7230489e80000905090565b60006106d2848484611c58565b610793846106de61180c565b61078e85604051806060016040528060288152602001613b8860289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061074461180c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229d9092919063ffffffff16565b611a8d565b600190509392505050565b60006009905090565b6107af61180c565b73ffffffffffffffffffffffffffffffffffffffff166107cd610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90613004565b60405180910390fd5b60005b81518110156108b45760006005600084848151811061084857610847613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ac90613082565b915050610826565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61091661180c565b73ffffffffffffffffffffffffffffffffffffffff16610934610c1e565b73ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190613004565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a52573d6000803e3d6000fd5b5050565b610a5e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610a7c610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac990613004565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b8f600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612301565b9050919050565b610b9e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610bbc610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990613004565b60405180910390fd5b610c1c600061236f565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c4f61180c565b73ffffffffffffffffffffffffffffffffffffffff16610c6d610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cba90613004565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600781526020017f56616d7069726500000000000000000000000000000000000000000000000000815250905090565b6000610e4c610e4561180c565b8484611c58565b6001905092915050565b610e5e61180c565b73ffffffffffffffffffffffffffffffffffffffff16610e7c610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613004565b60405180910390fd5b60005b815181101561104957600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f2a57610f29613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610fbe5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f9d57610f9c613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561103657600160056000848481518110610fdc57610fdb613024565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061104190613082565b915050610ed5565b5050565b61105561180c565b73ffffffffffffffffffffffffffffffffffffffff16611073610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c090613004565b60405180910390fd5b600c60149054906101000a900460ff16611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f9061313d565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d819055506104b0600d5461114a919061315d565b600e81905550565b61115a61180c565b73ffffffffffffffffffffffffffffffffffffffff16611178610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590613004565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123161180c565b73ffffffffffffffffffffffffffffffffffffffff1661124f610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90613004565b60405180910390fd5b600c60149054906101000a900460ff16156112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613225565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611359573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137d919061325a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611408919061325a565b6040518363ffffffff1660e01b8152600401611425929190613287565b6020604051808303816000875af1158015611444573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611468919061325a565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61165261180c565b73ffffffffffffffffffffffffffffffffffffffff16611670610c1e565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613004565b60405180910390fd5b600f81111561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906132fc565b60405180910390fd5b8060088190555050565b61171c61180c565b73ffffffffffffffffffffffffffffffffffffffff1661173a610c1e565b73ffffffffffffffffffffffffffffffffffffffff1614611790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178790613004565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f79061338e565b60405180910390fd5b6118098161236f565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561184c5761184b612ca4565b5b60405190808252806020026020018201604052801561187a5781602001602082028036833780820191505090505b509050308160008151811061189257611891613024565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195d919061325a565b8160018151811061197157611970613024565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119d830600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a8d565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a3c9594939291906134b1565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af49061357d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b649061360f565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c4b9190612c31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbf906136a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90613733565b60405180910390fd5b60008111611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d72906137c5565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9061387d565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eae5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec75750600c60159054906101000a900460ff16155b8015611f785750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f775750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b1561228b57600c60179054906101000a900460ff16611fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc3906138e9565b60405180910390fd5b60019050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561207b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612088575042600e54115b156120e957600061209884610b45565b90506120c960646120bb6005678ac7230489e8000061243390919063ffffffff16565b6124ae90919063ffffffff16565b6120dc82856124f890919063ffffffff16565b11156120e757600080fd5b505b600d5442141561214c576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061215730610b45565b9050600c60169054906101000a900460ff161580156121c45750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122895760008111156122885761222360646122156014612207600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45565b61243390919063ffffffff16565b6124ae90919063ffffffff16565b81111561227e5761227b606461226d601461225f600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b45565b61243390919063ffffffff16565b6124ae90919063ffffffff16565b90505b61228781611814565b5b5b505b61229784848484612556565b50505050565b60008383111582906122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc9190612ae2565b60405180910390fd5b50600083856122f49190613909565b9050809150509392505050565b6000600654821115612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f906139af565b60405180910390fd5b600061235261272d565b905061236781846124ae90919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561244657600090506124a8565b6000828461245491906139cf565b90508284826124639190613a58565b146124a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249a90613afb565b60405180910390fd5b809150505b92915050565b60006124f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612758565b905092915050565b6000808284612507919061315d565b90508381101561254c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254390613b67565b60405180910390fd5b8091505092915050565b8080612565576125646127bb565b5b600080600080612574876127dd565b93509350935093506125ce84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266383600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f890919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126af81612876565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161270c9190612c31565b60405180910390a3505050508061272657612725612933565b5b5050505050565b600080600061273a61293e565b9150915061275181836124ae90919063ffffffff16565b9250505090565b6000808311829061279f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127969190612ae2565b60405180910390fd5b50600083856127ae9190613a58565b9050809150509392505050565b6000600854116127ca57600080fd5b6008546009819055506000600881905550565b6000806000806000806127f28760085461299d565b91509150600061280061272d565b90506000806128108a85856129f0565b9150915081818686985098509850985050505050509193509193565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229d565b905092915050565b600061288061272d565b90506000612897828461243390919063ffffffff16565b90506128eb81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f890919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b600080600060065490506000678ac7230489e800009050612972678ac7230489e800006006546124ae90919063ffffffff16565b82101561299057600654678ac7230489e80000935093505050612999565b81819350935050505b9091565b60008060006129c860646129ba868861243390919063ffffffff16565b6124ae90919063ffffffff16565b905060006129df828761282c90919063ffffffff16565b905080829350935050509250929050565b6000806000612a08848761243390919063ffffffff16565b90506000612a1f858761243390919063ffffffff16565b90506000612a36828461282c90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a83578082015181840152602081019050612a68565b83811115612a92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab482612a49565b612abe8185612a54565b9350612ace818560208601612a65565b612ad781612a98565b840191505092915050565b60006020820190508181036000830152612afc8184612aa9565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4382612b18565b9050919050565b612b5381612b38565b8114612b5e57600080fd5b50565b600081359050612b7081612b4a565b92915050565b6000819050919050565b612b8981612b76565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612b0e565b5b6000612bd185828601612b61565b9250506020612be285828601612b97565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b612c2b81612b76565b82525050565b6000602082019050612c466000830184612c22565b92915050565b600080600060608486031215612c6557612c64612b0e565b5b6000612c7386828701612b61565b9350506020612c8486828701612b61565b9250506040612c9586828701612b97565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdc82612a98565b810181811067ffffffffffffffff82111715612cfb57612cfa612ca4565b5b80604052505050565b6000612d0e612b04565b9050612d1a8282612cd3565b919050565b600067ffffffffffffffff821115612d3a57612d39612ca4565b5b602082029050602081019050919050565b600080fd5b6000612d63612d5e84612d1f565b612d04565b90508083825260208201905060208402830185811115612d8657612d85612d4b565b5b835b81811015612daf5780612d9b8882612b61565b845260208401935050602081019050612d88565b5050509392505050565b600082601f830112612dce57612dcd612c9f565b5b8135612dde848260208601612d50565b91505092915050565b600060208284031215612dfd57612dfc612b0e565b5b600082013567ffffffffffffffff811115612e1b57612e1a612b13565b5b612e2784828501612db9565b91505092915050565b600060208284031215612e4657612e45612b0e565b5b6000612e5484828501612b61565b91505092915050565b6000612e6882612b18565b9050919050565b612e7881612e5d565b8114612e8357600080fd5b50565b600081359050612e9581612e6f565b92915050565b600060208284031215612eb157612eb0612b0e565b5b6000612ebf84828501612e86565b91505092915050565b612ed181612bec565b8114612edc57600080fd5b50565b600081359050612eee81612ec8565b92915050565b600060208284031215612f0a57612f09612b0e565b5b6000612f1884828501612edf565b91505092915050565b612f2a81612b38565b82525050565b6000602082019050612f456000830184612f21565b92915050565b60008060408385031215612f6257612f61612b0e565b5b6000612f7085828601612b61565b9250506020612f8185828601612b61565b9150509250929050565b600060208284031215612fa157612fa0612b0e565b5b6000612faf84828501612b97565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fee602083612a54565b9150612ff982612fb8565b602082019050919050565b6000602082019050818103600083015261301d81612fe1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308d82612b76565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c0576130bf613053565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b6000613127602283612a54565b9150613132826130cb565b604082019050919050565b600060208201905081810360008301526131568161311a565b9050919050565b600061316882612b76565b915061317383612b76565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131a8576131a7613053565b5b828201905092915050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b600061320f602583612a54565b915061321a826131b3565b604082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b60008151905061325481612b4a565b92915050565b6000602082840312156132705761326f612b0e565b5b600061327e84828501613245565b91505092915050565b600060408201905061329c6000830185612f21565b6132a96020830184612f21565b9392505050565b7f446f6e2774206f76657220313525000000000000000000000000000000000000600082015250565b60006132e6600e83612a54565b91506132f1826132b0565b602082019050919050565b60006020820190508181036000830152613315816132d9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613378602683612a54565b91506133838261331c565b604082019050919050565b600060208201905081810360008301526133a78161336b565b9050919050565b6000819050919050565b6000819050919050565b60006133dd6133d86133d3846133ae565b6133b8565b612b76565b9050919050565b6133ed816133c2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342881612b38565b82525050565b600061343a838361341f565b60208301905092915050565b6000602082019050919050565b600061345e826133f3565b61346881856133fe565b93506134738361340f565b8060005b838110156134a457815161348b888261342e565b975061349683613446565b925050600181019050613477565b5085935050505092915050565b600060a0820190506134c66000830188612c22565b6134d360208301876133e4565b81810360408301526134e58186613453565b90506134f46060830185612f21565b6135016080830184612c22565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613567602483612a54565b91506135728261350b565b604082019050919050565b600060208201905081810360008301526135968161355a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135f9602283612a54565b91506136048261359d565b604082019050919050565b60006020820190508181036000830152613628816135ec565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061368b602583612a54565b91506136968261362f565b604082019050919050565b600060208201905081810360008301526136ba8161367e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061371d602383612a54565b9150613728826136c1565b604082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137af602983612a54565b91506137ba82613753565b604082019050919050565b600060208201905081810360008301526137de816137a2565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b6000613867605083612a54565b9150613872826137e5565b606082019050919050565b600060208201905081810360008301526138968161385a565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006138d3602083612a54565b91506138de8261389d565b602082019050919050565b60006020820190508181036000830152613902816138c6565b9050919050565b600061391482612b76565b915061391f83612b76565b92508282101561393257613931613053565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613999602a83612a54565b91506139a48261393d565b604082019050919050565b600060208201905081810360008301526139c88161398c565b9050919050565b60006139da82612b76565b91506139e583612b76565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a1e57613a1d613053565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a6382612b76565b9150613a6e83612b76565b925082613a7e57613a7d613a29565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ae5602183612a54565b9150613af082613a89565b604082019050919050565b60006020820190508181036000830152613b1481613ad8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b51601b83612a54565b9150613b5c82613b1b565b602082019050919050565b60006020820190508181036000830152613b8081613b44565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220eb395b54bdcdbee3f1c68aed00a21d249174f0e886d069312b4a3a3999b0e24764736f6c634300080a0033

Deployed Bytecode Sourcemap

3891:10841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14366:161;;;;;;;;;;;;;:::i;:::-;;5623:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6475:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5899:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5809:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13961:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14142:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13175:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14539:153;;;;;;;;;;;;;:::i;:::-;;13424:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14240:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6002:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2882:105;;;;;;;;;;;;;:::i;:::-;;2659:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12940:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5714:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6149:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13674:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12679:253;;;;;;;;;;;;;:::i;:::-;;13300:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12122:549;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6324:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13528:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2995:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14366:161;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14424:23:::1;14450:24;14468:4;14450:9;:24::i;:::-;14424:50;;14485:34;14503:15;14485:17;:34::i;:::-;14413:114;14366:161::o:0;5623:83::-;5660:13;5693:5;;;;;;;;;;;;;;;;;5686:12;;5623:83;:::o;6475:161::-;6550:4;6567:39;6576:12;:10;:12::i;:::-;6590:7;6599:6;6567:8;:39::i;:::-;6624:4;6617:11;;6475:161;;;;:::o;5899:95::-;5952:7;4358:12;5972:14;;5899:95;:::o;6644:313::-;6742:4;6759:36;6769:6;6777:9;6788:6;6759:9;:36::i;:::-;6806:121;6815:6;6823:12;:10;:12::i;:::-;6837:89;6875:6;6837:89;;;;;;;;;;;;;;;;;:11;:19;6849:6;6837:19;;;;;;;;;;;;;;;:33;6857:12;:10;:12::i;:::-;6837:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6806:8;:121::i;:::-;6945:4;6938:11;;6644:313;;;;;:::o;5809:82::-;5850:4;4619:1;5867:16;;5809:82;:::o;13961:169::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14037:6:::1;14032:91;14053:5;:12;14049:1;:16;14032:91;;;14106:5;14087:6;:16;14094:5;14100:1;14094:8;;;;;;;;:::i;:::-;;;;;;;;14087:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;14067:3;;;;;:::i;:::-;;;;14032:91;;;;13961:169:::0;:::o;14142:90::-;14190:4;14214:6;:10;14221:2;14214:10;;;;;;;;;;;;;;;;;;;;;;;;;14207:17;;14142:90;;;:::o;13175:113::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13276:4:::1;13251:18;:22;13270:2;13251:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13175:113:::0;:::o;14539:153::-;14583:26;14612:21;14583:50;;14644:11;;;;;;;;;;;:20;;:40;14665:18;14644:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14572:120;14539:153::o;13424:92::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13503:5:::1;13490:10;;:18;;;;;;;;;;;;;;;;;;13424:92:::0;:::o;14240:114::-;14300:4;14324:18;:22;14343:2;14324:22;;;;;;;;;;;;;;;;;;;;;;;;;14317:29;;14240:114;;;:::o;6002:139::-;6068:7;6095:38;6116:7;:16;6124:7;6116:16;;;;;;;;;;;;;;;;6095:20;:38::i;:::-;6088:45;;6002:139;;;:::o;2882:105::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2949:30:::1;2976:1;2949:18;:30::i;:::-;2882:105::o:0;2659:87::-;2705:7;2732:6;;;;;;;;;;;2725:13;;2659:87;:::o;12940:227::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13062:5:::1;13028:18;:31;13047:11;;;;;;;;;;;13028:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13094:16;13080:11;;:30;;;;;;;;;;;;;;;;;;13155:4;13121:18;:31;13140:11;;;;;;;;;;;13121:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12940:227:::0;:::o;5714:87::-;5753:13;5786:7;;;;;;;;;;;;;;;;;5779:14;;5714:87;:::o;6149:167::-;6227:4;6244:42;6254:12;:10;:12::i;:::-;6268:9;6279:6;6244:9;:42::i;:::-;6304:4;6297:11;;6149:167;;;;:::o;13674:275::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13750:6:::1;13745:197;13766:5;:12;13762:1;:16;13745:197;;;13816:14;;;;;;;;;;;13804:26;;:5;13810:1;13804:8;;;;;;;;:::i;:::-;;;;;;;;:26;;;;:67;;;;;13854:16;;;;;;;;;;;13834:37;;:5;13840:1;13834:8;;;;;;;;:::i;:::-;;;;;;;;:37;;;;13804:67;13800:131;;;13911:4;13892:6;:16;13899:5;13905:1;13899:8;;;;;;;;:::i;:::-;;;;;;;;13892:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13800:131;13780:3;;;;;:::i;:::-;;;;13745:197;;;;13674:275:::0;:::o;12679:253::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12742:12:::1;;;;;;;;;;;12734:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12819:4;12804:12;;:19;;;;;;;;;;;;;;;;;;12848:15;12834:11;:29;;;;12913:10;12898:11;;:26;;;;:::i;:::-;12874:21;:50;;;;12679:253::o:0;13300:112::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13399:5:::1;13374:18;:22;13393:2;13374:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13300:112:::0;:::o;12122:549::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12213:12:::1;;;;;;;;;;;12212:13;12204:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12277:34;12333:42;12277:99;;12422:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12404:55;;;12468:4;12475:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12404:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12387:14;;:111;;;;;;;;;;;;;;;;;;12530:15;12511:16;;:34;;;;;;;;;;;;;;;;;;12572:10;12558:11;;:24;;;;;;;;;;;;;;;;;;12627:4;12593:18;:31;12612:11;;;;;;;;;;;12593:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12659:4;12644:12;;:19;;;;;;;;;;;;;;;;;;12193:478;12122:549:::0;:::o;6324:143::-;6405:7;6432:11;:18;6444:5;6432:18;;;;;;;;;;;;;;;:27;6451:7;6432:27;;;;;;;;;;;;;;;;6425:34;;6324:143;;;;:::o;13528:134::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13608:2:::1;13601:3;:9;;13593:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;13651:3;13640:8;:14;;;;13528:134:::0;:::o;2995:203::-;2805:12;:10;:12::i;:::-;2794:23;;:7;:5;:7::i;:::-;:23;;;2786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3106:1:::1;3086:22;;:8;:22;;;;3078:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3162:28;3181:8;3162:18;:28::i;:::-;2995:203:::0;:::o;182:98::-;235:7;262:10;255:17;;182:98;:::o;9499:489::-;5146:4;5136:7;;:14;;;;;;;;;;;;;;;;;;9580:21:::1;9618:1;9604:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9580:40;;9649:4;9631;9636:1;9631:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9675:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9665:4;9670:1;9665:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;9709:63;9726:4;9741:16;;;;;;;;;;;9760:11;9709:8;:63::i;:::-;9783:16;;;;;;;;;;;:67;;;9865:11;9891:1;9907:4;9934;9954:15;9783:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9569:419;5183:5:::0;5173:7;;:15;;;;;;;;;;;;;;;;;;9499:489;:::o;7466:337::-;7576:1;7559:19;;:5;:19;;;;7551:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7657:1;7638:21;;:7;:21;;;;7630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7741:6;7711:11;:18;7723:5;7711:18;;;;;;;;;;;;;;;:27;7730:7;7711:27;;;;;;;;;;;;;;;:36;;;;7779:7;7763:32;;7772:5;7763:32;;;7788:6;7763:32;;;;;;:::i;:::-;;;;;;;;7466:337;;;:::o;7815:1676::-;7919:1;7903:18;;:4;:18;;;;7895:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:1;7982:16;;:2;:16;;;;7974:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8066:1;8057:6;:10;8049:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8133:6;:12;8140:4;8133:12;;;;;;;;;;;;;;;;;;;;;;;;;8132:13;8124:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;8251:12;8301:18;:24;8320:4;8301:24;;;;;;;;;;;;;;;;;;;;;;;;;8300:25;:66;;;;;8344:18;:22;8363:2;8344:22;;;;;;;;;;;;;;;;;;;;;;;;;8343:23;8300:66;:95;;;;;8385:10;;;;;;;;;;;8384:11;8300:95;:161;;;;;8422:14;;;;;;;;;;;8414:22;;:4;:22;;;:46;;;;8446:14;;;;;;;;;;;8440:20;;:2;:20;;;8414:46;8300:161;8282:1132;;;8496:12;;;;;;;;;;;8488:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8570:4;8560:14;;8603;;;;;;;;;;;8595:22;;:4;:22;;;:57;;;;;8635:16;;;;;;;;;;;8621:31;;:2;:31;;;;8595:57;:100;;;;;8680:15;8656:21;;:39;8595:100;8591:264;;;8716:18;8737:22;8755:2;8737:9;:22::i;:::-;8716:43;;8815:23;8834:3;8815:14;8827:1;4358:12;8815:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;8786:25;8797:13;8786:6;:10;;:25;;;;:::i;:::-;:52;;8778:61;;;;;;8697:158;8591:264;8894:11;;8875:15;:30;8871:53;;;8920:4;8907:6;:10;8914:2;8907:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;8871:53;8941:28;8972:24;8990:4;8972:9;:24::i;:::-;8941:55;;9016:7;;;;;;;;;;;9015:8;:34;;;;;9035:14;;;;;;;;;;;9027:22;;:4;:22;;;;9015:34;9011:392;;;9097:1;9074:20;:24;9070:318;;;9150:42;9188:3;9150:33;9180:2;9150:25;9160:14;;;;;;;;;;;9150:9;:25::i;:::-;:29;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;9127:20;:65;9123:161;;;9242:42;9280:3;9242:33;9272:2;9242:25;9252:14;;;;;;;;;;;9242:9;:25::i;:::-;:29;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;9219:65;;9123:161;9329:39;9347:20;9329:17;:39::i;:::-;9070:318;9011:392;8473:941;8282:1132;9442:41;9457:4;9463:2;9467:6;9475:7;9442:14;:41::i;:::-;7884:1607;7815:1676;;;:::o;1319:190::-;1405:7;1438:1;1433;:6;;1441:12;1425:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1465:9;1481:1;1477;:5;;;;:::i;:::-;1465:17;;1500:1;1493:8;;;1319:190;;;;;:::o;6965:255::-;7033:7;7072;;7061;:18;;7053:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7137:19;7160:10;:8;:10::i;:::-;7137:33;;7188:24;7200:11;7188:7;:11;;:24;;;;:::i;:::-;7181:31;;;6965:255;;;:::o;3206:191::-;3280:16;3299:6;;;;;;;;;;;3280:25;;3325:8;3316:6;;:17;;;;;;;;;;;;;;;;;;3380:8;3349:40;;3370:8;3349:40;;;;;;;;;;;;3269:128;3206:191;:::o;1517:246::-;1575:7;1604:1;1599;:6;1595:47;;;1629:1;1622:8;;;;1595:47;1652:9;1668:1;1664;:5;;;;:::i;:::-;1652:17;;1697:1;1692;1688;:5;;;;:::i;:::-;:10;1680:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1754:1;1747:8;;;1517:246;;;;;:::o;1771:132::-;1829:7;1856:39;1860:1;1863;1856:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1849:46;;1771:132;;;;:::o;988:179::-;1046:7;1066:9;1082:1;1078;:5;;;;:::i;:::-;1066:17;;1107:1;1102;:6;;1094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1158:1;1151:8;;;988:179;;;;:::o;9996:457::-;10105:7;5254;5249:30;;5263:16;:14;:16::i;:::-;5249:30;10126:15:::1;10143:23:::0;10168::::1;10193:13:::0;10210:19:::1;10221:7;10210:10;:19::i;:::-;10125:104;;;;;;;;10258:28;10278:7;10258;:15;10266:6;10258:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10240:7;:15;10248:6;10240:15;;;;;;;;;;;;;;;:46;;;;10318:39;10341:15;10318:7;:18;10326:9;10318:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10297:7;:18;10305:9;10297:18;;;;;;;;;;;;;;;:60;;;;10369:16;10379:5;10369:9;:16::i;:::-;10418:9;10401:44;;10410:6;10401:44;;;10429:15;10401:44;;;;;;:::i;:::-;;;;;;;;10114:339;;;;5307:7:::0;5302:31;;5316:17;:15;:17::i;:::-;5302:31;9996:457;;;;;:::o;11128:164::-;11170:7;11191:15;11208;11227:19;:17;:19::i;:::-;11190:56;;;;11264:20;11276:7;11264;:11;;:20;;;;:::i;:::-;11257:27;;;;11128:164;:::o;1911:189::-;1997:7;2029:1;2025;:5;2032:12;2017:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2056:9;2072:1;2068;:5;;;;:::i;:::-;2056:17;;2091:1;2084:8;;;1911:189;;;;;:::o;7228:137::-;7292:1;7281:8;;:12;7273:21;;;;;;7326:8;;7307:16;:27;;;;7356:1;7345:8;:12;;;;7228:137::o;10461:395::-;10520:7;10529;10538;10547;10568:23;10593:13;10610:30;10622:7;10631:8;;10610:11;:30::i;:::-;10567:73;;;;10651:19;10674:10;:8;:10::i;:::-;10651:33;;10696:15;10713:23;10740:40;10752:7;10761:5;10768:11;10740;:40::i;:::-;10695:85;;;;10799:7;10808:15;10825;10842:5;10791:57;;;;;;;;;;;;;10461:395;;;;;:::o;1175:136::-;1233:7;1260:43;1264:1;1267;1260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1253:50;;1175:136;;;;:::o;11896:214::-;11949:19;11972:10;:8;:10::i;:::-;11949:33;;11993:13;12009:22;12019:11;12009:5;:9;;:22;;;;:::i;:::-;11993:38;;12069:33;12096:5;12069:7;:22;12085:4;12069:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12044:7;:22;12060:4;12044:22;;;;;;;;;;;;;;;:58;;;;11938:172;;11896:214;:::o;7377:81::-;7434:16;;7423:8;:27;;;;7377:81::o;11300:257::-;11351:7;11360;11380:15;11398:7;;11380:25;;11416:15;4358:12;11416:25;;11466:20;4358:12;11466:7;;:11;;:20;;;;:::i;:::-;11456:7;:30;11452:61;;;11496:7;;4358:12;11488:25;;;;;;;;11452:61;11532:7;11541;11524:25;;;;;;11300:257;;;:::o;10864:256::-;10941:7;10950;10970:13;10986:29;11011:3;10986:20;10998:7;10986;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10970:45;;11026:23;11052:18;11064:5;11052:7;:11;;:18;;;;:::i;:::-;11026:44;;11089:15;11106:5;11081:31;;;;;;10864:256;;;;;:::o;11565:323::-;11661:7;11670;11690:15;11708:24;11720:11;11708:7;:11;;:24;;;;:::i;:::-;11690:42;;11743:13;11759:22;11769:11;11759:5;:9;;:22;;;;:::i;:::-;11743:38;;11792:23;11818:18;11830:5;11818:7;:11;;:18;;;;:::i;:::-;11792:44;;11855:7;11864:15;11847:33;;;;;;;11565:323;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:117::-;4580:1;4577;4570:12;4594:180;4642:77;4639:1;4632:88;4739:4;4736:1;4729:15;4763:4;4760:1;4753:15;4780:281;4863:27;4885:4;4863:27;:::i;:::-;4855:6;4851:40;4993:6;4981:10;4978:22;4957:18;4945:10;4942:34;4939:62;4936:88;;;5004:18;;:::i;:::-;4936:88;5044:10;5040:2;5033:22;4823:238;4780:281;;:::o;5067:129::-;5101:6;5128:20;;:::i;:::-;5118:30;;5157:33;5185:4;5177:6;5157:33;:::i;:::-;5067:129;;;:::o;5202:311::-;5279:4;5369:18;5361:6;5358:30;5355:56;;;5391:18;;:::i;:::-;5355:56;5441:4;5433:6;5429:17;5421:25;;5501:4;5495;5491:15;5483:23;;5202:311;;;:::o;5519:117::-;5628:1;5625;5618:12;5659:710;5755:5;5780:81;5796:64;5853:6;5796:64;:::i;:::-;5780:81;:::i;:::-;5771:90;;5881:5;5910:6;5903:5;5896:21;5944:4;5937:5;5933:16;5926:23;;5997:4;5989:6;5985:17;5977:6;5973:30;6026:3;6018:6;6015:15;6012:122;;;6045:79;;:::i;:::-;6012:122;6160:6;6143:220;6177:6;6172:3;6169:15;6143:220;;;6252:3;6281:37;6314:3;6302:10;6281:37;:::i;:::-;6276:3;6269:50;6348:4;6343:3;6339:14;6332:21;;6219:144;6203:4;6198:3;6194:14;6187:21;;6143:220;;;6147:21;5761:608;;5659:710;;;;;:::o;6392:370::-;6463:5;6512:3;6505:4;6497:6;6493:17;6489:27;6479:122;;6520:79;;:::i;:::-;6479:122;6637:6;6624:20;6662:94;6752:3;6744:6;6737:4;6729:6;6725:17;6662:94;:::i;:::-;6653:103;;6469:293;6392:370;;;;:::o;6768:539::-;6852:6;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7055:1;7044:9;7040:17;7027:31;7085:18;7077:6;7074:30;7071:117;;;7107:79;;:::i;:::-;7071:117;7212:78;7282:7;7273:6;7262:9;7258:22;7212:78;:::i;:::-;7202:88;;6998:302;6768:539;;;;:::o;7313:329::-;7372:6;7421:2;7409:9;7400:7;7396:23;7392:32;7389:119;;;7427:79;;:::i;:::-;7389:119;7547:1;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7518:117;7313:329;;;;:::o;7648:104::-;7693:7;7722:24;7740:5;7722:24;:::i;:::-;7711:35;;7648:104;;;:::o;7758:138::-;7839:32;7865:5;7839:32;:::i;:::-;7832:5;7829:43;7819:71;;7886:1;7883;7876:12;7819:71;7758:138;:::o;7902:155::-;7956:5;7994:6;7981:20;7972:29;;8010:41;8045:5;8010:41;:::i;:::-;7902:155;;;;:::o;8063:345::-;8130:6;8179:2;8167:9;8158:7;8154:23;8150:32;8147:119;;;8185:79;;:::i;:::-;8147:119;8305:1;8330:61;8383:7;8374:6;8363:9;8359:22;8330:61;:::i;:::-;8320:71;;8276:125;8063:345;;;;:::o;8414:116::-;8484:21;8499:5;8484:21;:::i;:::-;8477:5;8474:32;8464:60;;8520:1;8517;8510:12;8464:60;8414:116;:::o;8536:133::-;8579:5;8617:6;8604:20;8595:29;;8633:30;8657:5;8633:30;:::i;:::-;8536:133;;;;:::o;8675:323::-;8731:6;8780:2;8768:9;8759:7;8755:23;8751:32;8748:119;;;8786:79;;:::i;:::-;8748:119;8906:1;8931:50;8973:7;8964:6;8953:9;8949:22;8931:50;:::i;:::-;8921:60;;8877:114;8675:323;;;;:::o;9004:118::-;9091:24;9109:5;9091:24;:::i;:::-;9086:3;9079:37;9004:118;;:::o;9128:222::-;9221:4;9259:2;9248:9;9244:18;9236:26;;9272:71;9340:1;9329:9;9325:17;9316:6;9272:71;:::i;:::-;9128:222;;;;:::o;9356:474::-;9424:6;9432;9481:2;9469:9;9460:7;9456:23;9452:32;9449:119;;;9487:79;;:::i;:::-;9449:119;9607:1;9632:53;9677:7;9668:6;9657:9;9653:22;9632:53;:::i;:::-;9622:63;;9578:117;9734:2;9760:53;9805:7;9796:6;9785:9;9781:22;9760:53;:::i;:::-;9750:63;;9705:118;9356:474;;;;;:::o;9836:329::-;9895:6;9944:2;9932:9;9923:7;9919:23;9915:32;9912:119;;;9950:79;;:::i;:::-;9912:119;10070:1;10095:53;10140:7;10131:6;10120:9;10116:22;10095:53;:::i;:::-;10085:63;;10041:117;9836:329;;;;:::o;10171:182::-;10311:34;10307:1;10299:6;10295:14;10288:58;10171:182;:::o;10359:366::-;10501:3;10522:67;10586:2;10581:3;10522:67;:::i;:::-;10515:74;;10598:93;10687:3;10598:93;:::i;:::-;10716:2;10711:3;10707:12;10700:19;;10359:366;;;:::o;10731:419::-;10897:4;10935:2;10924:9;10920:18;10912:26;;10984:9;10978:4;10974:20;10970:1;10959:9;10955:17;10948:47;11012:131;11138:4;11012:131;:::i;:::-;11004:139;;10731:419;;;:::o;11156:180::-;11204:77;11201:1;11194:88;11301:4;11298:1;11291:15;11325:4;11322:1;11315:15;11342:180;11390:77;11387:1;11380:88;11487:4;11484:1;11477:15;11511:4;11508:1;11501:15;11528:233;11567:3;11590:24;11608:5;11590:24;:::i;:::-;11581:33;;11636:66;11629:5;11626:77;11623:103;;;11706:18;;:::i;:::-;11623:103;11753:1;11746:5;11742:13;11735:20;;11528:233;;;:::o;11767:221::-;11907:34;11903:1;11895:6;11891:14;11884:58;11976:4;11971:2;11963:6;11959:15;11952:29;11767:221;:::o;11994:366::-;12136:3;12157:67;12221:2;12216:3;12157:67;:::i;:::-;12150:74;;12233:93;12322:3;12233:93;:::i;:::-;12351:2;12346:3;12342:12;12335:19;;11994:366;;;:::o;12366:419::-;12532:4;12570:2;12559:9;12555:18;12547:26;;12619:9;12613:4;12609:20;12605:1;12594:9;12590:17;12583:47;12647:131;12773:4;12647:131;:::i;:::-;12639:139;;12366:419;;;:::o;12791:305::-;12831:3;12850:20;12868:1;12850:20;:::i;:::-;12845:25;;12884:20;12902:1;12884:20;:::i;:::-;12879:25;;13038:1;12970:66;12966:74;12963:1;12960:81;12957:107;;;13044:18;;:::i;:::-;12957:107;13088:1;13085;13081:9;13074:16;;12791:305;;;;:::o;13102:224::-;13242:34;13238:1;13230:6;13226:14;13219:58;13311:7;13306:2;13298:6;13294:15;13287:32;13102:224;:::o;13332:366::-;13474:3;13495:67;13559:2;13554:3;13495:67;:::i;:::-;13488:74;;13571:93;13660:3;13571:93;:::i;:::-;13689:2;13684:3;13680:12;13673:19;;13332:366;;;:::o;13704:419::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13957:9;13951:4;13947:20;13943:1;13932:9;13928:17;13921:47;13985:131;14111:4;13985:131;:::i;:::-;13977:139;;13704:419;;;:::o;14129:143::-;14186:5;14217:6;14211:13;14202:22;;14233:33;14260:5;14233:33;:::i;:::-;14129:143;;;;:::o;14278:351::-;14348:6;14397:2;14385:9;14376:7;14372:23;14368:32;14365:119;;;14403:79;;:::i;:::-;14365:119;14523:1;14548:64;14604:7;14595:6;14584:9;14580:22;14548:64;:::i;:::-;14538:74;;14494:128;14278:351;;;;:::o;14635:332::-;14756:4;14794:2;14783:9;14779:18;14771:26;;14807:71;14875:1;14864:9;14860:17;14851:6;14807:71;:::i;:::-;14888:72;14956:2;14945:9;14941:18;14932:6;14888:72;:::i;:::-;14635:332;;;;;:::o;14973:164::-;15113:16;15109:1;15101:6;15097:14;15090:40;14973:164;:::o;15143:366::-;15285:3;15306:67;15370:2;15365:3;15306:67;:::i;:::-;15299:74;;15382:93;15471:3;15382:93;:::i;:::-;15500:2;15495:3;15491:12;15484:19;;15143:366;;;:::o;15515:419::-;15681:4;15719:2;15708:9;15704:18;15696:26;;15768:9;15762:4;15758:20;15754:1;15743:9;15739:17;15732:47;15796:131;15922:4;15796:131;:::i;:::-;15788:139;;15515:419;;;:::o;15940:225::-;16080:34;16076:1;16068:6;16064:14;16057:58;16149:8;16144:2;16136:6;16132:15;16125:33;15940:225;:::o;16171:366::-;16313:3;16334:67;16398:2;16393:3;16334:67;:::i;:::-;16327:74;;16410:93;16499:3;16410:93;:::i;:::-;16528:2;16523:3;16519:12;16512:19;;16171:366;;;:::o;16543:419::-;16709:4;16747:2;16736:9;16732:18;16724:26;;16796:9;16790:4;16786:20;16782:1;16771:9;16767:17;16760:47;16824:131;16950:4;16824:131;:::i;:::-;16816:139;;16543:419;;;:::o;16968:85::-;17013:7;17042:5;17031:16;;16968:85;;;:::o;17059:60::-;17087:3;17108:5;17101:12;;17059:60;;;:::o;17125:158::-;17183:9;17216:61;17234:42;17243:32;17269:5;17243:32;:::i;:::-;17234:42;:::i;:::-;17216:61;:::i;:::-;17203:74;;17125:158;;;:::o;17289:147::-;17384:45;17423:5;17384:45;:::i;:::-;17379:3;17372:58;17289:147;;:::o;17442:114::-;17509:6;17543:5;17537:12;17527:22;;17442:114;;;:::o;17562:184::-;17661:11;17695:6;17690:3;17683:19;17735:4;17730:3;17726:14;17711:29;;17562:184;;;;:::o;17752:132::-;17819:4;17842:3;17834:11;;17872:4;17867:3;17863:14;17855:22;;17752:132;;;:::o;17890:108::-;17967:24;17985:5;17967:24;:::i;:::-;17962:3;17955:37;17890:108;;:::o;18004:179::-;18073:10;18094:46;18136:3;18128:6;18094:46;:::i;:::-;18172:4;18167:3;18163:14;18149:28;;18004:179;;;;:::o;18189:113::-;18259:4;18291;18286:3;18282:14;18274:22;;18189:113;;;:::o;18338:732::-;18457:3;18486:54;18534:5;18486:54;:::i;:::-;18556:86;18635:6;18630:3;18556:86;:::i;:::-;18549:93;;18666:56;18716:5;18666:56;:::i;:::-;18745:7;18776:1;18761:284;18786:6;18783:1;18780:13;18761:284;;;18862:6;18856:13;18889:63;18948:3;18933:13;18889:63;:::i;:::-;18882:70;;18975:60;19028:6;18975:60;:::i;:::-;18965:70;;18821:224;18808:1;18805;18801:9;18796:14;;18761:284;;;18765:14;19061:3;19054:10;;18462:608;;;18338:732;;;;:::o;19076:831::-;19339:4;19377:3;19366:9;19362:19;19354:27;;19391:71;19459:1;19448:9;19444:17;19435:6;19391:71;:::i;:::-;19472:80;19548:2;19537:9;19533:18;19524:6;19472:80;:::i;:::-;19599:9;19593:4;19589:20;19584:2;19573:9;19569:18;19562:48;19627:108;19730:4;19721:6;19627:108;:::i;:::-;19619:116;;19745:72;19813:2;19802:9;19798:18;19789:6;19745:72;:::i;:::-;19827:73;19895:3;19884:9;19880:19;19871:6;19827:73;:::i;:::-;19076:831;;;;;;;;:::o;19913:223::-;20053:34;20049:1;20041:6;20037:14;20030:58;20122:6;20117:2;20109:6;20105:15;20098:31;19913:223;:::o;20142:366::-;20284:3;20305:67;20369:2;20364:3;20305:67;:::i;:::-;20298:74;;20381:93;20470:3;20381:93;:::i;:::-;20499:2;20494:3;20490:12;20483:19;;20142:366;;;:::o;20514:419::-;20680:4;20718:2;20707:9;20703:18;20695:26;;20767:9;20761:4;20757:20;20753:1;20742:9;20738:17;20731:47;20795:131;20921:4;20795:131;:::i;:::-;20787:139;;20514:419;;;:::o;20939:221::-;21079:34;21075:1;21067:6;21063:14;21056:58;21148:4;21143:2;21135:6;21131:15;21124:29;20939:221;:::o;21166:366::-;21308:3;21329:67;21393:2;21388:3;21329:67;:::i;:::-;21322:74;;21405:93;21494:3;21405:93;:::i;:::-;21523:2;21518:3;21514:12;21507:19;;21166:366;;;:::o;21538:419::-;21704:4;21742:2;21731:9;21727:18;21719:26;;21791:9;21785:4;21781:20;21777:1;21766:9;21762:17;21755:47;21819:131;21945:4;21819:131;:::i;:::-;21811:139;;21538:419;;;:::o;21963:224::-;22103:34;22099:1;22091:6;22087:14;22080:58;22172:7;22167:2;22159:6;22155:15;22148:32;21963:224;:::o;22193:366::-;22335:3;22356:67;22420:2;22415:3;22356:67;:::i;:::-;22349:74;;22432:93;22521:3;22432:93;:::i;:::-;22550:2;22545:3;22541:12;22534:19;;22193:366;;;:::o;22565:419::-;22731:4;22769:2;22758:9;22754:18;22746:26;;22818:9;22812:4;22808:20;22804:1;22793:9;22789:17;22782:47;22846:131;22972:4;22846:131;:::i;:::-;22838:139;;22565:419;;;:::o;22990:222::-;23130:34;23126:1;23118:6;23114:14;23107:58;23199:5;23194:2;23186:6;23182:15;23175:30;22990:222;:::o;23218:366::-;23360:3;23381:67;23445:2;23440:3;23381:67;:::i;:::-;23374:74;;23457:93;23546:3;23457:93;:::i;:::-;23575:2;23570:3;23566:12;23559:19;;23218:366;;;:::o;23590:419::-;23756:4;23794:2;23783:9;23779:18;23771:26;;23843:9;23837:4;23833:20;23829:1;23818:9;23814:17;23807:47;23871:131;23997:4;23871:131;:::i;:::-;23863:139;;23590:419;;;:::o;24015:228::-;24155:34;24151:1;24143:6;24139:14;24132:58;24224:11;24219:2;24211:6;24207:15;24200:36;24015:228;:::o;24249:366::-;24391:3;24412:67;24476:2;24471:3;24412:67;:::i;:::-;24405:74;;24488:93;24577:3;24488:93;:::i;:::-;24606:2;24601:3;24597:12;24590:19;;24249:366;;;:::o;24621:419::-;24787:4;24825:2;24814:9;24810:18;24802:26;;24874:9;24868:4;24864:20;24860:1;24849:9;24845:17;24838:47;24902:131;25028:4;24902:131;:::i;:::-;24894:139;;24621:419;;;:::o;25046:304::-;25186:34;25182:1;25174:6;25170:14;25163:58;25255:34;25250:2;25242:6;25238:15;25231:59;25324:18;25319:2;25311:6;25307:15;25300:43;25046:304;:::o;25356:366::-;25498:3;25519:67;25583:2;25578:3;25519:67;:::i;:::-;25512:74;;25595:93;25684:3;25595:93;:::i;:::-;25713:2;25708:3;25704:12;25697:19;;25356:366;;;:::o;25728:419::-;25894:4;25932:2;25921:9;25917:18;25909:26;;25981:9;25975:4;25971:20;25967:1;25956:9;25952:17;25945:47;26009:131;26135:4;26009:131;:::i;:::-;26001:139;;25728:419;;;:::o;26153:182::-;26293:34;26289:1;26281:6;26277:14;26270:58;26153:182;:::o;26341:366::-;26483:3;26504:67;26568:2;26563:3;26504:67;:::i;:::-;26497:74;;26580:93;26669:3;26580:93;:::i;:::-;26698:2;26693:3;26689:12;26682:19;;26341:366;;;:::o;26713:419::-;26879:4;26917:2;26906:9;26902:18;26894:26;;26966:9;26960:4;26956:20;26952:1;26941:9;26937:17;26930:47;26994:131;27120:4;26994:131;:::i;:::-;26986:139;;26713:419;;;:::o;27138:191::-;27178:4;27198:20;27216:1;27198:20;:::i;:::-;27193:25;;27232:20;27250:1;27232:20;:::i;:::-;27227:25;;27271:1;27268;27265:8;27262:34;;;27276:18;;:::i;:::-;27262:34;27321:1;27318;27314:9;27306:17;;27138:191;;;;:::o;27335:229::-;27475:34;27471:1;27463:6;27459:14;27452:58;27544:12;27539:2;27531:6;27527:15;27520:37;27335:229;:::o;27570:366::-;27712:3;27733:67;27797:2;27792:3;27733:67;:::i;:::-;27726:74;;27809:93;27898:3;27809:93;:::i;:::-;27927:2;27922:3;27918:12;27911:19;;27570:366;;;:::o;27942:419::-;28108:4;28146:2;28135:9;28131:18;28123:26;;28195:9;28189:4;28185:20;28181:1;28170:9;28166:17;28159:47;28223:131;28349:4;28223:131;:::i;:::-;28215:139;;27942:419;;;:::o;28367:348::-;28407:7;28430:20;28448:1;28430:20;:::i;:::-;28425:25;;28464:20;28482:1;28464:20;:::i;:::-;28459:25;;28652:1;28584:66;28580:74;28577:1;28574:81;28569:1;28562:9;28555:17;28551:105;28548:131;;;28659:18;;:::i;:::-;28548:131;28707:1;28704;28700:9;28689:20;;28367:348;;;;:::o;28721:180::-;28769:77;28766:1;28759:88;28866:4;28863:1;28856:15;28890:4;28887:1;28880:15;28907:185;28947:1;28964:20;28982:1;28964:20;:::i;:::-;28959:25;;28998:20;29016:1;28998:20;:::i;:::-;28993:25;;29037:1;29027:35;;29042:18;;:::i;:::-;29027:35;29084:1;29081;29077:9;29072:14;;28907:185;;;;:::o;29098:220::-;29238:34;29234:1;29226:6;29222:14;29215:58;29307:3;29302:2;29294:6;29290:15;29283:28;29098:220;:::o;29324:366::-;29466:3;29487:67;29551:2;29546:3;29487:67;:::i;:::-;29480:74;;29563:93;29652:3;29563:93;:::i;:::-;29681:2;29676:3;29672:12;29665:19;;29324:366;;;:::o;29696:419::-;29862:4;29900:2;29889:9;29885:18;29877:26;;29949:9;29943:4;29939:20;29935:1;29924:9;29920:17;29913:47;29977:131;30103:4;29977:131;:::i;:::-;29969:139;;29696:419;;;:::o;30121:177::-;30261:29;30257:1;30249:6;30245:14;30238:53;30121:177;:::o;30304:366::-;30446:3;30467:67;30531:2;30526:3;30467:67;:::i;:::-;30460:74;;30543:93;30632:3;30543:93;:::i;:::-;30661:2;30656:3;30652:12;30645:19;;30304:366;;;:::o;30676:419::-;30842:4;30880:2;30869:9;30865:18;30857:26;;30929:9;30923:4;30919:20;30915:1;30904:9;30900:17;30893:47;30957:131;31083:4;30957:131;:::i;:::-;30949:139;;30676:419;;;:::o

Swarm Source

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