ETH Price: $3,355.47 (-2.33%)
Gas: 7.94 Gwei

Token

Pepetools (PEPETOOLS)
 

Overview

Max Total Supply

100,000,000 PEPETOOLS

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
923,704.094960575 PEPETOOLS

Value
$0.00
0x6d0f32a80f26f72d57591e8af889a261dabe5cf0
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:
PEPETOOLS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-28
*/

/**
Telegram: https://t.me/pepetoolsportal
Twitter: https://twitter.com/pepetoolserc
Website: https://www.pepetools.vip
Medium: https://medium.com/@pepetools                                                                                                                                                                                                                                         
*/


pragma solidity ^0.8.7;
// SPDX-License-Identifier: UNLICENSED
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

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

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

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

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

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

}  

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

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

contract PEPETOOLS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
        mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet;
    
    string private constant _name = "Pepetools";
    string private constant _symbol = "PEPETOOLS";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;
    uint256 private _multiplier = 1;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

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

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

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

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

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

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

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

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

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

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

    function setFee() private {
        _feeAddr2 = _feeAddr2 * _multiplier;        
    }
    
    function restoreAllFee() private {
        _feeAddr2 = 5;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        _feeAddr1 = 0;
        _feeAddr2 = 5;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            // Buy
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            // Sell
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 0;
                _feeAddr2 = 5;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                setFee();
            }
        }
		
        _tokenTransfer(from,to,amount);

        restoreAllFee;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

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

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

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

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = _tTotal.mul(2).div(100);
        _maxWalletSize = _tTotal.mul(3).div(100);
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function addsnipd(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delSnipa(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}
    
    function manualswap() external {
        require(_msgSender() == _feeAddrWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addsnipd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"changeMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delSnipa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"mult","type":"uint8"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c919062000466565b6000196200002b919062000421565b600a556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff02191690831515021790555067016345785d8a000060115567016345785d8a00006012556001601355348015620000a957600080fd5b506000620000bc620003c260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350738a8b390335e0aa66ab9fcaf6e19cb95c680d1518600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5460026000620001c6620003c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200021a620003ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200034d620003c260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620003b4919062000404565b60405180910390a3620004fc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003fe816200045c565b82525050565b60006020820190506200041b6000830184620003f3565b92915050565b60006200042e826200045c565b91506200043b836200045c565b9250828210156200045157620004506200049e565b5b828203905092915050565b6000819050919050565b600062000473826200045c565b915062000480836200045c565b925082620004935762000492620004cd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6138f3806200050c6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146103b1578063b87f137a146103ee578063c3c8cd8014610417578063c9567bf91461042e578063ca7a523e14610445578063dd62ed3e1461046e57610135565b806370a08231146102f0578063715018a61461032d578063751039fc146103445780638da5cb5b1461035b57806395d89b411461038657610135565b8063418956b3116100f2578063418956b3146102355780635932ead11461025e578063677daa57146102875780636b571d29146102b05780636fc3eaec146102d957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ab565b60405161015c9190612f61565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612a3b565b6104e8565b6040516101999190612f46565b60405180910390f35b3480156101ae57600080fd5b506101b7610506565b6040516101c49190613103565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef91906129e8565b610516565b6040516102019190612f46565b60405180910390f35b34801561021657600080fd5b5061021f6105ef565b60405161022c9190613178565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061294e565b6105f8565b005b34801561026a57600080fd5b5061028560048036038101906102809190612ac4565b6106e8565b005b34801561029357600080fd5b506102ae60048036038101906102a99190612b1e565b61079a565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190612b9e565b610873565b005b3480156102e557600080fd5b506102ee610915565b005b3480156102fc57600080fd5b506103176004803603810190610312919061294e565b610987565b6040516103249190613103565b60405180910390f35b34801561033957600080fd5b506103426109d8565b005b34801561035057600080fd5b50610359610b2b565b005b34801561036757600080fd5b50610370610be0565b60405161037d9190612e78565b60405180910390f35b34801561039257600080fd5b5061039b610c09565b6040516103a89190612f61565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612a3b565b610c46565b6040516103e59190612f46565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612b1e565b610c64565b005b34801561042357600080fd5b5061042c610d3d565b005b34801561043a57600080fd5b50610443610db7565b005b34801561045157600080fd5b5061046c60048036038101906104679190612a7b565b61136d565b005b34801561047a57600080fd5b50610495600480360381019061049091906129a8565b611497565b6040516104a29190613103565b60405180910390f35b60606040518060400160405280600981526020017f50657065746f6f6c730000000000000000000000000000000000000000000000815250905090565b60006104fc6104f561151e565b8484611526565b6001905092915050565b600067016345785d8a0000905090565b60006105238484846116f1565b6105e48461052f61151e565b6105df8560405180606001604052806028815260200161389660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059561151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8c9092919063ffffffff16565b611526565b600190509392505050565b60006009905090565b61060061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490613043565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106f061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490613043565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b6107a261151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690613043565b60405180910390fd5b6000811161083c57600080fd5b61086a606461085c8367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60118190555050565b61087b61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90613043565b60405180910390fd5b8060ff1660138190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095661151e565b73ffffffffffffffffffffffffffffffffffffffff161461097657600080fd5b600047905061098481611eb5565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f21565b9050919050565b6109e061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490613043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b3361151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613043565b60405180910390fd5b67016345785d8a000060118190555067016345785d8a0000601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f50455045544f4f4c530000000000000000000000000000000000000000000000815250905090565b6000610c5a610c5361151e565b84846116f1565b6001905092915050565b610c6c61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090613043565b60405180910390fd5b60008111610d0657600080fd5b610d346064610d268367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7e61151e565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e57600080fd5b6000610da930610987565b9050610db481611f8f565b50565b610dbf61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613043565b60405180910390fd5b601060149054906101000a900460ff1615610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906130e3565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f2b30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a0000611526565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7157600080fd5b505afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa9919061297b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100b57600080fd5b505afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061297b565b6040518363ffffffff1660e01b8152600401611060929190612e93565b602060405180830381600087803b15801561107a57600080fd5b505af115801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b2919061297b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061113b30610987565b600080611146610be0565b426040518863ffffffff1660e01b815260040161116896959493929190612ee5565b6060604051808303818588803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111ba9190612b4b565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506112226064611214600267016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6011819055506112576064611249600367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6012819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611317929190612ebc565b602060405180830381600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113699190612af1565b5050565b61137561151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613043565b60405180910390fd5b60005b815181101561149357600160066000848481518110611427576114266134c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061148b90613419565b915050611405565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906130c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612fe3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190613103565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890612f83565b60405180910390fd5b60008111611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613063565b60405180910390fd5b6000600c819055506005600d8190555061182c610be0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561189a575061186a610be0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119435750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61194c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119f75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a4d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a655750601060179054906101000a900460ff165b15611ba357601154811115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612fa3565b60405180910390fd5b60125481611abc84610987565b611ac69190613239565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130a3565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b5257600080fd5b601e42611b5f9190613239565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c4e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cba576000600c819055506005600d819055505b6000611cc530610987565b9050601060159054906101000a900460ff16158015611d325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4a5750601060169054906101000a900460ff165b15611d7a57611d5881611f8f565b60004790506000811115611d7057611d6f47611eb5565b5b611d78612217565b505b505b611d8783838361222f565b505050565b6000838311158290611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb9190612f61565b60405180910390fd5b5060008385611de3919061331a565b9050809150509392505050565b600080831415611e035760009050611e65565b60008284611e1191906132c0565b9050828482611e20919061328f565b14611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790613023565b60405180910390fd5b809150505b92915050565b6000611ead83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223f565b905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1d573d6000803e3d6000fd5b5050565b6000600a54821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90612fc3565b60405180910390fd5b6000611f726122a2565b9050611f878184611e6b90919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fc757611fc66134ef565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b509050308160008151811061200d5761200c6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120af57600080fd5b505afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e7919061297b565b816001815181106120fb576120fa6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611526565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c695949392919061311e565b600060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b601354600d5461222791906132c0565b600d81905550565b61223a8383836122cd565b505050565b60008083118290612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9190612f61565b60405180910390fd5b5060008385612295919061328f565b9050809150509392505050565b60008060006122af612498565b915091506122c68183611e6b90919063ffffffff16565b9250505090565b6000806000806000806122df876124f7565b95509550955095509550955061233d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241e81612607565b61242884836126c4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124859190613103565b60405180910390a3505050505050505050565b6000806000600a549050600067016345785d8a000090506124cc67016345785d8a0000600a54611e6b90919063ffffffff16565b8210156124ea57600a5467016345785d8a00009350935050506124f3565b81819350935050505b9091565b60008060008060008060008060006125148a600c54600d546126fe565b92509250925060006125246122a2565b905060008060006125378e878787612794565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8c565b905092915050565b60008082846125b89190613239565b9050838110156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490613003565b60405180910390fd5b8091505092915050565b60006126116122a2565b905060006126288284611df090919063ffffffff16565b905061267c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d982600a5461255f90919063ffffffff16565b600a819055506126f481600b546125a990919063ffffffff16565b600b819055505050565b60008060008061272a606461271c888a611df090919063ffffffff16565b611e6b90919063ffffffff16565b905060006127546064612746888b611df090919063ffffffff16565b611e6b90919063ffffffff16565b9050600061277d8261276f858c61255f90919063ffffffff16565b61255f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127ad8589611df090919063ffffffff16565b905060006127c48689611df090919063ffffffff16565b905060006127db8789611df090919063ffffffff16565b90506000612804826127f6858761255f90919063ffffffff16565b61255f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061283061282b846131b8565b613193565b9050808382526020820190508285602086028201111561285357612852613523565b5b60005b858110156128835781612869888261288d565b845260208401935060208301925050600181019050612856565b5050509392505050565b60008135905061289c81613839565b92915050565b6000815190506128b181613839565b92915050565b600082601f8301126128cc576128cb61351e565b5b81356128dc84826020860161281d565b91505092915050565b6000813590506128f481613850565b92915050565b60008151905061290981613850565b92915050565b60008135905061291e81613867565b92915050565b60008151905061293381613867565b92915050565b6000813590506129488161387e565b92915050565b6000602082840312156129645761296361352d565b5b60006129728482850161288d565b91505092915050565b6000602082840312156129915761299061352d565b5b600061299f848285016128a2565b91505092915050565b600080604083850312156129bf576129be61352d565b5b60006129cd8582860161288d565b92505060206129de8582860161288d565b9150509250929050565b600080600060608486031215612a0157612a0061352d565b5b6000612a0f8682870161288d565b9350506020612a208682870161288d565b9250506040612a318682870161290f565b9150509250925092565b60008060408385031215612a5257612a5161352d565b5b6000612a608582860161288d565b9250506020612a718582860161290f565b9150509250929050565b600060208284031215612a9157612a9061352d565b5b600082013567ffffffffffffffff811115612aaf57612aae613528565b5b612abb848285016128b7565b91505092915050565b600060208284031215612ada57612ad961352d565b5b6000612ae8848285016128e5565b91505092915050565b600060208284031215612b0757612b0661352d565b5b6000612b15848285016128fa565b91505092915050565b600060208284031215612b3457612b3361352d565b5b6000612b428482850161290f565b91505092915050565b600080600060608486031215612b6457612b6361352d565b5b6000612b7286828701612924565b9350506020612b8386828701612924565b9250506040612b9486828701612924565b9150509250925092565b600060208284031215612bb457612bb361352d565b5b6000612bc284828501612939565b91505092915050565b6000612bd78383612be3565b60208301905092915050565b612bec8161334e565b82525050565b612bfb8161334e565b82525050565b6000612c0c826131f4565b612c168185613217565b9350612c21836131e4565b8060005b83811015612c52578151612c398882612bcb565b9750612c448361320a565b925050600181019050612c25565b5085935050505092915050565b612c6881613360565b82525050565b612c77816133a3565b82525050565b6000612c88826131ff565b612c928185613228565b9350612ca28185602086016133b5565b612cab81613532565b840191505092915050565b6000612cc3602383613228565b9150612cce82613543565b604082019050919050565b6000612ce6601983613228565b9150612cf182613592565b602082019050919050565b6000612d09602a83613228565b9150612d14826135bb565b604082019050919050565b6000612d2c602283613228565b9150612d378261360a565b604082019050919050565b6000612d4f601b83613228565b9150612d5a82613659565b602082019050919050565b6000612d72602183613228565b9150612d7d82613682565b604082019050919050565b6000612d95602083613228565b9150612da0826136d1565b602082019050919050565b6000612db8602983613228565b9150612dc3826136fa565b604082019050919050565b6000612ddb602583613228565b9150612de682613749565b604082019050919050565b6000612dfe601a83613228565b9150612e0982613798565b602082019050919050565b6000612e21602483613228565b9150612e2c826137c1565b604082019050919050565b6000612e44601783613228565b9150612e4f82613810565b602082019050919050565b612e638161338c565b82525050565b612e7281613396565b82525050565b6000602082019050612e8d6000830184612bf2565b92915050565b6000604082019050612ea86000830185612bf2565b612eb56020830184612bf2565b9392505050565b6000604082019050612ed16000830185612bf2565b612ede6020830184612e5a565b9392505050565b600060c082019050612efa6000830189612bf2565b612f076020830188612e5a565b612f146040830187612c6e565b612f216060830186612c6e565b612f2e6080830185612bf2565b612f3b60a0830184612e5a565b979650505050505050565b6000602082019050612f5b6000830184612c5f565b92915050565b60006020820190508181036000830152612f7b8184612c7d565b905092915050565b60006020820190508181036000830152612f9c81612cb6565b9050919050565b60006020820190508181036000830152612fbc81612cd9565b9050919050565b60006020820190508181036000830152612fdc81612cfc565b9050919050565b60006020820190508181036000830152612ffc81612d1f565b9050919050565b6000602082019050818103600083015261301c81612d42565b9050919050565b6000602082019050818103600083015261303c81612d65565b9050919050565b6000602082019050818103600083015261305c81612d88565b9050919050565b6000602082019050818103600083015261307c81612dab565b9050919050565b6000602082019050818103600083015261309c81612dce565b9050919050565b600060208201905081810360008301526130bc81612df1565b9050919050565b600060208201905081810360008301526130dc81612e14565b9050919050565b600060208201905081810360008301526130fc81612e37565b9050919050565b60006020820190506131186000830184612e5a565b92915050565b600060a0820190506131336000830188612e5a565b6131406020830187612c6e565b81810360408301526131528186612c01565b90506131616060830185612bf2565b61316e6080830184612e5a565b9695505050505050565b600060208201905061318d6000830184612e69565b92915050565b600061319d6131ae565b90506131a982826133e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156131d3576131d26134ef565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132448261338c565b915061324f8361338c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328457613283613462565b5b828201905092915050565b600061329a8261338c565b91506132a58361338c565b9250826132b5576132b4613491565b5b828204905092915050565b60006132cb8261338c565b91506132d68361338c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561330f5761330e613462565b5b828202905092915050565b60006133258261338c565b91506133308361338c565b92508282101561334357613342613462565b5b828203905092915050565b60006133598261336c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133ae8261338c565b9050919050565b60005b838110156133d35780820151818401526020810190506133b8565b838111156133e2576000848401525b50505050565b6133f182613532565b810181811067ffffffffffffffff821117156134105761340f6134ef565b5b80604052505050565b60006134248261338c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345757613456613462565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6138428161334e565b811461384d57600080fd5b50565b61385981613360565b811461386457600080fd5b50565b6138708161338c565b811461387b57600080fd5b50565b61388781613396565b811461389257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a75d3da77779a512d5de30d6474a8f4e4f33e9ee3351ba10b28efa64358ee41c64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb146103b1578063b87f137a146103ee578063c3c8cd8014610417578063c9567bf91461042e578063ca7a523e14610445578063dd62ed3e1461046e57610135565b806370a08231146102f0578063715018a61461032d578063751039fc146103445780638da5cb5b1461035b57806395d89b411461038657610135565b8063418956b3116100f2578063418956b3146102355780635932ead11461025e578063677daa57146102875780636b571d29146102b05780636fc3eaec146102d957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104ab565b60405161015c9190612f61565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612a3b565b6104e8565b6040516101999190612f46565b60405180910390f35b3480156101ae57600080fd5b506101b7610506565b6040516101c49190613103565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef91906129e8565b610516565b6040516102019190612f46565b60405180910390f35b34801561021657600080fd5b5061021f6105ef565b60405161022c9190613178565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061294e565b6105f8565b005b34801561026a57600080fd5b5061028560048036038101906102809190612ac4565b6106e8565b005b34801561029357600080fd5b506102ae60048036038101906102a99190612b1e565b61079a565b005b3480156102bc57600080fd5b506102d760048036038101906102d29190612b9e565b610873565b005b3480156102e557600080fd5b506102ee610915565b005b3480156102fc57600080fd5b506103176004803603810190610312919061294e565b610987565b6040516103249190613103565b60405180910390f35b34801561033957600080fd5b506103426109d8565b005b34801561035057600080fd5b50610359610b2b565b005b34801561036757600080fd5b50610370610be0565b60405161037d9190612e78565b60405180910390f35b34801561039257600080fd5b5061039b610c09565b6040516103a89190612f61565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612a3b565b610c46565b6040516103e59190612f46565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190612b1e565b610c64565b005b34801561042357600080fd5b5061042c610d3d565b005b34801561043a57600080fd5b50610443610db7565b005b34801561045157600080fd5b5061046c60048036038101906104679190612a7b565b61136d565b005b34801561047a57600080fd5b50610495600480360381019061049091906129a8565b611497565b6040516104a29190613103565b60405180910390f35b60606040518060400160405280600981526020017f50657065746f6f6c730000000000000000000000000000000000000000000000815250905090565b60006104fc6104f561151e565b8484611526565b6001905092915050565b600067016345785d8a0000905090565b60006105238484846116f1565b6105e48461052f61151e565b6105df8560405180606001604052806028815260200161389660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061059561151e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8c9092919063ffffffff16565b611526565b600190509392505050565b60006009905090565b61060061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490613043565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106f061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077490613043565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b6107a261151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082690613043565b60405180910390fd5b6000811161083c57600080fd5b61086a606461085c8367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60118190555050565b61087b61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90613043565b60405180910390fd5b8060ff1660138190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095661151e565b73ffffffffffffffffffffffffffffffffffffffff161461097657600080fd5b600047905061098481611eb5565b50565b60006109d1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f21565b9050919050565b6109e061151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6490613043565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b3361151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb790613043565b60405180910390fd5b67016345785d8a000060118190555067016345785d8a0000601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f50455045544f4f4c530000000000000000000000000000000000000000000000815250905090565b6000610c5a610c5361151e565b84846116f1565b6001905092915050565b610c6c61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090613043565b60405180910390fd5b60008111610d0657600080fd5b610d346064610d268367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b60128190555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7e61151e565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e57600080fd5b6000610da930610987565b9050610db481611f8f565b50565b610dbf61151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390613043565b60405180910390fd5b601060149054906101000a900460ff1615610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906130e3565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f2b30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667016345785d8a0000611526565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7157600080fd5b505afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa9919061297b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561100b57600080fd5b505afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061297b565b6040518363ffffffff1660e01b8152600401611060929190612e93565b602060405180830381600087803b15801561107a57600080fd5b505af115801561108e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b2919061297b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061113b30610987565b600080611146610be0565b426040518863ffffffff1660e01b815260040161116896959493929190612ee5565b6060604051808303818588803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111ba9190612b4b565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff0219169083151502179055506112226064611214600267016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6011819055506112576064611249600367016345785d8a0000611df090919063ffffffff16565b611e6b90919063ffffffff16565b6012819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611317929190612ebc565b602060405180830381600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113699190612af1565b5050565b61137561151e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f990613043565b60405180910390fd5b60005b815181101561149357600160066000848481518110611427576114266134c0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061148b90613419565b915050611405565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d906130c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fd90612fe3565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116e49190613103565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611761576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175890613083565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890612f83565b60405180910390fd5b60008111611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613063565b60405180910390fd5b6000600c819055506005600d8190555061182c610be0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561189a575061186a610be0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119435750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61194c57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119f75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a4d5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a655750601060179054906101000a900460ff165b15611ba357601154811115611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690612fa3565b60405180910390fd5b60125481611abc84610987565b611ac69190613239565b1115611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe906130a3565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611b5257600080fd5b601e42611b5f9190613239565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c4e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca45750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cba576000600c819055506005600d819055505b6000611cc530610987565b9050601060159054906101000a900460ff16158015611d325750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611d4a5750601060169054906101000a900460ff165b15611d7a57611d5881611f8f565b60004790506000811115611d7057611d6f47611eb5565b5b611d78612217565b505b505b611d8783838361222f565b505050565b6000838311158290611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb9190612f61565b60405180910390fd5b5060008385611de3919061331a565b9050809150509392505050565b600080831415611e035760009050611e65565b60008284611e1191906132c0565b9050828482611e20919061328f565b14611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790613023565b60405180910390fd5b809150505b92915050565b6000611ead83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223f565b905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f1d573d6000803e3d6000fd5b5050565b6000600a54821115611f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5f90612fc3565b60405180910390fd5b6000611f726122a2565b9050611f878184611e6b90919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fc757611fc66134ef565b5b604051908082528060200260200182016040528015611ff55781602001602082028036833780820191505090505b509050308160008151811061200d5761200c6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156120af57600080fd5b505afa1580156120c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e7919061297b565b816001815181106120fb576120fa6134c0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061216230600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611526565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121c695949392919061311e565b600060405180830381600087803b1580156121e057600080fd5b505af11580156121f4573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b601354600d5461222791906132c0565b600d81905550565b61223a8383836122cd565b505050565b60008083118290612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9190612f61565b60405180910390fd5b5060008385612295919061328f565b9050809150509392505050565b60008060006122af612498565b915091506122c68183611e6b90919063ffffffff16565b9250505090565b6000806000806000806122df876124f7565b95509550955095509550955061233d86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255f90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123d285600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061241e81612607565b61242884836126c4565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124859190613103565b60405180910390a3505050505050505050565b6000806000600a549050600067016345785d8a000090506124cc67016345785d8a0000600a54611e6b90919063ffffffff16565b8210156124ea57600a5467016345785d8a00009350935050506124f3565b81819350935050505b9091565b60008060008060008060008060006125148a600c54600d546126fe565b92509250925060006125246122a2565b905060008060006125378e878787612794565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d8c565b905092915050565b60008082846125b89190613239565b9050838110156125fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f490613003565b60405180910390fd5b8091505092915050565b60006126116122a2565b905060006126288284611df090919063ffffffff16565b905061267c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a990919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d982600a5461255f90919063ffffffff16565b600a819055506126f481600b546125a990919063ffffffff16565b600b819055505050565b60008060008061272a606461271c888a611df090919063ffffffff16565b611e6b90919063ffffffff16565b905060006127546064612746888b611df090919063ffffffff16565b611e6b90919063ffffffff16565b9050600061277d8261276f858c61255f90919063ffffffff16565b61255f90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127ad8589611df090919063ffffffff16565b905060006127c48689611df090919063ffffffff16565b905060006127db8789611df090919063ffffffff16565b90506000612804826127f6858761255f90919063ffffffff16565b61255f90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600061283061282b846131b8565b613193565b9050808382526020820190508285602086028201111561285357612852613523565b5b60005b858110156128835781612869888261288d565b845260208401935060208301925050600181019050612856565b5050509392505050565b60008135905061289c81613839565b92915050565b6000815190506128b181613839565b92915050565b600082601f8301126128cc576128cb61351e565b5b81356128dc84826020860161281d565b91505092915050565b6000813590506128f481613850565b92915050565b60008151905061290981613850565b92915050565b60008135905061291e81613867565b92915050565b60008151905061293381613867565b92915050565b6000813590506129488161387e565b92915050565b6000602082840312156129645761296361352d565b5b60006129728482850161288d565b91505092915050565b6000602082840312156129915761299061352d565b5b600061299f848285016128a2565b91505092915050565b600080604083850312156129bf576129be61352d565b5b60006129cd8582860161288d565b92505060206129de8582860161288d565b9150509250929050565b600080600060608486031215612a0157612a0061352d565b5b6000612a0f8682870161288d565b9350506020612a208682870161288d565b9250506040612a318682870161290f565b9150509250925092565b60008060408385031215612a5257612a5161352d565b5b6000612a608582860161288d565b9250506020612a718582860161290f565b9150509250929050565b600060208284031215612a9157612a9061352d565b5b600082013567ffffffffffffffff811115612aaf57612aae613528565b5b612abb848285016128b7565b91505092915050565b600060208284031215612ada57612ad961352d565b5b6000612ae8848285016128e5565b91505092915050565b600060208284031215612b0757612b0661352d565b5b6000612b15848285016128fa565b91505092915050565b600060208284031215612b3457612b3361352d565b5b6000612b428482850161290f565b91505092915050565b600080600060608486031215612b6457612b6361352d565b5b6000612b7286828701612924565b9350506020612b8386828701612924565b9250506040612b9486828701612924565b9150509250925092565b600060208284031215612bb457612bb361352d565b5b6000612bc284828501612939565b91505092915050565b6000612bd78383612be3565b60208301905092915050565b612bec8161334e565b82525050565b612bfb8161334e565b82525050565b6000612c0c826131f4565b612c168185613217565b9350612c21836131e4565b8060005b83811015612c52578151612c398882612bcb565b9750612c448361320a565b925050600181019050612c25565b5085935050505092915050565b612c6881613360565b82525050565b612c77816133a3565b82525050565b6000612c88826131ff565b612c928185613228565b9350612ca28185602086016133b5565b612cab81613532565b840191505092915050565b6000612cc3602383613228565b9150612cce82613543565b604082019050919050565b6000612ce6601983613228565b9150612cf182613592565b602082019050919050565b6000612d09602a83613228565b9150612d14826135bb565b604082019050919050565b6000612d2c602283613228565b9150612d378261360a565b604082019050919050565b6000612d4f601b83613228565b9150612d5a82613659565b602082019050919050565b6000612d72602183613228565b9150612d7d82613682565b604082019050919050565b6000612d95602083613228565b9150612da0826136d1565b602082019050919050565b6000612db8602983613228565b9150612dc3826136fa565b604082019050919050565b6000612ddb602583613228565b9150612de682613749565b604082019050919050565b6000612dfe601a83613228565b9150612e0982613798565b602082019050919050565b6000612e21602483613228565b9150612e2c826137c1565b604082019050919050565b6000612e44601783613228565b9150612e4f82613810565b602082019050919050565b612e638161338c565b82525050565b612e7281613396565b82525050565b6000602082019050612e8d6000830184612bf2565b92915050565b6000604082019050612ea86000830185612bf2565b612eb56020830184612bf2565b9392505050565b6000604082019050612ed16000830185612bf2565b612ede6020830184612e5a565b9392505050565b600060c082019050612efa6000830189612bf2565b612f076020830188612e5a565b612f146040830187612c6e565b612f216060830186612c6e565b612f2e6080830185612bf2565b612f3b60a0830184612e5a565b979650505050505050565b6000602082019050612f5b6000830184612c5f565b92915050565b60006020820190508181036000830152612f7b8184612c7d565b905092915050565b60006020820190508181036000830152612f9c81612cb6565b9050919050565b60006020820190508181036000830152612fbc81612cd9565b9050919050565b60006020820190508181036000830152612fdc81612cfc565b9050919050565b60006020820190508181036000830152612ffc81612d1f565b9050919050565b6000602082019050818103600083015261301c81612d42565b9050919050565b6000602082019050818103600083015261303c81612d65565b9050919050565b6000602082019050818103600083015261305c81612d88565b9050919050565b6000602082019050818103600083015261307c81612dab565b9050919050565b6000602082019050818103600083015261309c81612dce565b9050919050565b600060208201905081810360008301526130bc81612df1565b9050919050565b600060208201905081810360008301526130dc81612e14565b9050919050565b600060208201905081810360008301526130fc81612e37565b9050919050565b60006020820190506131186000830184612e5a565b92915050565b600060a0820190506131336000830188612e5a565b6131406020830187612c6e565b81810360408301526131528186612c01565b90506131616060830185612bf2565b61316e6080830184612e5a565b9695505050505050565b600060208201905061318d6000830184612e69565b92915050565b600061319d6131ae565b90506131a982826133e8565b919050565b6000604051905090565b600067ffffffffffffffff8211156131d3576131d26134ef565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006132448261338c565b915061324f8361338c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561328457613283613462565b5b828201905092915050565b600061329a8261338c565b91506132a58361338c565b9250826132b5576132b4613491565b5b828204905092915050565b60006132cb8261338c565b91506132d68361338c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561330f5761330e613462565b5b828202905092915050565b60006133258261338c565b91506133308361338c565b92508282101561334357613342613462565b5b828203905092915050565b60006133598261336c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006133ae8261338c565b9050919050565b60005b838110156133d35780820151818401526020810190506133b8565b838111156133e2576000848401525b50505050565b6133f182613532565b810181811067ffffffffffffffff821117156134105761340f6134ef565b5b80604052505050565b60006134248261338c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345757613456613462565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6138428161334e565b811461384d57600080fd5b50565b61385981613360565b811461386457600080fd5b50565b6138708161338c565b811461387b57600080fd5b50565b61388781613396565b811461389257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a75d3da77779a512d5de30d6474a8f4e4f33e9ee3351ba10b28efa64358ee41c64736f6c63430008070033

Deployed Bytecode Sourcemap

3919:11282:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5790:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6642:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6067:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5976:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11928:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7132:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10314:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10774:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13306:193;;;;;;;;;;;;;:::i;:::-;;6170:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2998:148;;;;;;;;;;;;;:::i;:::-;;10188:118;;;;;;;;;;;;;:::i;:::-;;2784:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5881:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6316:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10485;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13100:194;;;;;;;;;;;;;:::i;:::-;;10868:871;;;;;;;;;;;;;:::i;:::-;;11751:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6491:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5790:83;5827:13;5860:5;;;;;;;;;;;;;;;;;5853:12;;5790:83;:::o;6642:161::-;6717:4;6734:39;6743:12;:10;:12::i;:::-;6757:7;6766:6;6734:8;:39::i;:::-;6791:4;6784:11;;6642:161;;;;:::o;6067:95::-;6120:7;4536:17;6140:14;;6067:95;:::o;6811:313::-;6909:4;6926:36;6936:6;6944:9;6955:6;6926:9;:36::i;:::-;6973:121;6982:6;6990:12;:10;:12::i;:::-;7004:89;7042:6;7004:89;;;;;;;;;;;;;;;;;:11;:19;7016:6;7004:19;;;;;;;;;;;;;;;:33;7024:12;:10;:12::i;:::-;7004:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6973:8;:121::i;:::-;7112:4;7105:11;;6811:313;;;;;:::o;5976:83::-;6017:5;4907:1;6035:16;;5976:83;:::o;11928:90::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12005:5:::1;11990:4;:12;11995:6;11990:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11928:90:::0;:::o;7132:103::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7222:5:::1;7204:15;;:23;;;;;;;;;;;;;;;;;;7132:103:::0;:::o;10314:163::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10409:1:::1;10398:10;:12;10390:21;;;::::0;::::1;;10437:32;10465:3;10437:23;10449:10;4536:17;10437:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;10422:12;:47;;;;10314:163:::0;:::o;10774:86::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10848:4:::1;10834:18;;:11;:18;;;;10774:86:::0;:::o;13306:193::-;13372:14;;;;;;;;;;;13356:30;;:12;:10;:12::i;:::-;:30;;;13348:39;;;;;;13398:26;13427:21;13398:50;;13459:32;13472:18;13459:12;:32::i;:::-;13337:162;13306:193::o;6170:138::-;6236:7;6263:37;6283:7;:16;6291:7;6283:16;;;;;;;;;;;;;;;;6263:19;:37::i;:::-;6256:44;;6170:138;;;:::o;2998:148::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3105:1:::1;3068:40;;3089:6;::::0;::::1;;;;;;;;3068:40;;;;;;;;;;;;3136:1;3119:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2998:148::o:0;10188:118::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:17:::1;10241:12;:22;;;;4536:17;10274:14;:24;;;;10188:118::o:0;2784:79::-;2822:7;2849:6;;;;;;;;;;;2842:13;;2784:79;:::o;5881:87::-;5920:13;5953:7;;;;;;;;;;;;;;;;;5946:14;;5881:87;:::o;6316:167::-;6394:4;6411:42;6421:12;:10;:12::i;:::-;6435:9;6446:6;6411:9;:42::i;:::-;6471:4;6464:11;;6316:167;;;;:::o;10485:::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10582:1:::1;10571:10;:12;10563:21;;;::::0;::::1;;10612:32;10640:3;10612:23;10624:10;4536:17;10612:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;10595:14;:49;;;;10485:167:::0;:::o;13100:194::-;13166:14;;;;;;;;;;;13150:30;;:12;:10;:12::i;:::-;:30;;;13142:39;;;;;;13192:23;13218:24;13236:4;13218:9;:24::i;:::-;13192:50;;13253:33;13270:15;13253:16;:33::i;:::-;13131:163;13100:194::o;10868:871::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10932:11:::1;;;;;;;;;;;10931:12;10923:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10981:35;11038:42;10981:100;;11110:16;11092:15;;:34;;;;;;;;;;;;;;;;;;11137:58;11154:4;11169:15;;;;;;;;;;;4536:17;11137:8;:58::i;:::-;11240:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11222:56;;;11287:4;11294:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11222:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11206:13;;:112;;;;;;;;;;;;;;;;;;11329:15;;;;;;;;;;;:31;;;11368:21;11399:4;11405:24;11423:4;11405:9;:24::i;:::-;11430:1;11432::::0;11434:7:::1;:5;:7::i;:::-;11442:15;11329:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11483:4;11469:11;;:18;;;;;;;;;;;;;;;;;;11516:4;11498:15;;:22;;;;;;;;;;;;;;;;;;11546:23;11565:3;11546:14;11558:1;4536:17;11546:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11531:12;:38;;;;11597:23;11616:3;11597:14;11609:1;4536:17;11597:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;11580:14;:40;;;;11645:4;11631:11;;:18;;;;;;;;;;;;;;;;;;11667:13;;;;;;;;;;;11660:29;;;11698:15;;;;;;;;;;;11716:14;11660:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10912:827;10868:871::o:0;11751:165::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11826:6:::1;11821:88;11842:5;:12;11838:1;:16;11821:88;;;11893:4;11876;:14;11881:5;11887:1;11881:8;;;;;;;;:::i;:::-;;;;;;;;11876:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11856:3;;;;;:::i;:::-;;;;11821:88;;;;11751:165:::0;:::o;6491:143::-;6572:7;6599:11;:18;6611:5;6599:18;;;;;;;;;;;;;;;:27;6618:7;6599:27;;;;;;;;;;;;;;;;6592:34;;6491:143;;;;:::o;502:98::-;555:7;582:10;575:17;;502:98;:::o;7678:335::-;7788:1;7771:19;;:5;:19;;;;7763:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7869:1;7850:21;;:7;:21;;;;7842:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7951:6;7921:11;:18;7933:5;7921:18;;;;;;;;;;;;;;;:27;7940:7;7921:27;;;;;;;;;;;;;;;:36;;;;7989:7;7973:32;;7982:5;7973:32;;;7998:6;7973:32;;;;;;:::i;:::-;;;;;;;;7678:335;;;:::o;8021:1668::-;8125:1;8109:18;;:4;:18;;;;8101:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8202:1;8188:16;;:2;:16;;;;8180:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8272:1;8263:6;:10;8255:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8342:1;8330:9;:13;;;;8366:1;8354:9;:13;;;;8390:7;:5;:7::i;:::-;8382:15;;:4;:15;;;;:32;;;;;8407:7;:5;:7::i;:::-;8401:13;;:2;:13;;;;8382:32;8378:1233;;;8440:4;:10;8445:4;8440:10;;;;;;;;;;;;;;;;;;;;;;;;;8439:11;:24;;;;;8455:4;:8;8460:2;8455:8;;;;;;;;;;;;;;;;;;;;;;;;;8454:9;8439:24;8431:33;;;;;;8511:13;;;;;;;;;;;8503:21;;:4;:21;;;:55;;;;;8542:15;;;;;;;;;;;8528:30;;:2;:30;;;;8503:55;:83;;;;;8564:18;:22;8583:2;8564:22;;;;;;;;;;;;;;;;;;;;;;;;;8562:24;8503:83;:102;;;;;8590:15;;;;;;;;;;;8503:102;8499:452;;;8673:12;;8663:6;:22;;8655:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8768:14;;8758:6;8742:13;8752:2;8742:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8734:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8855:15;8840:8;:12;8849:2;8840:12;;;;;;;;;;;;;;;;:30;8832:39;;;;;;8924:10;8905:15;:30;;;;:::i;:::-;8890:8;:12;8899:2;8890:12;;;;;;;;;;;;;;;:45;;;;8499:452;9010:13;;;;;;;;;;;9004:19;;:2;:19;;;:55;;;;;9043:15;;;;;;;;;;;9027:32;;:4;:32;;;;9004:55;:85;;;;;9065:18;:24;9084:4;9065:24;;;;;;;;;;;;;;;;;;;;;;;;;9063:26;9004:85;9000:171;;;9122:1;9110:9;:13;;;;9154:1;9142:9;:13;;;;9000:171;9185:28;9216:24;9234:4;9216:9;:24::i;:::-;9185:55;;9260:6;;;;;;;;;;;9259:7;:32;;;;;9278:13;;;;;;;;;;;9270:21;;:4;:21;;;;9259:32;:47;;;;;9295:11;;;;;;;;;;;9259:47;9255:345;;;9327:38;9344:20;9327:16;:38::i;:::-;9384:26;9413:21;9384:50;;9477:1;9456:18;:22;9453:105;;;9503:35;9516:21;9503:12;:35::i;:::-;9453:105;9576:8;:6;:8::i;:::-;9308:292;9255:345;8416:1195;8378:1233;9625:30;9640:4;9645:2;9648:6;9625:14;:30::i;:::-;8021:1668;;;:::o;1639:190::-;1725:7;1758:1;1753;:6;;1761:12;1745:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1785:9;1801:1;1797;:5;;;;:::i;:::-;1785:17;;1820:1;1813:8;;;1639:190;;;;;:::o;1837:246::-;1895:7;1924:1;1919;:6;1915:47;;;1949:1;1942:8;;;;1915:47;1972:9;1988:1;1984;:5;;;;:::i;:::-;1972:17;;2017:1;2012;2008;:5;;;;:::i;:::-;:10;2000:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2074:1;2067:8;;;1837:246;;;;;:::o;2091:132::-;2149:7;2176:39;2180:1;2183;2176:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2169:46;;2091:132;;;;:::o;10668:96::-;10725:14;;;;;;;;;;;:23;;:31;10749:6;10725:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10668:96;:::o;7243:254::-;7310:7;7349;;7338;:18;;7330:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:19;7437:10;:8;:10::i;:::-;7414:33;;7465:24;7477:11;7465:7;:11;;:24;;;;:::i;:::-;7458:31;;;7243:254;;;:::o;9697:483::-;5374:4;5365:6;;:13;;;;;;;;;;;;;;;;;;9775:21:::1;9813:1;9799:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9775:40;;9844:4;9826;9831:1;9826:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9870:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9860:4;9865:1;9860:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9903:62;9920:4;9935:15;;;;;;;;;;;9953:11;9903:8;:62::i;:::-;9976:15;;;;;;;;;;;:66;;;10057:11;10083:1;10099:4;10126;10146:15;9976:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9764:416;5410:5:::0;5401:6;;:14;;;;;;;;;;;;;;;;;;9697:483;:::o;7505:88::-;7566:11;;7554:9;;:23;;;;:::i;:::-;7542:9;:35;;;;7505:88::o;12034:146::-;12128:44;12146:6;12154:9;12165:6;12128:17;:44::i;:::-;12034:146;;;:::o;2231:189::-;2317:7;2349:1;2345;:5;2352:12;2337:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2376:9;2392:1;2388;:5;;;;:::i;:::-;2376:17;;2411:1;2404:8;;;2231:189;;;;;:::o;14765:163::-;14806:7;14827:15;14844;14863:19;:17;:19::i;:::-;14826:56;;;;14900:20;14912:7;14900;:11;;:20;;;;:::i;:::-;14893:27;;;;14765:163;:::o;12188:488::-;12287:15;12304:23;12329:12;12343:23;12368:12;12382:13;12399:19;12410:7;12399:10;:19::i;:::-;12286:132;;;;;;;;;;;;12447:28;12467:7;12447;:15;12455:6;12447:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12429:7;:15;12437:6;12429:15;;;;;;;;;;;;;;;:46;;;;12507:39;12530:15;12507:7;:18;12515:9;12507:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12486:7;:18;12494:9;12486:18;;;;;;;;;;;;;;;:60;;;;12558:16;12568:5;12558:9;:16::i;:::-;12585:23;12597:4;12603;12585:11;:23::i;:::-;12641:9;12624:44;;12633:6;12624:44;;;12652:15;12624:44;;;;;;:::i;:::-;;;;;;;;12275:401;;;;;;12188:488;;;:::o;14936:262::-;14986:7;14995;15015:15;15033:7;;15015:25;;15051:15;4536:17;15051:25;;15107:20;4536:17;15107:7;;:11;;:20;;;;:::i;:::-;15097:7;:30;15093:61;;;15137:7;;4536:17;15129:25;;;;;;;;15093:61;15173:7;15182;15165:25;;;;;;14936:262;;;:::o;13513:471::-;13572:7;13581;13590;13599;13608;13617;13638:23;13663:12;13677:13;13694:42;13706:7;13715:9;;13726;;13694:11;:42::i;:::-;13637:99;;;;;;13747:19;13770:10;:8;:10::i;:::-;13747:33;;13792:15;13809:23;13834:12;13850:46;13862:7;13871:4;13877:5;13884:11;13850;:46::i;:::-;13791:105;;;;;;13915:7;13924:15;13941:4;13947:15;13964:4;13970:5;13907:69;;;;;;;;;;;;;;;;;;;13513:471;;;;;;;:::o;1495:136::-;1553:7;1580:43;1584:1;1587;1580:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1573:50;;1495:136;;;;:::o;1308:179::-;1366:7;1386:9;1402:1;1398;:5;;;;:::i;:::-;1386:17;;1427:1;1422;:6;;1414:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1478:1;1471:8;;;1308:179;;;;:::o;12684:212::-;12737:19;12760:10;:8;:10::i;:::-;12737:33;;12781:13;12797:22;12807:11;12797:5;:9;;:22;;;;:::i;:::-;12781:38;;12855:33;12882:5;12855:7;:22;12871:4;12855:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12830:7;:22;12846:4;12830:22;;;;;;;;;;;;;;;:58;;;;12726:170;;12684:212;:::o;12904:147::-;12982:17;12994:4;12982:7;;:11;;:17;;;;:::i;:::-;12972:7;:27;;;;13023:20;13038:4;13023:10;;:14;;:20;;;;:::i;:::-;13010:10;:33;;;;12904:147;;:::o;13992:351::-;14085:7;14094;14103;14123:12;14138:28;14162:3;14138:19;14150:6;14138:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14123:43;;14177:13;14193:29;14218:3;14193:20;14205:7;14193;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14177:45;;14233:23;14259:28;14281:5;14259:17;14271:4;14259:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14233:54;;14306:15;14323:4;14329:5;14298:37;;;;;;;;;13992:351;;;;;;;:::o;14351:409::-;14461:7;14470;14479;14499:15;14517:24;14529:11;14517:7;:11;;:24;;;;:::i;:::-;14499:42;;14552:12;14567:21;14576:11;14567:4;:8;;:21;;;;:::i;:::-;14552:36;;14599:13;14615:22;14625:11;14615:5;:9;;:22;;;;:::i;:::-;14599:38;;14648:23;14674:28;14696:5;14674:17;14686:4;14674:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14648:54;;14721:7;14730:15;14747:4;14713:39;;;;;;;;;;14351:409;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:135::-;2059:5;2097:6;2084:20;2075:29;;2113:31;2138:5;2113:31;:::i;:::-;2015:135;;;;:::o;2156:329::-;2215:6;2264:2;2252:9;2243:7;2239:23;2235:32;2232:119;;;2270:79;;:::i;:::-;2232:119;2390:1;2415:53;2460:7;2451:6;2440:9;2436:22;2415:53;:::i;:::-;2405:63;;2361:117;2156:329;;;;:::o;2491:351::-;2561:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:119;;;2616:79;;:::i;:::-;2578:119;2736:1;2761:64;2817:7;2808:6;2797:9;2793:22;2761:64;:::i;:::-;2751:74;;2707:128;2491:351;;;;:::o;2848:474::-;2916:6;2924;2973:2;2961:9;2952:7;2948:23;2944:32;2941:119;;;2979:79;;:::i;:::-;2941:119;3099:1;3124:53;3169:7;3160:6;3149:9;3145:22;3124:53;:::i;:::-;3114:63;;3070:117;3226:2;3252:53;3297:7;3288:6;3277:9;3273:22;3252:53;:::i;:::-;3242:63;;3197:118;2848:474;;;;;:::o;3328:619::-;3405:6;3413;3421;3470:2;3458:9;3449:7;3445:23;3441:32;3438:119;;;3476:79;;:::i;:::-;3438:119;3596:1;3621:53;3666:7;3657:6;3646:9;3642:22;3621:53;:::i;:::-;3611:63;;3567:117;3723:2;3749:53;3794:7;3785:6;3774:9;3770:22;3749:53;:::i;:::-;3739:63;;3694:118;3851:2;3877:53;3922:7;3913:6;3902:9;3898:22;3877:53;:::i;:::-;3867:63;;3822:118;3328:619;;;;;:::o;3953:474::-;4021:6;4029;4078:2;4066:9;4057:7;4053:23;4049:32;4046:119;;;4084:79;;:::i;:::-;4046:119;4204:1;4229:53;4274:7;4265:6;4254:9;4250:22;4229:53;:::i;:::-;4219:63;;4175:117;4331:2;4357:53;4402:7;4393:6;4382:9;4378:22;4357:53;:::i;:::-;4347:63;;4302:118;3953:474;;;;;:::o;4433:539::-;4517:6;4566:2;4554:9;4545:7;4541:23;4537:32;4534:119;;;4572:79;;:::i;:::-;4534:119;4720:1;4709:9;4705:17;4692:31;4750:18;4742:6;4739:30;4736:117;;;4772:79;;:::i;:::-;4736:117;4877:78;4947:7;4938:6;4927:9;4923:22;4877:78;:::i;:::-;4867:88;;4663:302;4433:539;;;;:::o;4978:323::-;5034:6;5083:2;5071:9;5062:7;5058:23;5054:32;5051:119;;;5089:79;;:::i;:::-;5051:119;5209:1;5234:50;5276:7;5267:6;5256:9;5252:22;5234:50;:::i;:::-;5224:60;;5180:114;4978:323;;;;:::o;5307:345::-;5374:6;5423:2;5411:9;5402:7;5398:23;5394:32;5391:119;;;5429:79;;:::i;:::-;5391:119;5549:1;5574:61;5627:7;5618:6;5607:9;5603:22;5574:61;:::i;:::-;5564:71;;5520:125;5307:345;;;;:::o;5658:329::-;5717:6;5766:2;5754:9;5745:7;5741:23;5737:32;5734:119;;;5772:79;;:::i;:::-;5734:119;5892:1;5917:53;5962:7;5953:6;5942:9;5938:22;5917:53;:::i;:::-;5907:63;;5863:117;5658:329;;;;:::o;5993:663::-;6081:6;6089;6097;6146:2;6134:9;6125:7;6121:23;6117:32;6114:119;;;6152:79;;:::i;:::-;6114:119;6272:1;6297:64;6353:7;6344:6;6333:9;6329:22;6297:64;:::i;:::-;6287:74;;6243:128;6410:2;6436:64;6492:7;6483:6;6472:9;6468:22;6436:64;:::i;:::-;6426:74;;6381:129;6549:2;6575:64;6631:7;6622:6;6611:9;6607:22;6575:64;:::i;:::-;6565:74;;6520:129;5993:663;;;;;:::o;6662:325::-;6719:6;6768:2;6756:9;6747:7;6743:23;6739:32;6736:119;;;6774:79;;:::i;:::-;6736:119;6894:1;6919:51;6962:7;6953:6;6942:9;6938:22;6919:51;:::i;:::-;6909:61;;6865:115;6662:325;;;;:::o;6993:179::-;7062:10;7083:46;7125:3;7117:6;7083:46;:::i;:::-;7161:4;7156:3;7152:14;7138:28;;6993:179;;;;:::o;7178:108::-;7255:24;7273:5;7255:24;:::i;:::-;7250:3;7243:37;7178:108;;:::o;7292:118::-;7379:24;7397:5;7379:24;:::i;:::-;7374:3;7367:37;7292:118;;:::o;7446:732::-;7565:3;7594:54;7642:5;7594:54;:::i;:::-;7664:86;7743:6;7738:3;7664:86;:::i;:::-;7657:93;;7774:56;7824:5;7774:56;:::i;:::-;7853:7;7884:1;7869:284;7894:6;7891:1;7888:13;7869:284;;;7970:6;7964:13;7997:63;8056:3;8041:13;7997:63;:::i;:::-;7990:70;;8083:60;8136:6;8083:60;:::i;:::-;8073:70;;7929:224;7916:1;7913;7909:9;7904:14;;7869:284;;;7873:14;8169:3;8162:10;;7570:608;;;7446:732;;;;:::o;8184:109::-;8265:21;8280:5;8265:21;:::i;:::-;8260:3;8253:34;8184:109;;:::o;8299:147::-;8394:45;8433:5;8394:45;:::i;:::-;8389:3;8382:58;8299:147;;:::o;8452:364::-;8540:3;8568:39;8601:5;8568:39;:::i;:::-;8623:71;8687:6;8682:3;8623:71;:::i;:::-;8616:78;;8703:52;8748:6;8743:3;8736:4;8729:5;8725:16;8703:52;:::i;:::-;8780:29;8802:6;8780:29;:::i;:::-;8775:3;8771:39;8764:46;;8544:272;8452:364;;;;:::o;8822:366::-;8964:3;8985:67;9049:2;9044:3;8985:67;:::i;:::-;8978:74;;9061:93;9150:3;9061:93;:::i;:::-;9179:2;9174:3;9170:12;9163:19;;8822:366;;;:::o;9194:::-;9336:3;9357:67;9421:2;9416:3;9357:67;:::i;:::-;9350:74;;9433:93;9522:3;9433:93;:::i;:::-;9551:2;9546:3;9542:12;9535:19;;9194:366;;;:::o;9566:::-;9708:3;9729:67;9793:2;9788:3;9729:67;:::i;:::-;9722:74;;9805:93;9894:3;9805:93;:::i;:::-;9923:2;9918:3;9914:12;9907:19;;9566:366;;;:::o;9938:::-;10080:3;10101:67;10165:2;10160:3;10101:67;:::i;:::-;10094:74;;10177:93;10266:3;10177:93;:::i;:::-;10295:2;10290:3;10286:12;10279:19;;9938:366;;;:::o;10310:::-;10452:3;10473:67;10537:2;10532:3;10473:67;:::i;:::-;10466:74;;10549:93;10638:3;10549:93;:::i;:::-;10667:2;10662:3;10658:12;10651:19;;10310:366;;;:::o;10682:::-;10824:3;10845:67;10909:2;10904:3;10845:67;:::i;:::-;10838:74;;10921:93;11010:3;10921:93;:::i;:::-;11039:2;11034:3;11030:12;11023:19;;10682:366;;;:::o;11054:::-;11196:3;11217:67;11281:2;11276:3;11217:67;:::i;:::-;11210:74;;11293:93;11382:3;11293:93;:::i;:::-;11411:2;11406:3;11402:12;11395:19;;11054:366;;;:::o;11426:::-;11568:3;11589:67;11653:2;11648:3;11589:67;:::i;:::-;11582:74;;11665:93;11754:3;11665:93;:::i;:::-;11783:2;11778:3;11774:12;11767:19;;11426:366;;;:::o;11798:::-;11940:3;11961:67;12025:2;12020:3;11961:67;:::i;:::-;11954:74;;12037:93;12126:3;12037:93;:::i;:::-;12155:2;12150:3;12146:12;12139:19;;11798:366;;;:::o;12170:::-;12312:3;12333:67;12397:2;12392:3;12333:67;:::i;:::-;12326:74;;12409:93;12498:3;12409:93;:::i;:::-;12527:2;12522:3;12518:12;12511:19;;12170:366;;;:::o;12542:::-;12684:3;12705:67;12769:2;12764:3;12705:67;:::i;:::-;12698:74;;12781:93;12870:3;12781:93;:::i;:::-;12899:2;12894:3;12890:12;12883:19;;12542:366;;;:::o;12914:::-;13056:3;13077:67;13141:2;13136:3;13077:67;:::i;:::-;13070:74;;13153:93;13242:3;13153:93;:::i;:::-;13271:2;13266:3;13262:12;13255:19;;12914:366;;;:::o;13286:118::-;13373:24;13391:5;13373:24;:::i;:::-;13368:3;13361:37;13286:118;;:::o;13410:112::-;13493:22;13509:5;13493:22;:::i;:::-;13488:3;13481:35;13410:112;;:::o;13528:222::-;13621:4;13659:2;13648:9;13644:18;13636:26;;13672:71;13740:1;13729:9;13725:17;13716:6;13672:71;:::i;:::-;13528:222;;;;:::o;13756:332::-;13877:4;13915:2;13904:9;13900:18;13892:26;;13928:71;13996:1;13985:9;13981:17;13972:6;13928:71;:::i;:::-;14009:72;14077:2;14066:9;14062:18;14053:6;14009:72;:::i;:::-;13756:332;;;;;:::o;14094:::-;14215:4;14253:2;14242:9;14238:18;14230:26;;14266:71;14334:1;14323:9;14319:17;14310:6;14266:71;:::i;:::-;14347:72;14415:2;14404:9;14400:18;14391:6;14347:72;:::i;:::-;14094:332;;;;;:::o;14432:807::-;14681:4;14719:3;14708:9;14704:19;14696:27;;14733:71;14801:1;14790:9;14786:17;14777:6;14733:71;:::i;:::-;14814:72;14882:2;14871:9;14867:18;14858:6;14814:72;:::i;:::-;14896:80;14972:2;14961:9;14957:18;14948:6;14896:80;:::i;:::-;14986;15062:2;15051:9;15047:18;15038:6;14986:80;:::i;:::-;15076:73;15144:3;15133:9;15129:19;15120:6;15076:73;:::i;:::-;15159;15227:3;15216:9;15212:19;15203:6;15159:73;:::i;:::-;14432:807;;;;;;;;;:::o;15245:210::-;15332:4;15370:2;15359:9;15355:18;15347:26;;15383:65;15445:1;15434:9;15430:17;15421:6;15383:65;:::i;:::-;15245:210;;;;:::o;15461:313::-;15574:4;15612:2;15601:9;15597:18;15589:26;;15661:9;15655:4;15651:20;15647:1;15636:9;15632:17;15625:47;15689:78;15762:4;15753:6;15689:78;:::i;:::-;15681:86;;15461:313;;;;:::o;15780:419::-;15946:4;15984:2;15973:9;15969:18;15961:26;;16033:9;16027:4;16023:20;16019:1;16008:9;16004:17;15997:47;16061:131;16187:4;16061:131;:::i;:::-;16053:139;;15780:419;;;:::o;16205:::-;16371:4;16409:2;16398:9;16394:18;16386:26;;16458:9;16452:4;16448:20;16444:1;16433:9;16429:17;16422:47;16486:131;16612:4;16486:131;:::i;:::-;16478:139;;16205:419;;;:::o;16630:::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:131;17037:4;16911:131;:::i;:::-;16903:139;;16630:419;;;:::o;17055:::-;17221:4;17259:2;17248:9;17244:18;17236:26;;17308:9;17302:4;17298:20;17294:1;17283:9;17279:17;17272:47;17336:131;17462:4;17336:131;:::i;:::-;17328:139;;17055:419;;;:::o;17480:::-;17646:4;17684:2;17673:9;17669:18;17661:26;;17733:9;17727:4;17723:20;17719:1;17708:9;17704:17;17697:47;17761:131;17887:4;17761:131;:::i;:::-;17753:139;;17480:419;;;:::o;17905:::-;18071:4;18109:2;18098:9;18094:18;18086:26;;18158:9;18152:4;18148:20;18144:1;18133:9;18129:17;18122:47;18186:131;18312:4;18186:131;:::i;:::-;18178:139;;17905:419;;;:::o;18330:::-;18496:4;18534:2;18523:9;18519:18;18511:26;;18583:9;18577:4;18573:20;18569:1;18558:9;18554:17;18547:47;18611:131;18737:4;18611:131;:::i;:::-;18603:139;;18330:419;;;:::o;18755:::-;18921:4;18959:2;18948:9;18944:18;18936:26;;19008:9;19002:4;18998:20;18994:1;18983:9;18979:17;18972:47;19036:131;19162:4;19036:131;:::i;:::-;19028:139;;18755:419;;;:::o;19180:::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19433:9;19427:4;19423:20;19419:1;19408:9;19404:17;19397:47;19461:131;19587:4;19461:131;:::i;:::-;19453:139;;19180:419;;;:::o;19605:::-;19771:4;19809:2;19798:9;19794:18;19786:26;;19858:9;19852:4;19848:20;19844:1;19833:9;19829:17;19822:47;19886:131;20012:4;19886:131;:::i;:::-;19878:139;;19605:419;;;:::o;20030:::-;20196:4;20234:2;20223:9;20219:18;20211:26;;20283:9;20277:4;20273:20;20269:1;20258:9;20254:17;20247:47;20311:131;20437:4;20311:131;:::i;:::-;20303:139;;20030:419;;;:::o;20455:::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:222::-;20973:4;21011:2;21000:9;20996:18;20988:26;;21024:71;21092:1;21081:9;21077:17;21068:6;21024:71;:::i;:::-;20880:222;;;;:::o;21108:831::-;21371:4;21409:3;21398:9;21394:19;21386:27;;21423:71;21491:1;21480:9;21476:17;21467:6;21423:71;:::i;:::-;21504:80;21580:2;21569:9;21565:18;21556:6;21504:80;:::i;:::-;21631:9;21625:4;21621:20;21616:2;21605:9;21601:18;21594:48;21659:108;21762:4;21753:6;21659:108;:::i;:::-;21651:116;;21777:72;21845:2;21834:9;21830:18;21821:6;21777:72;:::i;:::-;21859:73;21927:3;21916:9;21912:19;21903:6;21859:73;:::i;:::-;21108:831;;;;;;;;:::o;21945:214::-;22034:4;22072:2;22061:9;22057:18;22049:26;;22085:67;22149:1;22138:9;22134:17;22125:6;22085:67;:::i;:::-;21945:214;;;;:::o;22165:129::-;22199:6;22226:20;;:::i;:::-;22216:30;;22255:33;22283:4;22275:6;22255:33;:::i;:::-;22165:129;;;:::o;22300:75::-;22333:6;22366:2;22360:9;22350:19;;22300:75;:::o;22381:311::-;22458:4;22548:18;22540:6;22537:30;22534:56;;;22570:18;;:::i;:::-;22534:56;22620:4;22612:6;22608:17;22600:25;;22680:4;22674;22670:15;22662:23;;22381:311;;;:::o;22698:132::-;22765:4;22788:3;22780:11;;22818:4;22813:3;22809:14;22801:22;;22698:132;;;:::o;22836:114::-;22903:6;22937:5;22931:12;22921:22;;22836:114;;;:::o;22956:99::-;23008:6;23042:5;23036:12;23026:22;;22956:99;;;:::o;23061:113::-;23131:4;23163;23158:3;23154:14;23146:22;;23061:113;;;:::o;23180:184::-;23279:11;23313:6;23308:3;23301:19;23353:4;23348:3;23344:14;23329:29;;23180:184;;;;:::o;23370:169::-;23454:11;23488:6;23483:3;23476:19;23528:4;23523:3;23519:14;23504:29;;23370:169;;;;:::o;23545:305::-;23585:3;23604:20;23622:1;23604:20;:::i;:::-;23599:25;;23638:20;23656:1;23638:20;:::i;:::-;23633:25;;23792:1;23724:66;23720:74;23717:1;23714:81;23711:107;;;23798:18;;:::i;:::-;23711:107;23842:1;23839;23835:9;23828:16;;23545:305;;;;:::o;23856:185::-;23896:1;23913:20;23931:1;23913:20;:::i;:::-;23908:25;;23947:20;23965:1;23947:20;:::i;:::-;23942:25;;23986:1;23976:35;;23991:18;;:::i;:::-;23976:35;24033:1;24030;24026:9;24021:14;;23856:185;;;;:::o;24047:348::-;24087:7;24110:20;24128:1;24110:20;:::i;:::-;24105:25;;24144:20;24162:1;24144:20;:::i;:::-;24139:25;;24332:1;24264:66;24260:74;24257:1;24254:81;24249:1;24242:9;24235:17;24231:105;24228:131;;;24339:18;;:::i;:::-;24228:131;24387:1;24384;24380:9;24369:20;;24047:348;;;;:::o;24401:191::-;24441:4;24461:20;24479:1;24461:20;:::i;:::-;24456:25;;24495:20;24513:1;24495:20;:::i;:::-;24490:25;;24534:1;24531;24528:8;24525:34;;;24539:18;;:::i;:::-;24525:34;24584:1;24581;24577:9;24569:17;;24401:191;;;;:::o;24598:96::-;24635:7;24664:24;24682:5;24664:24;:::i;:::-;24653:35;;24598:96;;;:::o;24700:90::-;24734:7;24777:5;24770:13;24763:21;24752:32;;24700:90;;;:::o;24796:126::-;24833:7;24873:42;24866:5;24862:54;24851:65;;24796:126;;;:::o;24928:77::-;24965:7;24994:5;24983:16;;24928:77;;;:::o;25011:86::-;25046:7;25086:4;25079:5;25075:16;25064:27;;25011:86;;;:::o;25103:121::-;25161:9;25194:24;25212:5;25194:24;:::i;:::-;25181:37;;25103:121;;;:::o;25230:307::-;25298:1;25308:113;25322:6;25319:1;25316:13;25308:113;;;25407:1;25402:3;25398:11;25392:18;25388:1;25383:3;25379:11;25372:39;25344:2;25341:1;25337:10;25332:15;;25308:113;;;25439:6;25436:1;25433:13;25430:101;;;25519:1;25510:6;25505:3;25501:16;25494:27;25430:101;25279:258;25230:307;;;:::o;25543:281::-;25626:27;25648:4;25626:27;:::i;:::-;25618:6;25614:40;25756:6;25744:10;25741:22;25720:18;25708:10;25705:34;25702:62;25699:88;;;25767:18;;:::i;:::-;25699:88;25807:10;25803:2;25796:22;25586:238;25543:281;;:::o;25830:233::-;25869:3;25892:24;25910:5;25892:24;:::i;:::-;25883:33;;25938:66;25931:5;25928:77;25925:103;;;26008:18;;:::i;:::-;25925:103;26055:1;26048:5;26044:13;26037:20;;25830:233;;;:::o;26069:180::-;26117:77;26114:1;26107:88;26214:4;26211:1;26204:15;26238:4;26235:1;26228:15;26255:180;26303:77;26300:1;26293:88;26400:4;26397:1;26390:15;26424:4;26421:1;26414:15;26441:180;26489:77;26486:1;26479:88;26586:4;26583:1;26576:15;26610:4;26607:1;26600:15;26627:180;26675:77;26672:1;26665:88;26772:4;26769:1;26762:15;26796:4;26793:1;26786:15;26813:117;26922:1;26919;26912:12;26936:117;27045:1;27042;27035:12;27059:117;27168:1;27165;27158:12;27182:117;27291:1;27288;27281:12;27305:102;27346:6;27397:2;27393:7;27388:2;27381:5;27377:14;27373:28;27363:38;;27305:102;;;:::o;27413:222::-;27553:34;27549:1;27541:6;27537:14;27530:58;27622:5;27617:2;27609:6;27605:15;27598:30;27413:222;:::o;27641:175::-;27781:27;27777:1;27769:6;27765:14;27758:51;27641:175;:::o;27822:229::-;27962:34;27958:1;27950:6;27946:14;27939:58;28031:12;28026:2;28018:6;28014:15;28007:37;27822:229;:::o;28057:221::-;28197:34;28193:1;28185:6;28181:14;28174:58;28266:4;28261:2;28253:6;28249:15;28242:29;28057:221;:::o;28284:177::-;28424:29;28420:1;28412:6;28408:14;28401:53;28284:177;:::o;28467:220::-;28607:34;28603:1;28595:6;28591:14;28584:58;28676:3;28671:2;28663:6;28659:15;28652:28;28467:220;:::o;28693:182::-;28833:34;28829:1;28821:6;28817:14;28810:58;28693:182;:::o;28881:228::-;29021:34;29017:1;29009:6;29005:14;28998:58;29090:11;29085:2;29077:6;29073:15;29066:36;28881:228;:::o;29115:224::-;29255:34;29251:1;29243:6;29239:14;29232:58;29324:7;29319:2;29311:6;29307:15;29300:32;29115:224;:::o;29345:176::-;29485:28;29481:1;29473:6;29469:14;29462:52;29345:176;:::o;29527:223::-;29667:34;29663:1;29655:6;29651:14;29644:58;29736:6;29731:2;29723:6;29719:15;29712:31;29527:223;:::o;29756:173::-;29896:25;29892:1;29884:6;29880:14;29873:49;29756:173;:::o;29935:122::-;30008:24;30026:5;30008:24;:::i;:::-;30001:5;29998:35;29988:63;;30047:1;30044;30037:12;29988:63;29935:122;:::o;30063:116::-;30133:21;30148:5;30133:21;:::i;:::-;30126:5;30123:32;30113:60;;30169:1;30166;30159:12;30113:60;30063:116;:::o;30185:122::-;30258:24;30276:5;30258:24;:::i;:::-;30251:5;30248:35;30238:63;;30297:1;30294;30287:12;30238:63;30185:122;:::o;30313:118::-;30384:22;30400:5;30384:22;:::i;:::-;30377:5;30374:33;30364:61;;30421:1;30418;30411:12;30364:61;30313:118;:::o

Swarm Source

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