ETH Price: $2,685.10 (+2.09%)
Gas: 1 Gwei

Token

Botan Dōrō (BOTO)
 

Overview

Max Total Supply

1,000,000,000,000 BOTO

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,363,156,940.468287983 BOTO

Value
$0.00
0xbec073e2b105c0326e82d7343465f66cea565090
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:
BOTO

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**

Botan Dōrō

https://medium.com/@botandoro/who-are-we-1c4e868d3097

https://twitter.com/kaidanbotandoro

*/

pragma solidity ^0.8.4;
// 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 BOTO is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private liveBlock;

    uint256 private _buyFeeAddr1;
    uint256 private _buyFeeAddr2;

    uint256 private _sellFeeAddr1;
    uint256 private _sellFeeAddr2;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Botan D\u014dr\u014d";
    string private constant _symbol = "BOTO";
    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 public _maxTxAmount = _tTotal;
    uint256 public _maxSellTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0xB070FB82E09d56B7416303d32a63136A185524F8);
        _feeAddrWallet2 = payable(0xB070FB82E09d56B7416303d32a63136A185524F8);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;

        _sellFeeAddr1 = 4;
        _sellFeeAddr2 = 0;

        _buyFeeAddr1 = 4;
        _buyFeeAddr2 = 0;

        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 _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 = _buyFeeAddr1;
        _feeAddr2 = _buyFeeAddr2;

        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) { // Buy
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);

                _feeAddr1 = _buyFeeAddr1;
                _feeAddr2 = _buyFeeAddr2;

                
                if(block.number < liveBlock) {
                    addBot(to);
                }
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) { // Sell
                require(amount <= _maxSellTxAmount);
                _feeAddr1 = _sellFeeAddr1;
                _feeAddr2 = _sellFeeAddr2;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading(uint256 deadBlocks) 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 = 20000000000 * 10**9;
        _maxSellTxAmount = 10000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        liveBlock = block.number + deadBlocks;
    }

    function addBot(address bot) private {
        bots[bot] = true;
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function delBotsBulk(address [] calldata _bots) public {
        require (msg.sender == _feeAddrWallet1); // can unbl after renounced
        for(uint256 i; i < _bots.length; i++) {
            bots[_bots[i]] = false;
        }
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    function setSellFees(uint256 _fee1, uint256 _fee2) public onlyOwner { 
        _sellFeeAddr1 = _fee1;
        _sellFeeAddr2 = _fee2;
    }

    function setBuyFees(uint256 _fee1, uint256 _fee2) public onlyOwner { 
        _buyFeeAddr1 = _fee1;
        _buyFeeAddr2 = _fee2;
    }

    function setMaxTx(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }

    function setMaxSell(uint256 amount) public onlyOwner {
        _maxSellTxAmount = amount * 10**9;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"delBotsBulk","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":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee1","type":"uint256"},{"internalType":"uint256","name":"_fee2","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee1","type":"uint256"},{"internalType":"uint256","name":"_fee2","type":"uint256"}],"name":"setSellFees","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"}]

6080604052683635c9adc5dea000006000196200001d919062000554565b6000196200002c91906200050f565b6008556000601460156101000a81548160ff0219169083151502179055506000601460166101000a81548160ff0219169083151502179055506000601460176101000a81548160ff021916908315150217905550683635c9adc5dea00000601555683635c9adc5dea00000601655348015620000a757600080fd5b506000620000ba620004b060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073b070fb82e09d56b7416303d32a63136a185524f8601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b070fb82e09d56b7416303d32a63136a185524f8601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546002600062000219620004b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200026d620004b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004600d819055506000600e819055506004600b819055506000600c819055506200043a620004b060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004a29190620004f2565b60405180910390a3620005ea565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004ec816200054a565b82525050565b6000602082019050620005096000830184620004e1565b92915050565b60006200051c826200054a565b915062000529836200054a565b9250828210156200053f576200053e6200058c565b5b828203905092915050565b6000819050919050565b600062000561826200054a565b91506200056e836200054a565b925082620005815762000580620005bb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613b6c80620005fa6000396000f3fe60806040526004361061016a5760003560e01c80638da5cb5b116100d1578063b515566a1161008a578063cf4be39411610064578063cf4be394146104e7578063d163364914610512578063dd62ed3e1461053b578063ef998cf01461057857610171565b8063b515566a1461047e578063bc337182146104a7578063c3c8cd80146104d057610171565b80638da5cb5b1461037057806395d89b411461039b5780639fd8234e146103c6578063a9059cbb146103ef578063b1975ec61461042c578063b2d8f2081461045557610171565b80635932ead1116101235780635932ead11461029a5780636fc3eaec146102c357806370a08231146102da578063715018a614610317578063751039fc1461032e5780637d1db4a51461034557610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063273123b714610246578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a1565b60405161019891906132c6565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612dae565b6105de565b6040516101d591906132ab565b60405180910390f35b3480156101ea57600080fd5b506101f36105fc565b6040516102009190613428565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d5f565b61060d565b60405161023d91906132ab565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612cd1565b6106e6565b005b34801561027b57600080fd5b506102846107d6565b604051610291919061349d565b60405180910390f35b3480156102a657600080fd5b506102c160048036038101906102bc9190612e70565b6107df565b005b3480156102cf57600080fd5b506102d8610891565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612cd1565b610903565b60405161030e9190613428565b60405180910390f35b34801561032357600080fd5b5061032c610954565b005b34801561033a57600080fd5b50610343610aa7565b005b34801561035157600080fd5b5061035a610b5e565b6040516103679190613428565b60405180910390f35b34801561037c57600080fd5b50610385610b64565b60405161039291906131dd565b60405180910390f35b3480156103a757600080fd5b506103b0610b8d565b6040516103bd91906132c6565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190612eeb565b610bca565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612dae565b610c71565b60405161042391906132ab565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612dea565b610c8f565b005b34801561046157600080fd5b5061047c60048036038101906104779190612eeb565b610db4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190612e2f565b610e5b565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190612ec2565b610fab565b005b3480156104dc57600080fd5b506104e5611059565b005b3480156104f357600080fd5b506104fc6110d3565b6040516105099190613428565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612ec2565b6110d9565b005b34801561054757600080fd5b50610562600480360381019061055d9190612d23565b611655565b60405161056f9190613428565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612ec2565b6116dc565b005b60606040518060400160405280600c81526020017f426f74616e2044c58d72c58d0000000000000000000000000000000000000000815250905090565b60006105f26105eb61178a565b8484611792565b6001905092915050565b6000683635c9adc5dea00000905090565b600061061a84848461195d565b6106db8461062661178a565b6106d685604051806060016040528060288152602001613b0f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061068c61178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9b9092919063ffffffff16565b611792565b600190509392505050565b6106ee61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077290613388565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6107e761178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90613388565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d261178a565b73ffffffffffffffffffffffffffffffffffffffff16146108f257600080fd5b600047905061090081611fff565b50565b600061094d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120fa565b9050919050565b61095c61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aaf61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390613388565b60405180910390fd5b683635c9adc5dea00000601581905550683635c9adc5dea00000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f544f00000000000000000000000000000000000000000000000000000000815250905090565b610bd261178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613388565b60405180910390fd5b81600d8190555080600e819055505050565b6000610c85610c7e61178a565b848461195d565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce957600080fd5b60005b82829050811015610daf57600060066000858585818110610d36577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d4b9190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610da79061373e565b915050610cec565b505050565b610dbc61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090613388565b60405180910390fd5b81600b8190555080600c819055505050565b610e6361178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790613388565b60405180910390fd5b60005b8151811015610fa757600160066000848481518110610f3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9f9061373e565b915050610ef3565b5050565b610fb361178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613388565b60405180910390fd5b633b9aca008161105091906135e5565b60158190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109a61178a565b73ffffffffffffffffffffffffffffffffffffffff16146110ba57600080fd5b60006110c530610903565b90506110d081612168565b50565b60165481565b6110e161178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590613388565b60405180910390fd5b60148054906101000a900460ff16156111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390613408565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124c30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611792565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561129257600080fd5b505afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca9190612cfa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561132c57600080fd5b505afa158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190612cfa565b6040518363ffffffff1660e01b81526004016113819291906131f8565b602060405180830381600087803b15801561139b57600080fd5b505af11580156113af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d39190612cfa565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061145c30610903565b600080611467610b64565b426040518863ffffffff1660e01b81526004016114899695949392919061324a565b6060604051808303818588803b1580156114a257600080fd5b505af11580156114b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114db9190612f27565b5050506001601460166101000a81548160ff0219169083151502179055506001601460176101000a81548160ff0219169083151502179055506801158e460913d00000601581905550678ac7230489e8000060168190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115ec929190613221565b602060405180830381600087803b15801561160657600080fd5b505af115801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e9190612e99565b50814361164b919061355e565b600a819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116e461178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890613388565b60405180910390fd5b633b9aca008161178191906135e5565b60168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906133e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613328565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119509190613428565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c4906133c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906132e8565b60405180910390fd5b60008111611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906133a8565b60405180910390fd5b600b54600f81905550600c54601081905550611a9a610b64565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b085750611ad8610b64565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8b57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bba57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd35750601460179054906101000a900460ff165b15611da957601554811115611ce757600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d3257600080fd5b601e42611d3f919061355e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600f81905550600c54601081905550600a54431015611da857611da782612462565b5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611e545750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eaa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ed157601654811115611ebe57600080fd5b600d54600f81905550600e546010819055505b6000611edc30610903565b9050601460159054906101000a900460ff16158015611f495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f615750601460169054906101000a900460ff165b15611f8957611f6f81612168565b60004790506000811115611f8757611f8647611fff565b5b505b505b611f968383836124bd565b505050565b6000838311158290611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda91906132c6565b60405180910390fd5b5060008385611ff2919061363f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204f6002846124cd90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561207a573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120cb6002846124cd90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f6573d6000803e3d6000fd5b5050565b6000600854821115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890613308565b60405180910390fd5b600061214b612517565b905061216081846124cd90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121f45781602001602082028036833780820191505090505b5090503081600081518110612232577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d457600080fd5b505afa1580156122e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230c9190612cfa565b81600181518110612346577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ad30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611792565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612411959493929190613443565b600060405180830381600087803b15801561242b57600080fd5b505af115801561243f573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8838383612542565b505050565b600061250f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061270d565b905092915050565b6000806000612524612770565b9150915061253b81836124cd90919063ffffffff16565b9250505090565b600080600080600080612554876127d2565b9550955095509550955095506125b286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612693816128e2565b61269d848361299f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126fa9190613428565b60405180910390a3505050505050505050565b60008083118290612754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274b91906132c6565b60405180910390fd5b506000838561276391906135b4565b9050809150509392505050565b600080600060085490506000683635c9adc5dea0000090506127a6683635c9adc5dea000006008546124cd90919063ffffffff16565b8210156127c557600854683635c9adc5dea000009350935050506127ce565b81819350935050505b9091565b60008060008060008060008060006127ef8a600f546010546129d9565b92509250925060006127ff612517565b905060008060006128128e878787612a6f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061287c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9b565b905092915050565b6000808284612893919061355e565b9050838110156128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf90613348565b60405180910390fd5b8091505092915050565b60006128ec612517565b905060006129038284612af890919063ffffffff16565b905061295781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129b48260085461283a90919063ffffffff16565b6008819055506129cf8160095461288490919063ffffffff16565b6009819055505050565b600080600080612a0560646129f7888a612af890919063ffffffff16565b6124cd90919063ffffffff16565b90506000612a2f6064612a21888b612af890919063ffffffff16565b6124cd90919063ffffffff16565b90506000612a5882612a4a858c61283a90919063ffffffff16565b61283a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a888589612af890919063ffffffff16565b90506000612a9f8689612af890919063ffffffff16565b90506000612ab68789612af890919063ffffffff16565b90506000612adf82612ad1858761283a90919063ffffffff16565b61283a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b0b5760009050612b6d565b60008284612b1991906135e5565b9050828482612b2891906135b4565b14612b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5f90613368565b60405180910390fd5b809150505b92915050565b6000612b86612b81846134dd565b6134b8565b90508083825260208201905082856020860282011115612ba557600080fd5b60005b85811015612bd55781612bbb8882612bdf565b845260208401935060208301925050600181019050612ba8565b5050509392505050565b600081359050612bee81613ac9565b92915050565b600081519050612c0381613ac9565b92915050565b60008083601f840112612c1b57600080fd5b8235905067ffffffffffffffff811115612c3457600080fd5b602083019150836020820283011115612c4c57600080fd5b9250929050565b600082601f830112612c6457600080fd5b8135612c74848260208601612b73565b91505092915050565b600081359050612c8c81613ae0565b92915050565b600081519050612ca181613ae0565b92915050565b600081359050612cb681613af7565b92915050565b600081519050612ccb81613af7565b92915050565b600060208284031215612ce357600080fd5b6000612cf184828501612bdf565b91505092915050565b600060208284031215612d0c57600080fd5b6000612d1a84828501612bf4565b91505092915050565b60008060408385031215612d3657600080fd5b6000612d4485828601612bdf565b9250506020612d5585828601612bdf565b9150509250929050565b600080600060608486031215612d7457600080fd5b6000612d8286828701612bdf565b9350506020612d9386828701612bdf565b9250506040612da486828701612ca7565b9150509250925092565b60008060408385031215612dc157600080fd5b6000612dcf85828601612bdf565b9250506020612de085828601612ca7565b9150509250929050565b60008060208385031215612dfd57600080fd5b600083013567ffffffffffffffff811115612e1757600080fd5b612e2385828601612c09565b92509250509250929050565b600060208284031215612e4157600080fd5b600082013567ffffffffffffffff811115612e5b57600080fd5b612e6784828501612c53565b91505092915050565b600060208284031215612e8257600080fd5b6000612e9084828501612c7d565b91505092915050565b600060208284031215612eab57600080fd5b6000612eb984828501612c92565b91505092915050565b600060208284031215612ed457600080fd5b6000612ee284828501612ca7565b91505092915050565b60008060408385031215612efe57600080fd5b6000612f0c85828601612ca7565b9250506020612f1d85828601612ca7565b9150509250929050565b600080600060608486031215612f3c57600080fd5b6000612f4a86828701612cbc565b9350506020612f5b86828701612cbc565b9250506040612f6c86828701612cbc565b9150509250925092565b6000612f828383612f8e565b60208301905092915050565b612f9781613673565b82525050565b612fa681613673565b82525050565b6000612fb782613519565b612fc1818561353c565b9350612fcc83613509565b8060005b83811015612ffd578151612fe48882612f76565b9750612fef8361352f565b925050600181019050612fd0565b5085935050505092915050565b61301381613685565b82525050565b613022816136c8565b82525050565b600061303382613524565b61303d818561354d565b935061304d8185602086016136da565b61305681613814565b840191505092915050565b600061306e60238361354d565b915061307982613825565b604082019050919050565b6000613091602a8361354d565b915061309c82613874565b604082019050919050565b60006130b460228361354d565b91506130bf826138c3565b604082019050919050565b60006130d7601b8361354d565b91506130e282613912565b602082019050919050565b60006130fa60218361354d565b91506131058261393b565b604082019050919050565b600061311d60208361354d565b91506131288261398a565b602082019050919050565b600061314060298361354d565b915061314b826139b3565b604082019050919050565b600061316360258361354d565b915061316e82613a02565b604082019050919050565b600061318660248361354d565b915061319182613a51565b604082019050919050565b60006131a960178361354d565b91506131b482613aa0565b602082019050919050565b6131c8816136b1565b82525050565b6131d7816136bb565b82525050565b60006020820190506131f26000830184612f9d565b92915050565b600060408201905061320d6000830185612f9d565b61321a6020830184612f9d565b9392505050565b60006040820190506132366000830185612f9d565b61324360208301846131bf565b9392505050565b600060c08201905061325f6000830189612f9d565b61326c60208301886131bf565b6132796040830187613019565b6132866060830186613019565b6132936080830185612f9d565b6132a060a08301846131bf565b979650505050505050565b60006020820190506132c0600083018461300a565b92915050565b600060208201905081810360008301526132e08184613028565b905092915050565b6000602082019050818103600083015261330181613061565b9050919050565b6000602082019050818103600083015261332181613084565b9050919050565b60006020820190508181036000830152613341816130a7565b9050919050565b60006020820190508181036000830152613361816130ca565b9050919050565b60006020820190508181036000830152613381816130ed565b9050919050565b600060208201905081810360008301526133a181613110565b9050919050565b600060208201905081810360008301526133c181613133565b9050919050565b600060208201905081810360008301526133e181613156565b9050919050565b6000602082019050818103600083015261340181613179565b9050919050565b600060208201905081810360008301526134218161319c565b9050919050565b600060208201905061343d60008301846131bf565b92915050565b600060a08201905061345860008301886131bf565b6134656020830187613019565b81810360408301526134778186612fac565b90506134866060830185612f9d565b61349360808301846131bf565b9695505050505050565b60006020820190506134b260008301846131ce565b92915050565b60006134c26134d3565b90506134ce828261370d565b919050565b6000604051905090565b600067ffffffffffffffff8211156134f8576134f76137e5565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613569826136b1565b9150613574836136b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135a9576135a8613787565b5b828201905092915050565b60006135bf826136b1565b91506135ca836136b1565b9250826135da576135d96137b6565b5b828204905092915050565b60006135f0826136b1565b91506135fb836136b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561363457613633613787565b5b828202905092915050565b600061364a826136b1565b9150613655836136b1565b92508282101561366857613667613787565b5b828203905092915050565b600061367e82613691565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136d3826136b1565b9050919050565b60005b838110156136f85780820151818401526020810190506136dd565b83811115613707576000848401525b50505050565b61371682613814565b810181811067ffffffffffffffff82111715613735576137346137e5565b5b80604052505050565b6000613749826136b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561377c5761377b613787565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613ad281613673565b8114613add57600080fd5b50565b613ae981613685565b8114613af457600080fd5b50565b613b00816136b1565b8114613b0b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd5a4d2914e11c6aa6dbb187e78565d0dea80dc085a345f363318e41747b44d664736f6c63430008040033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80638da5cb5b116100d1578063b515566a1161008a578063cf4be39411610064578063cf4be394146104e7578063d163364914610512578063dd62ed3e1461053b578063ef998cf01461057857610171565b8063b515566a1461047e578063bc337182146104a7578063c3c8cd80146104d057610171565b80638da5cb5b1461037057806395d89b411461039b5780639fd8234e146103c6578063a9059cbb146103ef578063b1975ec61461042c578063b2d8f2081461045557610171565b80635932ead1116101235780635932ead11461029a5780636fc3eaec146102c357806370a08231146102da578063715018a614610317578063751039fc1461032e5780637d1db4a51461034557610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063273123b714610246578063313ce5671461026f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a1565b60405161019891906132c6565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612dae565b6105de565b6040516101d591906132ab565b60405180910390f35b3480156101ea57600080fd5b506101f36105fc565b6040516102009190613428565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612d5f565b61060d565b60405161023d91906132ab565b60405180910390f35b34801561025257600080fd5b5061026d60048036038101906102689190612cd1565b6106e6565b005b34801561027b57600080fd5b506102846107d6565b604051610291919061349d565b60405180910390f35b3480156102a657600080fd5b506102c160048036038101906102bc9190612e70565b6107df565b005b3480156102cf57600080fd5b506102d8610891565b005b3480156102e657600080fd5b5061030160048036038101906102fc9190612cd1565b610903565b60405161030e9190613428565b60405180910390f35b34801561032357600080fd5b5061032c610954565b005b34801561033a57600080fd5b50610343610aa7565b005b34801561035157600080fd5b5061035a610b5e565b6040516103679190613428565b60405180910390f35b34801561037c57600080fd5b50610385610b64565b60405161039291906131dd565b60405180910390f35b3480156103a757600080fd5b506103b0610b8d565b6040516103bd91906132c6565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190612eeb565b610bca565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612dae565b610c71565b60405161042391906132ab565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e9190612dea565b610c8f565b005b34801561046157600080fd5b5061047c60048036038101906104779190612eeb565b610db4565b005b34801561048a57600080fd5b506104a560048036038101906104a09190612e2f565b610e5b565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190612ec2565b610fab565b005b3480156104dc57600080fd5b506104e5611059565b005b3480156104f357600080fd5b506104fc6110d3565b6040516105099190613428565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612ec2565b6110d9565b005b34801561054757600080fd5b50610562600480360381019061055d9190612d23565b611655565b60405161056f9190613428565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612ec2565b6116dc565b005b60606040518060400160405280600c81526020017f426f74616e2044c58d72c58d0000000000000000000000000000000000000000815250905090565b60006105f26105eb61178a565b8484611792565b6001905092915050565b6000683635c9adc5dea00000905090565b600061061a84848461195d565b6106db8461062661178a565b6106d685604051806060016040528060288152602001613b0f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061068c61178a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9b9092919063ffffffff16565b611792565b600190509392505050565b6106ee61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461077b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077290613388565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b6107e761178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90613388565b60405180910390fd5b80601460176101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d261178a565b73ffffffffffffffffffffffffffffffffffffffff16146108f257600080fd5b600047905061090081611fff565b50565b600061094d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120fa565b9050919050565b61095c61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090613388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aaf61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3390613388565b60405180910390fd5b683635c9adc5dea00000601581905550683635c9adc5dea00000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f424f544f00000000000000000000000000000000000000000000000000000000815250905090565b610bd261178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690613388565b60405180910390fd5b81600d8190555080600e819055505050565b6000610c85610c7e61178a565b848461195d565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ce957600080fd5b60005b82829050811015610daf57600060066000858585818110610d36577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610d4b9190612cd1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610da79061373e565b915050610cec565b505050565b610dbc61178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090613388565b60405180910390fd5b81600b8190555080600c819055505050565b610e6361178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee790613388565b60405180910390fd5b60005b8151811015610fa757600160066000848481518110610f3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9f9061373e565b915050610ef3565b5050565b610fb361178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790613388565b60405180910390fd5b633b9aca008161105091906135e5565b60158190555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109a61178a565b73ffffffffffffffffffffffffffffffffffffffff16146110ba57600080fd5b60006110c530610903565b90506110d081612168565b50565b60165481565b6110e161178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116590613388565b60405180910390fd5b60148054906101000a900460ff16156111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390613408565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061124c30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000611792565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561129257600080fd5b505afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca9190612cfa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561132c57600080fd5b505afa158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190612cfa565b6040518363ffffffff1660e01b81526004016113819291906131f8565b602060405180830381600087803b15801561139b57600080fd5b505af11580156113af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d39190612cfa565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061145c30610903565b600080611467610b64565b426040518863ffffffff1660e01b81526004016114899695949392919061324a565b6060604051808303818588803b1580156114a257600080fd5b505af11580156114b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114db9190612f27565b5050506001601460166101000a81548160ff0219169083151502179055506001601460176101000a81548160ff0219169083151502179055506801158e460913d00000601581905550678ac7230489e8000060168190555060016014806101000a81548160ff021916908315150217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115ec929190613221565b602060405180830381600087803b15801561160657600080fd5b505af115801561161a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163e9190612e99565b50814361164b919061355e565b600a819055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116e461178a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890613388565b60405180910390fd5b633b9aca008161178191906135e5565b60168190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f9906133e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613328565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119509190613428565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c4906133c8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a34906132e8565b60405180910390fd5b60008111611a80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a77906133a8565b60405180910390fd5b600b54600f81905550600c54601081905550611a9a610b64565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b085750611ad8610b64565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8b57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb15750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bba57600080fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c655750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611cbb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd35750601460179054906101000a900460ff165b15611da957601554811115611ce757600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d3257600080fd5b601e42611d3f919061355e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b54600f81905550600c54601081905550600a54431015611da857611da782612462565b5b5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611e545750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eaa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ed157601654811115611ebe57600080fd5b600d54600f81905550600e546010819055505b6000611edc30610903565b9050601460159054906101000a900460ff16158015611f495750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f615750601460169054906101000a900460ff165b15611f8957611f6f81612168565b60004790506000811115611f8757611f8647611fff565b5b505b505b611f968383836124bd565b505050565b6000838311158290611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda91906132c6565b60405180910390fd5b5060008385611ff2919061363f565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61204f6002846124cd90919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561207a573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120cb6002846124cd90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156120f6573d6000803e3d6000fd5b5050565b6000600854821115612141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213890613308565b60405180910390fd5b600061214b612517565b905061216081846124cd90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121f45781602001602082028036833780820191505090505b5090503081600081518110612232577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d457600080fd5b505afa1580156122e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230c9190612cfa565b81600181518110612346577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123ad30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611792565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612411959493929190613443565b600060405180830381600087803b15801561242b57600080fd5b505af115801561243f573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8838383612542565b505050565b600061250f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061270d565b905092915050565b6000806000612524612770565b9150915061253b81836124cd90919063ffffffff16565b9250505090565b600080600080600080612554876127d2565b9550955095509550955095506125b286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061264785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612693816128e2565b61269d848361299f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126fa9190613428565b60405180910390a3505050505050505050565b60008083118290612754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274b91906132c6565b60405180910390fd5b506000838561276391906135b4565b9050809150509392505050565b600080600060085490506000683635c9adc5dea0000090506127a6683635c9adc5dea000006008546124cd90919063ffffffff16565b8210156127c557600854683635c9adc5dea000009350935050506127ce565b81819350935050505b9091565b60008060008060008060008060006127ef8a600f546010546129d9565b92509250925060006127ff612517565b905060008060006128128e878787612a6f565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061287c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f9b565b905092915050565b6000808284612893919061355e565b9050838110156128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf90613348565b60405180910390fd5b8091505092915050565b60006128ec612517565b905060006129038284612af890919063ffffffff16565b905061295781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288490919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129b48260085461283a90919063ffffffff16565b6008819055506129cf8160095461288490919063ffffffff16565b6009819055505050565b600080600080612a0560646129f7888a612af890919063ffffffff16565b6124cd90919063ffffffff16565b90506000612a2f6064612a21888b612af890919063ffffffff16565b6124cd90919063ffffffff16565b90506000612a5882612a4a858c61283a90919063ffffffff16565b61283a90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a888589612af890919063ffffffff16565b90506000612a9f8689612af890919063ffffffff16565b90506000612ab68789612af890919063ffffffff16565b90506000612adf82612ad1858761283a90919063ffffffff16565b61283a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b0b5760009050612b6d565b60008284612b1991906135e5565b9050828482612b2891906135b4565b14612b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5f90613368565b60405180910390fd5b809150505b92915050565b6000612b86612b81846134dd565b6134b8565b90508083825260208201905082856020860282011115612ba557600080fd5b60005b85811015612bd55781612bbb8882612bdf565b845260208401935060208301925050600181019050612ba8565b5050509392505050565b600081359050612bee81613ac9565b92915050565b600081519050612c0381613ac9565b92915050565b60008083601f840112612c1b57600080fd5b8235905067ffffffffffffffff811115612c3457600080fd5b602083019150836020820283011115612c4c57600080fd5b9250929050565b600082601f830112612c6457600080fd5b8135612c74848260208601612b73565b91505092915050565b600081359050612c8c81613ae0565b92915050565b600081519050612ca181613ae0565b92915050565b600081359050612cb681613af7565b92915050565b600081519050612ccb81613af7565b92915050565b600060208284031215612ce357600080fd5b6000612cf184828501612bdf565b91505092915050565b600060208284031215612d0c57600080fd5b6000612d1a84828501612bf4565b91505092915050565b60008060408385031215612d3657600080fd5b6000612d4485828601612bdf565b9250506020612d5585828601612bdf565b9150509250929050565b600080600060608486031215612d7457600080fd5b6000612d8286828701612bdf565b9350506020612d9386828701612bdf565b9250506040612da486828701612ca7565b9150509250925092565b60008060408385031215612dc157600080fd5b6000612dcf85828601612bdf565b9250506020612de085828601612ca7565b9150509250929050565b60008060208385031215612dfd57600080fd5b600083013567ffffffffffffffff811115612e1757600080fd5b612e2385828601612c09565b92509250509250929050565b600060208284031215612e4157600080fd5b600082013567ffffffffffffffff811115612e5b57600080fd5b612e6784828501612c53565b91505092915050565b600060208284031215612e8257600080fd5b6000612e9084828501612c7d565b91505092915050565b600060208284031215612eab57600080fd5b6000612eb984828501612c92565b91505092915050565b600060208284031215612ed457600080fd5b6000612ee284828501612ca7565b91505092915050565b60008060408385031215612efe57600080fd5b6000612f0c85828601612ca7565b9250506020612f1d85828601612ca7565b9150509250929050565b600080600060608486031215612f3c57600080fd5b6000612f4a86828701612cbc565b9350506020612f5b86828701612cbc565b9250506040612f6c86828701612cbc565b9150509250925092565b6000612f828383612f8e565b60208301905092915050565b612f9781613673565b82525050565b612fa681613673565b82525050565b6000612fb782613519565b612fc1818561353c565b9350612fcc83613509565b8060005b83811015612ffd578151612fe48882612f76565b9750612fef8361352f565b925050600181019050612fd0565b5085935050505092915050565b61301381613685565b82525050565b613022816136c8565b82525050565b600061303382613524565b61303d818561354d565b935061304d8185602086016136da565b61305681613814565b840191505092915050565b600061306e60238361354d565b915061307982613825565b604082019050919050565b6000613091602a8361354d565b915061309c82613874565b604082019050919050565b60006130b460228361354d565b91506130bf826138c3565b604082019050919050565b60006130d7601b8361354d565b91506130e282613912565b602082019050919050565b60006130fa60218361354d565b91506131058261393b565b604082019050919050565b600061311d60208361354d565b91506131288261398a565b602082019050919050565b600061314060298361354d565b915061314b826139b3565b604082019050919050565b600061316360258361354d565b915061316e82613a02565b604082019050919050565b600061318660248361354d565b915061319182613a51565b604082019050919050565b60006131a960178361354d565b91506131b482613aa0565b602082019050919050565b6131c8816136b1565b82525050565b6131d7816136bb565b82525050565b60006020820190506131f26000830184612f9d565b92915050565b600060408201905061320d6000830185612f9d565b61321a6020830184612f9d565b9392505050565b60006040820190506132366000830185612f9d565b61324360208301846131bf565b9392505050565b600060c08201905061325f6000830189612f9d565b61326c60208301886131bf565b6132796040830187613019565b6132866060830186613019565b6132936080830185612f9d565b6132a060a08301846131bf565b979650505050505050565b60006020820190506132c0600083018461300a565b92915050565b600060208201905081810360008301526132e08184613028565b905092915050565b6000602082019050818103600083015261330181613061565b9050919050565b6000602082019050818103600083015261332181613084565b9050919050565b60006020820190508181036000830152613341816130a7565b9050919050565b60006020820190508181036000830152613361816130ca565b9050919050565b60006020820190508181036000830152613381816130ed565b9050919050565b600060208201905081810360008301526133a181613110565b9050919050565b600060208201905081810360008301526133c181613133565b9050919050565b600060208201905081810360008301526133e181613156565b9050919050565b6000602082019050818103600083015261340181613179565b9050919050565b600060208201905081810360008301526134218161319c565b9050919050565b600060208201905061343d60008301846131bf565b92915050565b600060a08201905061345860008301886131bf565b6134656020830187613019565b81810360408301526134778186612fac565b90506134866060830185612f9d565b61349360808301846131bf565b9695505050505050565b60006020820190506134b260008301846131ce565b92915050565b60006134c26134d3565b90506134ce828261370d565b919050565b6000604051905090565b600067ffffffffffffffff8211156134f8576134f76137e5565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613569826136b1565b9150613574836136b1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135a9576135a8613787565b5b828201905092915050565b60006135bf826136b1565b91506135ca836136b1565b9250826135da576135d96137b6565b5b828204905092915050565b60006135f0826136b1565b91506135fb836136b1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561363457613633613787565b5b828202905092915050565b600061364a826136b1565b9150613655836136b1565b92508282101561366857613667613787565b5b828203905092915050565b600061367e82613691565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136d3826136b1565b9050919050565b60005b838110156136f85780820151818401526020810190506136dd565b83811115613707576000848401525b50505050565b61371682613814565b810181811067ffffffffffffffff82111715613735576137346137e5565b5b80604052505050565b6000613749826136b1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561377c5761377b613787565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613ad281613673565b8114613add57600080fd5b50565b613ae981613685565b8114613af457600080fd5b50565b613b00816136b1565b8114613b0b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd5a4d2914e11c6aa6dbb187e78565d0dea80dc085a345f363318e41747b44d664736f6c63430008040033

Deployed Bytecode Sourcemap

3640:12081:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5837:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6689:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6114:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6858:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11557:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6023:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7179:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13180:194;;;;;;;;;;;;;:::i;:::-;;6217:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2719:148;;;;;;;;;;;;;:::i;:::-;;15596:120;;;;;;;;;;;;;:::i;:::-;;4989:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2505:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5928:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15081:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6363:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11653:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15230:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11381:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15376:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12973:195;;;;;;;;;;;;;:::i;:::-;;5033:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10358:931;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6538:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15483:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5837:83;5874:13;5907:5;;;;;;;;;;;;;;;;;5900:12;;5837:83;:::o;6689:161::-;6764:4;6781:39;6790:12;:10;:12::i;:::-;6804:7;6813:6;6781:8;:39::i;:::-;6838:4;6831:11;;6689:161;;;;:::o;6114:95::-;6167:7;4137:21;6187:14;;6114:95;:::o;6858:313::-;6956:4;6973:36;6983:6;6991:9;7002:6;6973:9;:36::i;:::-;7020:121;7029:6;7037:12;:10;:12::i;:::-;7051:89;7089:6;7051:89;;;;;;;;;;;;;;;;;:11;:19;7063:6;7051:19;;;;;;;;;;;;;;;:33;7071:12;:10;:12::i;:::-;7051:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7020:8;:121::i;:::-;7159:4;7152:11;;6858:313;;;;;:::o;11557:88::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11632:5:::1;11617:4;:12;11622:6;11617:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11557:88:::0;:::o;6023:83::-;6064:5;4743:1;6082:16;;6023:83;:::o;7179:103::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7269:5:::1;7251:15;;:23;;;;;;;;;;;;;;;;;;7179:103:::0;:::o;13180:194::-;13246:15;;;;;;;;;;;13230:31;;:12;:10;:12::i;:::-;:31;;;13222:40;;;;;;13273:26;13302:21;13273:50;;13334:32;13347:18;13334:12;:32::i;:::-;13180:194;:::o;6217:138::-;6283:7;6310:37;6330:7;:16;6338:7;6330:16;;;;;;;;;;;;;;;;6310:19;:37::i;:::-;6303:44;;6217:138;;;:::o;2719:148::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2826:1:::1;2789:40;;2810:6;::::0;::::1;;;;;;;;2789:40;;;;;;;;;;;;2857:1;2840:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2719:148::o:0;15596:120::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4137:21:::1;15649:12;:22;;;;4137:21;15682:16;:26;;;;15596:120::o:0;4989:37::-;;;;:::o;2505:79::-;2543:7;2570:6;;;;;;;;;;;2563:13;;2505:79;:::o;5928:87::-;5967:13;6000:7;;;;;;;;;;;;;;;;;5993:14;;5928:87;:::o;15081:141::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15177:5:::1;15161:13;:21;;;;15209:5;15193:13;:21;;;;15081:141:::0;;:::o;6363:167::-;6441:4;6458:42;6468:12;:10;:12::i;:::-;6482:9;6493:6;6458:9;:42::i;:::-;6518:4;6511:11;;6363:167;;;;:::o;11653:238::-;11742:15;;;;;;;;;;;11728:29;;:10;:29;;;11719:39;;;;;;11801:9;11797:87;11816:5;;:12;;11812:1;:16;11797:87;;;11867:5;11850:4;:14;11855:5;;11861:1;11855:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11850:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;11830:3;;;;;:::i;:::-;;;;11797:87;;;;11653:238;;:::o;15230:138::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15324:5:::1;15309:12;:20;;;;15355:5;15340:12;:20;;;;15230:138:::0;;:::o;11381:164::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11455:6:::1;11450:88;11471:5;:12;11467:1;:16;11450:88;;;11522:4;11505;:14;11510:5;11516:1;11510:8;;;;;;;;;;;;;;;;;;;;;;11505:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11485:3;;;;;:::i;:::-;;;;11450:88;;;;11381:164:::0;:::o;15376:99::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15462:5:::1;15453:6;:14;;;;:::i;:::-;15438:12;:29;;;;15376:99:::0;:::o;12973:195::-;13039:15;;;;;;;;;;;13023:31;;:12;:10;:12::i;:::-;:31;;;13015:40;;;;;;13066:23;13092:24;13110:4;13092:9;:24::i;:::-;13066:50;;13127:33;13144:15;13127:16;:33::i;:::-;12973:195;:::o;5033:41::-;;;;:::o;10358:931::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10440:11:::1;::::0;::::1;;;;;;;;10439:12;10431:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10489:35;10546:42;10489:100;;10618:16;10600:15;;:34;;;;;;;;;;;;;;;;;;10645:58;10662:4;10677:15;;;;;;;;;;;4137:21;10645:8;:58::i;:::-;10748:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10730:56;;;10795:4;10802:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10730:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10714:13;;:112;;;;;;;;;;;;;;;;;;10837:15;;;;;;;;;;;:31;;;10876:21;10907:4;10913:24;10931:4;10913:9;:24::i;:::-;10938:1;10940::::0;10942:7:::1;:5;:7::i;:::-;10950:15;10837:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10991:4;10977:11;;:18;;;;;;;;;;;;;;;;;;11024:4;11006:15;;:22;;;;;;;;;;;;;;;;;;11054:19;11039:12;:34;;;;11103:19;11084:16;:38;;;;11147:4;11133:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11169:13;;;;;;;;;;;11162:29;;;11200:15;;;;;;;;;;;11218:14;11162:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11271:10;11256:12;:25;;;;:::i;:::-;11244:9;:37;;;;2702:1;10358:931:::0;:::o;6538:143::-;6619:7;6646:11;:18;6658:5;6646:18;;;;;;;;;;;;;;;:27;6665:7;6646:27;;;;;;;;;;;;;;;;6639:34;;6538:143;;;;:::o;15483:105::-;2642:12;:10;:12::i;:::-;2632:22;;:6;;;;;;;;;;:22;;;2624:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15575:5:::1;15566:6;:14;;;;:::i;:::-;15547:16;:33;;;;15483:105:::0;:::o;223:98::-;276:7;303:10;296:17;;223:98;:::o;7552:335::-;7662:1;7645:19;;:5;:19;;;;7637:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7743:1;7724:21;;:7;:21;;;;7716:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7825:6;7795:11;:18;7807:5;7795:18;;;;;;;;;;;;;;;:27;7814:7;7795:27;;;;;;;;;;;;;;;:36;;;;7863:7;7847:32;;7856:5;7847:32;;;7872:6;7847:32;;;;;;:::i;:::-;;;;;;;;7552:335;;;:::o;7895:1790::-;7999:1;7983:18;;:4;:18;;;;7975:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8076:1;8062:16;;:2;:16;;;;8054:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8146:1;8137:6;:10;8129:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8218:12;;8206:9;:24;;;;8253:12;;8241:9;:24;;;;8290:7;:5;:7::i;:::-;8282:15;;:4;:15;;;;:32;;;;;8307:7;:5;:7::i;:::-;8301:13;;:2;:13;;;;8282:32;8278:1355;;;8340:4;:10;8345:4;8340:10;;;;;;;;;;;;;;;;;;;;;;;;;8339:11;:24;;;;;8355:4;:8;8360:2;8355:8;;;;;;;;;;;;;;;;;;;;;;;;;8354:9;8339:24;8331:33;;;;;;8393:13;;;;;;;;;;;8385:21;;:4;:21;;;:55;;;;;8424:15;;;;;;;;;;;8410:30;;:2;:30;;;;8385:55;:83;;;;;8446:18;:22;8465:2;8446:22;;;;;;;;;;;;;;;;;;;;;;;;;8444:24;8385:83;:102;;;;;8472:15;;;;;;;;;;;8385:102;8381:540;;;8562:12;;8552:6;:22;;8544:31;;;;;;8617:15;8602:8;:12;8611:2;8602:12;;;;;;;;;;;;;;;;:30;8594:39;;;;;;8686:10;8667:15;:30;;;;:::i;:::-;8652:8;:12;8661:2;8652:12;;;;;;;;;;;;;;;:45;;;;8730:12;;8718:9;:24;;;;8773:12;;8761:9;:24;;;;8842:9;;8827:12;:24;8824:82;;;8876:10;8883:2;8876:6;:10::i;:::-;8824:82;8381:540;8973:13;;;;;;;;;;;8967:19;;:2;:19;;;:55;;;;;9006:15;;;;;;;;;;;8990:32;;:4;:32;;;;8967:55;:85;;;;;9028:18;:24;9047:4;9028:24;;;;;;;;;;;;;;;;;;;;;;;;;9026:26;8967:85;8963:257;;;9099:16;;9089:6;:26;;9081:35;;;;;;9147:13;;9135:9;:25;;;;9191:13;;9179:9;:25;;;;8963:257;9234:28;9265:24;9283:4;9265:9;:24::i;:::-;9234:55;;9309:6;;;;;;;;;;;9308:7;:32;;;;;9327:13;;;;;;;;;;;9319:21;;:4;:21;;;;9308:32;:47;;;;;9344:11;;;;;;;;;;;9308:47;9304:318;;;9376:38;9393:20;9376:16;:38::i;:::-;9433:26;9462:21;9433:50;;9526:1;9505:18;:22;9502:105;;;9552:35;9565:21;9552:12;:35::i;:::-;9502:105;9304:318;;8278:1355;;9647:30;9662:4;9667:2;9670:6;9647:14;:30::i;:::-;7895:1790;;;:::o;1360:190::-;1446:7;1479:1;1474;:6;;1482:12;1466:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1506:9;1522:1;1518;:5;;;;:::i;:::-;1506:17;;1541:1;1534:8;;;1360:190;;;;;:::o;10192:154::-;10249:15;;;;;;;;;;;:24;;:39;10274:13;10285:1;10274:6;:10;;:13;;;;:::i;:::-;10249:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10299:15;;;;;;;;;;;:24;;:39;10324:13;10335:1;10324:6;:10;;:13;;;;:::i;:::-;10299:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10192:154;:::o;7290:254::-;7357:7;7396;;7385;:18;;7377:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7461:19;7484:10;:8;:10::i;:::-;7461:33;;7512:24;7524:11;7512:7;:11;;:24;;;;:::i;:::-;7505:31;;;7290:254;;;:::o;9693:483::-;5172:4;5163:6;;:13;;;;;;;;;;;;;;;;;;9771:21:::1;9809:1;9795:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9771:40;;9840:4;9822;9827:1;9822:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;9866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9856:4;9861:1;9856:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;9899:62;9916:4;9931:15;;;;;;;;;;;9949:11;9899:8;:62::i;:::-;9972:15;;;;;;;;;;;:66;;;10053:11;10079:1;10095:4;10122;10142:15;9972:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5187:1;5208:5:::0;5199:6;;:14;;;;;;;;;;;;;;;;;;9693:483;:::o;11297:72::-;11357:4;11345;:9;11350:3;11345:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;11297:72;:::o;11907:146::-;12001:44;12019:6;12027:9;12038:6;12001:17;:44::i;:::-;11907:146;;;:::o;1812:132::-;1870:7;1897:39;1901:1;1904;1897:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1890:46;;1812:132;;;;:::o;14640:163::-;14681:7;14702:15;14719;14738:19;:17;:19::i;:::-;14701:56;;;;14775:20;14787:7;14775;:11;;:20;;;;:::i;:::-;14768:27;;;;14640:163;:::o;12061:488::-;12160:15;12177:23;12202:12;12216:23;12241:12;12255:13;12272:19;12283:7;12272:10;:19::i;:::-;12159:132;;;;;;;;;;;;12320:28;12340:7;12320;:15;12328:6;12320:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12302:7;:15;12310:6;12302:15;;;;;;;;;;;;;;;:46;;;;12380:39;12403:15;12380:7;:18;12388:9;12380:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;12359:7;:18;12367:9;12359:18;;;;;;;;;;;;;;;:60;;;;12431:16;12441:5;12431:9;:16::i;:::-;12458:23;12470:4;12476;12458:11;:23::i;:::-;12514:9;12497:44;;12506:6;12497:44;;;12525:15;12497:44;;;;;;:::i;:::-;;;;;;;;12061:488;;;;;;;;;:::o;1952:189::-;2038:7;2070:1;2066;:5;2073:12;2058:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2097:9;2113:1;2109;:5;;;;:::i;:::-;2097:17;;2132:1;2125:8;;;1952:189;;;;;:::o;14811:262::-;14861:7;14870;14890:15;14908:7;;14890:25;;14926:15;4137:21;14926:25;;14982:20;4137:21;14982:7;;:11;;:20;;;;:::i;:::-;14972:7;:30;14968:61;;;15012:7;;4137:21;15004:25;;;;;;;;14968:61;15048:7;15057;15040:25;;;;;;14811:262;;;:::o;13388:471::-;13447:7;13456;13465;13474;13483;13492;13513:23;13538:12;13552:13;13569:42;13581:7;13590:9;;13601;;13569:11;:42::i;:::-;13512:99;;;;;;13622:19;13645:10;:8;:10::i;:::-;13622:33;;13667:15;13684:23;13709:12;13725:46;13737:7;13746:4;13752:5;13759:11;13725;:46::i;:::-;13666:105;;;;;;13790:7;13799:15;13816:4;13822:15;13839:4;13845:5;13782:69;;;;;;;;;;;;;;;;;;;13388:471;;;;;;;:::o;1216:136::-;1274:7;1301:43;1305:1;1308;1301:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1294:50;;1216:136;;;;:::o;1029:179::-;1087:7;1107:9;1123:1;1119;:5;;;;:::i;:::-;1107:17;;1148:1;1143;:6;;1135:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1199:1;1192:8;;;1029:179;;;;:::o;12557:212::-;12610:19;12633:10;:8;:10::i;:::-;12610:33;;12654:13;12670:22;12680:11;12670:5;:9;;:22;;;;:::i;:::-;12654:38;;12728:33;12755:5;12728:7;:22;12744:4;12728:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12703:7;:22;12719:4;12703:22;;;;;;;;;;;;;;;:58;;;;12557:212;;;:::o;12777:147::-;12855:17;12867:4;12855:7;;:11;;:17;;;;:::i;:::-;12845:7;:27;;;;12896:20;12911:4;12896:10;;:14;;:20;;;;:::i;:::-;12883:10;:33;;;;12777:147;;:::o;13867:351::-;13960:7;13969;13978;13998:12;14013:28;14037:3;14013:19;14025:6;14013:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13998:43;;14052:13;14068:29;14093:3;14068:20;14080:7;14068;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;14052:45;;14108:23;14134:28;14156:5;14134:17;14146:4;14134:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14108:54;;14181:15;14198:4;14204:5;14173:37;;;;;;;;;13867:351;;;;;;;:::o;14226:409::-;14336:7;14345;14354;14374:15;14392:24;14404:11;14392:7;:11;;:24;;;;:::i;:::-;14374:42;;14427:12;14442:21;14451:11;14442:4;:8;;:21;;;;:::i;:::-;14427:36;;14474:13;14490:22;14500:11;14490:5;:9;;:22;;;;:::i;:::-;14474:38;;14523:23;14549:28;14571:5;14549:17;14561:4;14549:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14523:54;;14596:7;14605:15;14622:4;14588:39;;;;;;;;;;14226:409;;;;;;;;:::o;1558:246::-;1616:7;1645:1;1640;:6;1636:47;;;1670:1;1663:8;;;;1636:47;1693:9;1709:1;1705;:5;;;;:::i;:::-;1693:17;;1738:1;1733;1729;:5;;;;:::i;:::-;:10;1721:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1795:1;1788:8;;;1558:246;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:367::-;1069:8;1079:6;1129:3;1122:4;1114:6;1110:17;1106:27;1096:2;;1147:1;1144;1137:12;1096:2;1183:6;1170:20;1160:30;;1213:18;1205:6;1202:30;1199:2;;;1245:1;1242;1235:12;1199:2;1282:4;1274:6;1270:17;1258:29;;1336:3;1328:4;1320:6;1316:17;1306:8;1302:32;1299:41;1296:2;;;1353:1;1350;1343:12;1296:2;1086:277;;;;;:::o;1386:303::-;1457:5;1506:3;1499:4;1491:6;1487:17;1483:27;1473:2;;1524:1;1521;1514:12;1473:2;1564:6;1551:20;1589:94;1679:3;1671:6;1664:4;1656:6;1652:17;1589:94;:::i;:::-;1580:103;;1463:226;;;;;:::o;1695:133::-;1738:5;1776:6;1763:20;1754:29;;1792:30;1816:5;1792:30;:::i;:::-;1744:84;;;;:::o;1834:137::-;1888:5;1919:6;1913:13;1904:22;;1935:30;1959:5;1935:30;:::i;:::-;1894:77;;;;:::o;1977:139::-;2023:5;2061:6;2048:20;2039:29;;2077:33;2104:5;2077:33;:::i;:::-;2029:87;;;;:::o;2122:143::-;2179:5;2210:6;2204:13;2195:22;;2226:33;2253:5;2226:33;:::i;:::-;2185:80;;;;:::o;2271:262::-;2330:6;2379:2;2367:9;2358:7;2354:23;2350:32;2347:2;;;2395:1;2392;2385:12;2347:2;2438:1;2463:53;2508:7;2499:6;2488:9;2484:22;2463:53;:::i;:::-;2453:63;;2409:117;2337:196;;;;:::o;2539:284::-;2609:6;2658:2;2646:9;2637:7;2633:23;2629:32;2626:2;;;2674:1;2671;2664:12;2626:2;2717:1;2742:64;2798:7;2789:6;2778:9;2774:22;2742:64;:::i;:::-;2732:74;;2688:128;2616:207;;;;:::o;2829:407::-;2897:6;2905;2954:2;2942:9;2933:7;2929:23;2925:32;2922:2;;;2970:1;2967;2960:12;2922:2;3013:1;3038:53;3083:7;3074:6;3063:9;3059:22;3038:53;:::i;:::-;3028:63;;2984:117;3140:2;3166:53;3211:7;3202:6;3191:9;3187:22;3166:53;:::i;:::-;3156:63;;3111:118;2912:324;;;;;:::o;3242:552::-;3319:6;3327;3335;3384:2;3372:9;3363:7;3359:23;3355:32;3352:2;;;3400:1;3397;3390:12;3352:2;3443:1;3468:53;3513:7;3504:6;3493:9;3489:22;3468:53;:::i;:::-;3458:63;;3414:117;3570:2;3596:53;3641:7;3632:6;3621:9;3617:22;3596:53;:::i;:::-;3586:63;;3541:118;3698:2;3724:53;3769:7;3760:6;3749:9;3745:22;3724:53;:::i;:::-;3714:63;;3669:118;3342:452;;;;;:::o;3800:407::-;3868:6;3876;3925:2;3913:9;3904:7;3900:23;3896:32;3893:2;;;3941:1;3938;3931:12;3893:2;3984:1;4009:53;4054:7;4045:6;4034:9;4030:22;4009:53;:::i;:::-;3999:63;;3955:117;4111:2;4137:53;4182:7;4173:6;4162:9;4158:22;4137:53;:::i;:::-;4127:63;;4082:118;3883:324;;;;;:::o;4213:425::-;4299:6;4307;4356:2;4344:9;4335:7;4331:23;4327:32;4324:2;;;4372:1;4369;4362:12;4324:2;4443:1;4432:9;4428:17;4415:31;4473:18;4465:6;4462:30;4459:2;;;4505:1;4502;4495:12;4459:2;4541:80;4613:7;4604:6;4593:9;4589:22;4541:80;:::i;:::-;4523:98;;;;4386:245;4314:324;;;;;:::o;4644:405::-;4728:6;4777:2;4765:9;4756:7;4752:23;4748:32;4745:2;;;4793:1;4790;4783:12;4745:2;4864:1;4853:9;4849:17;4836:31;4894:18;4886:6;4883:30;4880:2;;;4926:1;4923;4916:12;4880:2;4954:78;5024:7;5015:6;5004:9;5000:22;4954:78;:::i;:::-;4944:88;;4807:235;4735:314;;;;:::o;5055:256::-;5111:6;5160:2;5148:9;5139:7;5135:23;5131:32;5128:2;;;5176:1;5173;5166:12;5128:2;5219:1;5244:50;5286:7;5277:6;5266:9;5262:22;5244:50;:::i;:::-;5234:60;;5190:114;5118:193;;;;:::o;5317:278::-;5384:6;5433:2;5421:9;5412:7;5408:23;5404:32;5401:2;;;5449:1;5446;5439:12;5401:2;5492:1;5517:61;5570:7;5561:6;5550:9;5546:22;5517:61;:::i;:::-;5507:71;;5463:125;5391:204;;;;:::o;5601:262::-;5660:6;5709:2;5697:9;5688:7;5684:23;5680:32;5677:2;;;5725:1;5722;5715:12;5677:2;5768:1;5793:53;5838:7;5829:6;5818:9;5814:22;5793:53;:::i;:::-;5783:63;;5739:117;5667:196;;;;:::o;5869:407::-;5937:6;5945;5994:2;5982:9;5973:7;5969:23;5965:32;5962:2;;;6010:1;6007;6000:12;5962:2;6053:1;6078:53;6123:7;6114:6;6103:9;6099:22;6078:53;:::i;:::-;6068:63;;6024:117;6180:2;6206:53;6251:7;6242:6;6231:9;6227:22;6206:53;:::i;:::-;6196:63;;6151:118;5952:324;;;;;:::o;6282:596::-;6370:6;6378;6386;6435:2;6423:9;6414:7;6410:23;6406:32;6403:2;;;6451:1;6448;6441:12;6403:2;6494:1;6519:64;6575:7;6566:6;6555:9;6551:22;6519:64;:::i;:::-;6509:74;;6465:128;6632:2;6658:64;6714:7;6705:6;6694:9;6690:22;6658:64;:::i;:::-;6648:74;;6603:129;6771:2;6797:64;6853:7;6844:6;6833:9;6829:22;6797:64;:::i;:::-;6787:74;;6742:129;6393:485;;;;;:::o;6884:179::-;6953:10;6974:46;7016:3;7008:6;6974:46;:::i;:::-;7052:4;7047:3;7043:14;7029:28;;6964:99;;;;:::o;7069:108::-;7146:24;7164:5;7146:24;:::i;:::-;7141:3;7134:37;7124:53;;:::o;7183:118::-;7270:24;7288:5;7270:24;:::i;:::-;7265:3;7258:37;7248:53;;:::o;7337:732::-;7456:3;7485:54;7533:5;7485:54;:::i;:::-;7555:86;7634:6;7629:3;7555:86;:::i;:::-;7548:93;;7665:56;7715:5;7665:56;:::i;:::-;7744:7;7775:1;7760:284;7785:6;7782:1;7779:13;7760:284;;;7861:6;7855:13;7888:63;7947:3;7932:13;7888:63;:::i;:::-;7881:70;;7974:60;8027:6;7974:60;:::i;:::-;7964:70;;7820:224;7807:1;7804;7800:9;7795:14;;7760:284;;;7764:14;8060:3;8053:10;;7461:608;;;;;;;:::o;8075:109::-;8156:21;8171:5;8156:21;:::i;:::-;8151:3;8144:34;8134:50;;:::o;8190:147::-;8285:45;8324:5;8285:45;:::i;:::-;8280:3;8273:58;8263:74;;:::o;8343:364::-;8431:3;8459:39;8492:5;8459:39;:::i;:::-;8514:71;8578:6;8573:3;8514:71;:::i;:::-;8507:78;;8594:52;8639:6;8634:3;8627:4;8620:5;8616:16;8594:52;:::i;:::-;8671:29;8693:6;8671:29;:::i;:::-;8666:3;8662:39;8655:46;;8435:272;;;;;:::o;8713:366::-;8855:3;8876:67;8940:2;8935:3;8876:67;:::i;:::-;8869:74;;8952:93;9041:3;8952:93;:::i;:::-;9070:2;9065:3;9061:12;9054:19;;8859:220;;;:::o;9085:366::-;9227:3;9248:67;9312:2;9307:3;9248:67;:::i;:::-;9241:74;;9324:93;9413:3;9324:93;:::i;:::-;9442:2;9437:3;9433:12;9426:19;;9231:220;;;:::o;9457:366::-;9599:3;9620:67;9684:2;9679:3;9620:67;:::i;:::-;9613:74;;9696:93;9785:3;9696:93;:::i;:::-;9814:2;9809:3;9805:12;9798:19;;9603:220;;;:::o;9829:366::-;9971:3;9992:67;10056:2;10051:3;9992:67;:::i;:::-;9985:74;;10068:93;10157:3;10068:93;:::i;:::-;10186:2;10181:3;10177:12;10170:19;;9975:220;;;:::o;10201:366::-;10343:3;10364:67;10428:2;10423:3;10364:67;:::i;:::-;10357:74;;10440:93;10529:3;10440:93;:::i;:::-;10558:2;10553:3;10549:12;10542:19;;10347:220;;;:::o;10573:366::-;10715:3;10736:67;10800:2;10795:3;10736:67;:::i;:::-;10729:74;;10812:93;10901:3;10812:93;:::i;:::-;10930:2;10925:3;10921:12;10914:19;;10719:220;;;:::o;10945:366::-;11087:3;11108:67;11172:2;11167:3;11108:67;:::i;:::-;11101:74;;11184:93;11273:3;11184:93;:::i;:::-;11302:2;11297:3;11293:12;11286:19;;11091:220;;;:::o;11317:366::-;11459:3;11480:67;11544:2;11539:3;11480:67;:::i;:::-;11473:74;;11556:93;11645:3;11556:93;:::i;:::-;11674:2;11669:3;11665:12;11658:19;;11463:220;;;:::o;11689:366::-;11831:3;11852:67;11916:2;11911:3;11852:67;:::i;:::-;11845:74;;11928:93;12017:3;11928:93;:::i;:::-;12046:2;12041:3;12037:12;12030:19;;11835:220;;;:::o;12061:366::-;12203:3;12224:67;12288:2;12283:3;12224:67;:::i;:::-;12217:74;;12300:93;12389:3;12300:93;:::i;:::-;12418:2;12413:3;12409:12;12402:19;;12207:220;;;:::o;12433:118::-;12520:24;12538:5;12520:24;:::i;:::-;12515:3;12508:37;12498:53;;:::o;12557:112::-;12640:22;12656:5;12640:22;:::i;:::-;12635:3;12628:35;12618:51;;:::o;12675:222::-;12768:4;12806:2;12795:9;12791:18;12783:26;;12819:71;12887:1;12876:9;12872:17;12863:6;12819:71;:::i;:::-;12773:124;;;;:::o;12903:332::-;13024:4;13062:2;13051:9;13047:18;13039:26;;13075:71;13143:1;13132:9;13128:17;13119:6;13075:71;:::i;:::-;13156:72;13224:2;13213:9;13209:18;13200:6;13156:72;:::i;:::-;13029:206;;;;;:::o;13241:332::-;13362:4;13400:2;13389:9;13385:18;13377:26;;13413:71;13481:1;13470:9;13466:17;13457:6;13413:71;:::i;:::-;13494:72;13562:2;13551:9;13547:18;13538:6;13494:72;:::i;:::-;13367:206;;;;;:::o;13579:807::-;13828:4;13866:3;13855:9;13851:19;13843:27;;13880:71;13948:1;13937:9;13933:17;13924:6;13880:71;:::i;:::-;13961:72;14029:2;14018:9;14014:18;14005:6;13961:72;:::i;:::-;14043:80;14119:2;14108:9;14104:18;14095:6;14043:80;:::i;:::-;14133;14209:2;14198:9;14194:18;14185:6;14133:80;:::i;:::-;14223:73;14291:3;14280:9;14276:19;14267:6;14223:73;:::i;:::-;14306;14374:3;14363:9;14359:19;14350:6;14306:73;:::i;:::-;13833:553;;;;;;;;;:::o;14392:210::-;14479:4;14517:2;14506:9;14502:18;14494:26;;14530:65;14592:1;14581:9;14577:17;14568:6;14530:65;:::i;:::-;14484:118;;;;:::o;14608:313::-;14721:4;14759:2;14748:9;14744:18;14736:26;;14808:9;14802:4;14798:20;14794:1;14783:9;14779:17;14772:47;14836:78;14909:4;14900:6;14836:78;:::i;:::-;14828:86;;14726:195;;;;:::o;14927:419::-;15093:4;15131:2;15120:9;15116:18;15108:26;;15180:9;15174:4;15170:20;15166:1;15155:9;15151:17;15144:47;15208:131;15334:4;15208:131;:::i;:::-;15200:139;;15098:248;;;:::o;15352:419::-;15518:4;15556:2;15545:9;15541:18;15533:26;;15605:9;15599:4;15595:20;15591:1;15580:9;15576:17;15569:47;15633:131;15759:4;15633:131;:::i;:::-;15625:139;;15523:248;;;:::o;15777:419::-;15943:4;15981:2;15970:9;15966:18;15958:26;;16030:9;16024:4;16020:20;16016:1;16005:9;16001:17;15994:47;16058:131;16184:4;16058:131;:::i;:::-;16050:139;;15948:248;;;:::o;16202:419::-;16368:4;16406:2;16395:9;16391:18;16383:26;;16455:9;16449:4;16445:20;16441:1;16430:9;16426:17;16419:47;16483:131;16609:4;16483:131;:::i;:::-;16475:139;;16373:248;;;:::o;16627:419::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16880:9;16874:4;16870:20;16866:1;16855:9;16851:17;16844:47;16908:131;17034:4;16908:131;:::i;:::-;16900:139;;16798:248;;;:::o;17052:419::-;17218:4;17256:2;17245:9;17241:18;17233:26;;17305:9;17299:4;17295:20;17291:1;17280:9;17276:17;17269:47;17333:131;17459:4;17333:131;:::i;:::-;17325:139;;17223:248;;;:::o;17477:419::-;17643:4;17681:2;17670:9;17666:18;17658:26;;17730:9;17724:4;17720:20;17716:1;17705:9;17701:17;17694:47;17758:131;17884:4;17758:131;:::i;:::-;17750:139;;17648:248;;;:::o;17902:419::-;18068:4;18106:2;18095:9;18091:18;18083:26;;18155:9;18149:4;18145:20;18141:1;18130:9;18126:17;18119:47;18183:131;18309:4;18183:131;:::i;:::-;18175:139;;18073:248;;;:::o;18327:419::-;18493:4;18531:2;18520:9;18516:18;18508:26;;18580:9;18574:4;18570:20;18566:1;18555:9;18551:17;18544:47;18608:131;18734:4;18608:131;:::i;:::-;18600:139;;18498:248;;;:::o;18752:419::-;18918:4;18956:2;18945:9;18941:18;18933:26;;19005:9;18999:4;18995:20;18991:1;18980:9;18976:17;18969:47;19033:131;19159:4;19033:131;:::i;:::-;19025:139;;18923:248;;;:::o;19177:222::-;19270:4;19308:2;19297:9;19293:18;19285:26;;19321:71;19389:1;19378:9;19374:17;19365:6;19321:71;:::i;:::-;19275:124;;;;:::o;19405:831::-;19668:4;19706:3;19695:9;19691:19;19683:27;;19720:71;19788:1;19777:9;19773:17;19764:6;19720:71;:::i;:::-;19801:80;19877:2;19866:9;19862:18;19853:6;19801:80;:::i;:::-;19928:9;19922:4;19918:20;19913:2;19902:9;19898:18;19891:48;19956:108;20059:4;20050:6;19956:108;:::i;:::-;19948:116;;20074:72;20142:2;20131:9;20127:18;20118:6;20074:72;:::i;:::-;20156:73;20224:3;20213:9;20209:19;20200:6;20156:73;:::i;:::-;19673:563;;;;;;;;:::o;20242:214::-;20331:4;20369:2;20358:9;20354:18;20346:26;;20382:67;20446:1;20435:9;20431:17;20422:6;20382:67;:::i;:::-;20336:120;;;;:::o;20462:129::-;20496:6;20523:20;;:::i;:::-;20513:30;;20552:33;20580:4;20572:6;20552:33;:::i;:::-;20503:88;;;:::o;20597:75::-;20630:6;20663:2;20657:9;20647:19;;20637:35;:::o;20678:311::-;20755:4;20845:18;20837:6;20834:30;20831:2;;;20867:18;;:::i;:::-;20831:2;20917:4;20909:6;20905:17;20897:25;;20977:4;20971;20967:15;20959:23;;20760:229;;;:::o;20995:132::-;21062:4;21085:3;21077:11;;21115:4;21110:3;21106:14;21098:22;;21067:60;;;:::o;21133:114::-;21200:6;21234:5;21228:12;21218:22;;21207:40;;;:::o;21253:99::-;21305:6;21339:5;21333:12;21323:22;;21312:40;;;:::o;21358:113::-;21428:4;21460;21455:3;21451:14;21443:22;;21433:38;;;:::o;21477:184::-;21576:11;21610:6;21605:3;21598:19;21650:4;21645:3;21641:14;21626:29;;21588:73;;;;:::o;21667:169::-;21751:11;21785:6;21780:3;21773:19;21825:4;21820:3;21816:14;21801:29;;21763:73;;;;:::o;21842:305::-;21882:3;21901:20;21919:1;21901:20;:::i;:::-;21896:25;;21935:20;21953:1;21935:20;:::i;:::-;21930:25;;22089:1;22021:66;22017:74;22014:1;22011:81;22008:2;;;22095:18;;:::i;:::-;22008:2;22139:1;22136;22132:9;22125:16;;21886:261;;;;:::o;22153:185::-;22193:1;22210:20;22228:1;22210:20;:::i;:::-;22205:25;;22244:20;22262:1;22244:20;:::i;:::-;22239:25;;22283:1;22273:2;;22288:18;;:::i;:::-;22273:2;22330:1;22327;22323:9;22318:14;;22195:143;;;;:::o;22344:348::-;22384:7;22407:20;22425:1;22407:20;:::i;:::-;22402:25;;22441:20;22459:1;22441:20;:::i;:::-;22436:25;;22629:1;22561:66;22557:74;22554:1;22551:81;22546:1;22539:9;22532:17;22528:105;22525:2;;;22636:18;;:::i;:::-;22525:2;22684:1;22681;22677:9;22666:20;;22392:300;;;;:::o;22698:191::-;22738:4;22758:20;22776:1;22758:20;:::i;:::-;22753:25;;22792:20;22810:1;22792:20;:::i;:::-;22787:25;;22831:1;22828;22825:8;22822:2;;;22836:18;;:::i;:::-;22822:2;22881:1;22878;22874:9;22866:17;;22743:146;;;;:::o;22895:96::-;22932:7;22961:24;22979:5;22961:24;:::i;:::-;22950:35;;22940:51;;;:::o;22997:90::-;23031:7;23074:5;23067:13;23060:21;23049:32;;23039:48;;;:::o;23093:126::-;23130:7;23170:42;23163:5;23159:54;23148:65;;23138:81;;;:::o;23225:77::-;23262:7;23291:5;23280:16;;23270:32;;;:::o;23308:86::-;23343:7;23383:4;23376:5;23372:16;23361:27;;23351:43;;;:::o;23400:121::-;23458:9;23491:24;23509:5;23491:24;:::i;:::-;23478:37;;23468:53;;;:::o;23527:307::-;23595:1;23605:113;23619:6;23616:1;23613:13;23605:113;;;23704:1;23699:3;23695:11;23689:18;23685:1;23680:3;23676:11;23669:39;23641:2;23638:1;23634:10;23629:15;;23605:113;;;23736:6;23733:1;23730:13;23727:2;;;23816:1;23807:6;23802:3;23798:16;23791:27;23727:2;23576:258;;;;:::o;23840:281::-;23923:27;23945:4;23923:27;:::i;:::-;23915:6;23911:40;24053:6;24041:10;24038:22;24017:18;24005:10;24002:34;23999:62;23996:2;;;24064:18;;:::i;:::-;23996:2;24104:10;24100:2;24093:22;23883:238;;;:::o;24127:233::-;24166:3;24189:24;24207:5;24189:24;:::i;:::-;24180:33;;24235:66;24228:5;24225:77;24222:2;;;24305:18;;:::i;:::-;24222:2;24352:1;24345:5;24341:13;24334:20;;24170:190;;;:::o;24366:180::-;24414:77;24411:1;24404:88;24511:4;24508:1;24501:15;24535:4;24532:1;24525:15;24552:180;24600:77;24597:1;24590:88;24697:4;24694:1;24687:15;24721:4;24718:1;24711:15;24738:180;24786:77;24783:1;24776:88;24883:4;24880:1;24873:15;24907:4;24904:1;24897:15;24924:102;24965:6;25016:2;25012:7;25007:2;25000:5;24996:14;24992:28;24982:38;;24972:54;;;:::o;25032:222::-;25172:34;25168:1;25160:6;25156:14;25149:58;25241:5;25236:2;25228:6;25224:15;25217:30;25138:116;:::o;25260:229::-;25400:34;25396:1;25388:6;25384:14;25377:58;25469:12;25464:2;25456:6;25452:15;25445:37;25366:123;:::o;25495:221::-;25635:34;25631:1;25623:6;25619:14;25612:58;25704:4;25699:2;25691:6;25687:15;25680:29;25601:115;:::o;25722:177::-;25862:29;25858:1;25850:6;25846:14;25839:53;25828:71;:::o;25905:220::-;26045:34;26041:1;26033:6;26029:14;26022:58;26114:3;26109:2;26101:6;26097:15;26090:28;26011:114;:::o;26131:182::-;26271:34;26267:1;26259:6;26255:14;26248:58;26237:76;:::o;26319:228::-;26459:34;26455:1;26447:6;26443:14;26436:58;26528:11;26523:2;26515:6;26511:15;26504:36;26425:122;:::o;26553:224::-;26693:34;26689:1;26681:6;26677:14;26670:58;26762:7;26757:2;26749:6;26745:15;26738:32;26659:118;:::o;26783:223::-;26923:34;26919:1;26911:6;26907:14;26900:58;26992:6;26987:2;26979:6;26975:15;26968:31;26889:117;:::o;27012:173::-;27152:25;27148:1;27140:6;27136:14;27129:49;27118:67;:::o;27191:122::-;27264:24;27282:5;27264:24;:::i;:::-;27257:5;27254:35;27244:2;;27303:1;27300;27293:12;27244:2;27234:79;:::o;27319:116::-;27389:21;27404:5;27389:21;:::i;:::-;27382:5;27379:32;27369:2;;27425:1;27422;27415:12;27369:2;27359:76;:::o;27441:122::-;27514:24;27532:5;27514:24;:::i;:::-;27507:5;27504:35;27494:2;;27553:1;27550;27543:12;27494:2;27484:79;:::o

Swarm Source

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